Tip:
Highlight text to annotate it
X
Salve a tutti! Questa è la nona puntata del videocorso su Matlab per l'elaborazione delle immagini digitali.
Nella descrizione del video, su Youtube, trovate il link alla pagina del Videocorso su effe12.com.
In questo articolo mostrerò come creare, in Matlab, un'immagine 'sintetica', partendo da una matrice,
con figure geometriche posizionate casualmente all'interno della stessa, per poi salvare il tutto su disco.
Le figure geometriche verranno create con delle matrici (per creare il triangolo, verrà creato un quadrato
e, dopo, sarà necessario utilizzare due cicli for annidati per mettere a 0 la parte 'complementare'
a quella del triangolo vero e proprio).
Le coordinate dei vertici-origine delle figure (i vertici 'in alto a sinistra') verranno generate con la funzione rand,
mantenendo comunque i valori all'interno dell'area di lavoro (che poi equivale alla dimensione,
in pixel, dell'immagine finale, per intenderci).
Lo script mostra a video l'immagine e la salva su disco, con nome file 'output.jpg'; attenzione:
se nella cartella di lavoro è presente un file 'output.jpg', questo script lo sovrascriverà
senza avvisarvi (né prima né dopo)!!!
Questo articolo sta alla base di quello dedicato alla creazione e al salvataggio su disco di
FILMATI 'sintetici' (creati interamente in Matlab, mediante matrici, senza dati in input),
che vedremo in un'altra puntata; in quel caso, comunque, non avremo a che fare con immagini ma con FRAMES.
Per alcuni comandi di manipolazione delle immagini in forma di matrici (size, cicli for, …)
e creazione e utilizzo delle trasformate di Fourier, si rimanda alle puntate precedenti.
Ecco lo script: % Impostazioni iniziali: dimensioni (M per l'altezza, N per la larghezza) in pixel
dell'area di lavoro-immagine di output e 'disegno' delle figure geometriche (un rettangolo e un triangolo) clear;
M = 160; N = 160;
areaLavoro = zeros(M,N,3); % Figure a 3 dimensioni (RGB)
rettangolo = ones(15,10,3); triangolo = ones(10,10,3);
for i=1:10 for j = (i+1):10
triangolo(i,j,:)=0;
end; end;
% Genero le coordinate iniziali dei vertici in alto a sinistra delle figure per posizionarle nell'area di lavoro posInizialeTriangoloX = floor(rand(1) * M);
posInizialeTriangoloY = floor(rand(1) * N); posInizialeRettangoloX = floor(rand(1) * M);
posInizialeRettangoloY = floor(rand(1) * N); % Disegno il triangolo e il rettangolo nell'area di lavoro
for i=1:10 for j= 1:10
areaLavoro(posInizialeTriangoloX + i, posInizialeTriangoloY + j) = triangolo(i,j);
% Posiziono il triangolo nell'area di lavoro
end; end;
for i=1:15 for j= 1:10
areaLavoro(posInizialeRettangoloX + i, posInizialeRettangoloY + j) = rettangolo(i,j);
% Posiziono il rettangolo nell'area di lavoro
end; end;
% Mostro a video l'immagine e la salvo su disco, nome file: 'output.jpg'
imshow(areaLavoro); imwrite(areaLavoro, 'output.jpg', 'jpg');
Bene, per questa puntata è tutto; alla prossima!