Академический Документы
Профессиональный Документы
Культура Документы
M. Scarpiniti
1 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
Il Video
Funzioni Base
M. Scarpiniti
2 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
Introduzione
Introduzione
M. Scarpiniti
3 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
Introduzione
M. Scarpiniti
4 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
Tipi di Immagine
Esistono diverse modalit`a per memorizzare un file rappresentante unimmagine.
Le principali sono le seguenti tre:
1 Scala di grigi;
2 Truecolor;
3 Indicizzata.
Nella modalit`a a scala di grigi ogni pixel dellimmagine contiene un livello
di grigio, compreso tra 0 e 1.
M. Scarpiniti
5 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
Tipi di Immagine
M. Scarpiniti
6 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
Tipi di Immagine
Infine, nella modalit`a indicizzata ogni pixel rappresenta la riga di una mappa
di colore, costituita da tre elementi, cio`e i livelli di rosso, verde, blu (RGB),
compresi tra 0 e 1.
M. Scarpiniti
7 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
I = imread(filename, fmt);
[I,map] = imread(...);
[I,map] = imread(filename);
[I,map] = imread(URL,...);
8 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
9 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
10 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
11 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
12 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
M. Scarpiniti
13 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
14 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
imshow(I);
imshow(I,[low high]);
imshow(I,map);
imshow(filename);
handle = imshow(...);
15 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
M. Scarpiniti
16 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
M. Scarpiniti
17 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
M. Scarpiniti
18 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
load mandrill
figure(color,k)
image(X)
colormap(map)
axis off
axis image
M. Scarpiniti
19 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
imagesc(A);
imagesc(x,y,A);
imagesc(...,clims);
handle = imagesc(...);
20 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
load clown
clims = [10 60];
subplot(1,2,1); imagesc(X);
colormap(gray);
subplot(1,2,2); imagesc(X,clims);
colormap(gray);
M. Scarpiniti
21 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
M. Scarpiniti
22 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
M. Scarpiniti
23 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
load flujet
image(X), colormap(jet)
image(X), colormap(summer)
load spine
image(X), colormap(bone)
M. Scarpiniti
24 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
25 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
M. Scarpiniti
26 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
Modificare la luminosit`a
La luminosit`a di una immagine pu`
o essere modificata tramite il comando:
>>
>>
>>
>>
brighten(beta);
brighten(h,beta);
newmap = brighten(beta);
newmap = brighten(cmap,beta);
27 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
Modificare la luminosit`a
Riportiamo un esempio di modifica della luminosit`a:
>> load clown
>> imshow(X,map);
>> for i=1:10,
brighten(0.5);
pause;
end
>> for i=1:10,
brighten(-0.5);
pause;
end
M. Scarpiniti
28 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
Modificare il contrasto
M. Scarpiniti
29 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
Modificare il contrasto
Riportiamo un esempio di modifica del contrasto:
>>
>>
>>
>>
load clown;
cmap = contrast(X);
imshow(X,gray);
colormap(cmap);
M. Scarpiniti
30 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
Modificare lintensit`a
E possibile modificare lintensit`
a di una immagine in scala di grigi o a colori, utilizzando
i comandi
>>
>>
>>
>>
J = imadjust(I);
J = imadjust(I,[low_in; high_in],[low_out; high_out]);
J = imadjust(I,[low_in; high_in],[low_out; high_out],gamma);
newmap = imadjust(map,[low_in; high_in],[low_out; high_out],gamma);
Il comando imadjust crea una nuova immagine J tale che l1% dei dati `e saturato alle
basse ed alte intensit`
a: il risultato `e un aumento del contrasto dellimmagine. E anche
possibile specificare che un intervallo di valori dellimmagine di partenza [lowin highin ]
venga mappato in un nuovo intervallo dellimmagine J [lowout highout ]. Per le immagini
a colori, lowin e highin sono vettori di tre elementi. Il parametro gamma descrive la curva
di saturazione: se 0 < < 1 la saturazione `e spinta verso valori pi`
u elevati (risultato pi`
u
luminoso), altrimenti, se > 1, la saturazione `e spinta verso valori pi`
u bassi (risultato
pi`
u scuro). Di default `e = 1. Se alla funzione passo una mappa di colore, essa mi
restituisce la nuova mappa di colore, dopo lenhancement.
M. Scarpiniti
31 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
Modificare lintensit`a
Riportiamo un esempio.
>>
>>
>>
>>
I = imread(pout.tif);
J = imadjust(I);
subplot(1,2,1), imshow(I);
subplot(1,2,2), imshow(J);
M. Scarpiniti
32 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
Modificare lintensit`a
Riportiamo un secondo esempio.
>>
>>
>>
>>
I = imread(football.jpg);
J = imadjust(I,[0.2 0.3 0; 0.6 0.7 1],[]);
subplot(1,2,1), imshow(I);
subplot(1,2,2), imshow(J);
M. Scarpiniti
33 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
34 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
I = imread(coins.png);
level = graythresh(I);
BW = im2bw(I,level);
subplot(1,2,1), imshow(I);
subplot(1,2,2), imshow(BW);
M. Scarpiniti
35 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
I = imread(cameraman.tif);
BW = dither(I);
subplot(1,2,1), imshow(I);
subplot(1,2,2), imshow(BW);
M. Scarpiniti
36 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
load trees
J = ind2gray(X,map);
subplot(1,2,1), imshow(X,map);
subplot(1,2,2), imshow(J);
M. Scarpiniti
37 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
K
K
K
K
K
K
K
=
=
=
=
=
=
=
imadd(I,J);
imsubtract(I,J);
imabsdiff(I,J);
immultiply(I,J);
imdivide(I,J);
imlinconb(c1,I1,c2,I2,...,cn,In);
imcomplement(I);
38 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
I = imread(rice.png);
J = imread(cameraman.tif);
K = imadd(I,J,uint16);
imshow(K,[]);
>>
>>
>>
>>
bw = imread(text.png);
bw2 = imcomplement(bw);
subplot(1,2,1),imshow(bw)
subplot(1,2,2),imshow(bw2)
M. Scarpiniti
39 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
M. Scarpiniti
40 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
M. Scarpiniti
41 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
M. Scarpiniti
42 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
Ridimensionare unimmagine
E possibile ridimensionare unimmagine attraverso i comandi:
>>
>>
>>
>>
B = imresize(A,scale);
B = imresize(A,[mrows ncols]);
[Y newmap] = imresize(X,map,scale);
[...] = imresize(..., method);
La prima riga restituisce unimmagine B che `e scale volte limmagine A, mentre la seconda
riga restituisce limmagine A rapportata a mrows righe e ncols colonne. La terza riga viene
utilizzata se utilizzo immagini indicizzate (mappe di colore). Literpolazione utilizzata nel
ridimensionamento, pu`
o essere effettuata con diversi metodi, specificata dal parametro
method:
nearest;
bilinear;
bicubic;
box;
triangle;
cubic;
lanczos2;
lanczos3.
M. Scarpiniti
Laboratorio per lElaborazione MultiMediale Lezione 6 - Elaborazione delle Immagini
43 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
Ruotare unimmagine
E possibile ruotare unimmagine attraverso i comandi:
>> B = imrotate(A,angle);
>> B = imrotate(A,angle,method);
>> B = imrotate(A,angle,method,bbox);
Limmagine A viene ruotata di un angolo pari ad angle in senso orario. Anche qui
literpolazione utilizzata nella rotazione, pu`
o essere effettuata con diversi metodi, specificata dal parametro method:
nearest;
bilinear;
bicubic.
Il parametro bbox specifica la dimensione dellimagine restituita B e pu`
o assumere i
due valori:
1
M. Scarpiniti
44 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
Ruotare unimmagine
Riportiamo un esempio, ruotando di 35 unimmagine:
>>
>>
>>
>>
I = imread(rice.png);
J = imrotate(I,35);
subplot(1,2,1), imshow(I);
subplot(1,2,2), imshow(J);
M. Scarpiniti
45 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
I = imcrop;
I2 = imcrop(I);
X2 = imcrop(X,map);
I = imcrop(h)
I2 = imcrop(I,rect);
X2 = imcrop(X,map,rect);
M. Scarpiniti
46 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
I Comandi di Base
Migliorare la Qualit`
a di unImmagine
M. Scarpiniti
47 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
M. Scarpiniti
48 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
Listogramma di unimmagine
Listogramma di unimmagine pu`
o essere ottenuto in Matlab con il comando
>>
>>
>>
>>
imhist(I);
imhist(I, n);
imhist(X, map);
[counts,x] = imhist(...);
M. Scarpiniti
49 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
Listogramma e il contrasto
Il contrasto di unimmagine pu`
o essere migliorato equalizzando il suo istogramma in modo tale da renderlo simile ad un istogramma di riferimento.
Se tale riferimento non `e specificato, viene preso di default un istogramma
piatto. In Matlab si utilizza il comando:
>>
>>
>>
>>
J = histeq(I, hgram);
J = histeq(I, n);
newmap = histeq(X, map, hgram);
newmap = histeq(X, map);
M. Scarpiniti
50 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
Listogramma e il contrasto
Riportiamo un esempio:
>> I = imread(tire.tif);
>> J = histeq(I);
>> subplot(1,2,1), imshow(I);
>> subplot(1,2,2), imshow(J);
figure;
>> subplot(1,2,1), imhist(I,64);
>> subplot(1,2,2), imhist(J,64);
M. Scarpiniti
51 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
B = bwboundaries(BW);
B = bwboundaries(BW,conn);
B = bwboundaries(BW,conn,options);
[B,L] = bwboundaries(...);
52 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
I = imread(coins.png);
BW = im2bw(I, graythresh(I));
[B,L] = bwboundaries(BW,noholes);
imshow(I)
hold on
for k = 1:length(B)
boundary = B{k};
plot(boundary(:,2),boundary(:,1),g,LineWidth,2);
end
M. Scarpiniti
53 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
J = edge(I);
J = edge(I,method);
J = edge(I,method,tresh);
[J,tresh] = edge(I,method);
dove I `e unimmagine in scala di grigi o binaria. Vengono ignorati i contorni che non superano la soglia tresh. La detection pu`o essere effettuata
attraverso diversi metodi, specificati dal parametro method:
metodo di Sobel (`e quello di default);
metodo di Prewitt;
metodo di Roberts;
metodo Laplaciano Gaussiano;
metodo del Zero-Cross;
metodo di Canny.
M. Scarpiniti
54 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
I = imread(coins.png);
J = edge(I);
subplot(1,2,1), imshow(I);
subplot(1,2,2), imshow(J);
M. Scarpiniti
55 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
M. Scarpiniti
56 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
I = imread(coins.png);
imshow(I);
Id = diff(I);
Ic = zeros(size(Id));
[n,m] = size(Id);
for i=1:n,
for j=1:m,
if Id(i,j) < tresh
Ic(i,j) = 255;
else
Ic(i,j) = 0;
end
end
end
>> figure;
>> imshow(Ic);
M. Scarpiniti
57 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
c
c
c
c
=
=
=
=
improfile;
improfile(n);
improfile(I,xi,yi);
improfile(I,xi,yi,n);
Cliccando con il mouse su due punti dellimmagine viene valutato in c il profilo su n punti. E anche possibile specificare il segmento dando le coordinate
nei due vettori xi e yi .
Osservando questo profilo `e possibile osservare se `e presente un contorno
allinterno del segmento scelto.
M. Scarpiniti
58 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
I = imread(coins.png);
imshow(I);
c = improfile;
plot(c);
M. Scarpiniti
59 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
M. Scarpiniti
60 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
Segmantare unimmagine
La segmentazione di unimmagine `e il processo di partizione di unimmagine
in regioni significative. La segmentazione `e di solito utilizzata per localizzare
oggetti e bordi. Pi`
u precisamente, la segmentazione `e il processo con il
quale si classificano i pixel dellimmagine che hanno caratteristiche comuni,
pertanto ciascun pixel in una regione `e simile agli altri della stessa regione per
una qualche propriet`a o caratteristica (colore, intensit`a o texture). Regioni
adiacenti sono significativamente differenti rispetto ad almeno una di queste
caratteristiche. Esistono diverse tecniche per effettuare la segmentazione di
unimmagine; le principali sono
1 Algoritmi di crescita: si parte dai singoli pixel fino a formare i
segmenti per fusione;
2 Algoritmi di divisione: si parte dallintera immagine fino a
suddividerla di segmenti;
3 Algoritmi di clustering: si suddivide limmagine in segmenti
agglomerando le parti simili.
M. Scarpiniti
61 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
Lalgoritmo K-means
i=1 xj Si
M. Scarpiniti
62 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
Lalgoritmo K-means
Lalgoritmo K-means utilizza una tecnica iterativa.
(1)
(1)
Dato un insieme iniziale di K valor medi m1 , . . . , mk chiamati centroidi e che
sono i rappresentanti dei clusters, che possono essere scelti random, lalgoritmo si
applica eseguendo due passi consecutivi:
1
Assegnamento: ogni
n
(t)
Si = xj :
63 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
M. Scarpiniti
64 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
Lalgoritmo K-means
Lalgoritmo utilizza una distanza Euclidea che pu`o non essere una
misura adequata della distanza.
M. Scarpiniti
65 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
IDX = kmeans(X,k);
[IDX,C] = kmeans(X,k);
[IDX,C,sumd] = kmeans(X,k);
[IDX,C,sumd,D] = kmeans(X,k);
[...] = kmeans(...,param1,val1,param2,val2,...);
66 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
M. Scarpiniti
67 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
Il segmentatore
Riportiamo un semplice esempio di segmentatore, utilizzando lalgoritmo K-means. Viene creata
una matrice le cui righe sono le terne: numero di riga, numero di colonna e valore del pixel.
Lalgoritmo K-means restituisce un vettore contenete la classificazione dei pixels e successivamente
viene ricostruita la matrice immagine segmentata, contenente solo i valori 0 e 255.
>>
>>
>>
>>
>>
nc = 2;
I = imread(volto.jpg); imshow(I);
J = [];
[n,m] = size(I);
for i = 1:n,
for j = 1:m,
c = I(i,j);
J = [J;i,j,c];
end
end
>> J = double(J);
>> ID = kmeans(J,nc);
>> for k = 1:nc
K = 255 .* ones(size(I));
temp = find(ID == k);
for i = 1:length(temp),
row = floor(temp(i)/m) + 1;
col = mod(temp(i),m) + 1;
K(row,col) = 0;
end
imshow(K);
end
M. Scarpiniti
68 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
69 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
I = imread(coins.png);
J = imnoise(I,salt & pepper,0.02);
subplot(1,2,1), imshow(I);
subplot(1,2,2), imshow(J);
M. Scarpiniti
70 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
M. Scarpiniti
71 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
72 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
I = imread(peppers.png);
I = I(60+[1:256],222+[1:256],:);
h = fspecial(motion,31,11);
J = imfilter(I,h,circular,conv);
subplot(1,2,1); imshow(I);
subplot(1,2,2); imshow(J);
M. Scarpiniti
73 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
M. Scarpiniti
74 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
I = imread(coins.png);
J = imnoise(I,salt & pepper,0.02);
K = medfilt2(J,[3 3]);
subplot(1,3,1), imshow(I);
subplot(1,3,2), imshow(J);
subplot(1,3,3), imshow(K);
M. Scarpiniti
75 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
Deblurring di unimmagine
Con il termine deblurring si intende il miglioramento della qualit`a di unimmagine che risulta mossa. Poich`e il blurring `e ottenuto con una convoluzione, loperazione di deblurring `e effettuata attraverso una deconvoluzione.
Ovviamente esistono varie tecniche per effettuare questa convoluzione con il
filtro h. Ad esempio con un filtro di Wiener, un filtro regolarizzato, il metodo di Lucy-Richardson, oppure in modo blind. Matlab mette a disposizione
le seguenti funzioni per le deconvoluzioni appena citate:
>>
>>
>>
>>
J = deconvwnr(I,h);
J = deconvreg(I,h);
J = deconvlucy(I,h);
[J,PSF] = deconvblind(I,h);
M. Scarpiniti
76 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
Deblurring di unimmagine
Riportiamo un esempio:
>>
>>
>>
>>
>>
>>
>>
>>
I = imread(peppers.png);
I = I(60+[1:256],222+[1:256],:);
h = fspecial(motion,31,11);
J = imfilter(I,h,circular,conv);
K = deconvwnr(J,h);
subplot(1,3,1); imshow(I);
subplot(1,3,2); imshow(J);
subplot(1,3,3); imshow(K);
M. Scarpiniti
77 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
Eliminare un difetto
Una regione di interesse o ROI `e una zona di una immagine in cui vogliamo
effettuare qualche operazione, ad esempio eliminare un diffetto. Matlab
mette a disposizione il comando:
>> J = roifill;
>> J = roifill(I);
>> J = roifill(I,c,r);
Tale funzione restituisce unimmagine J che `e la stessa di I in cui `e stata
eliminata una regione ottenuta costruendo un poligono intorno con
lutilizzo del mouse e sostituito dal background. E anche possibile
specificare il poligono nei vettori c e r.
M. Scarpiniti
78 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Introduzione
La Segmentazione
Eliminare un difetto
Riportiamo un esempio:
>>
>>
>>
>>
I = imread(coins.png);
J = roifill(I);
subplot(1,2,1); imshow(I);
subplot(1,2,2); imshow(J);
M. Scarpiniti
79 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Funzioni Base
Il Video
Il Video
M. Scarpiniti
80 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Funzioni Base
Gestire un video
Matlab consente di gestire i file video di tipo *.avi. Per aprire un file avi si
utilizza:
>> mov = aviread(filename);
>> mov = aviread(filename,index);
Restituisce il video contenuto in filename o i frame indicati in index
nella struttura mov . Per scrivere un file *.avi, si utilizza invece
>> movie2avi(mov,filename);
Le informazioni sul file, invece, possono essere ottenute tramite
>> fileinfo = aviinfo(filename);
M. Scarpiniti
81 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Funzioni Base
Gestire un video
M. Scarpiniti
82 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Funzioni Base
83 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Funzioni Base
Catturare un video
Costruiamo un video che viene catturato da un plot.
>>
>>
>>
>>
>>
Z = peaks;
surf(Z);
axis tight
set(gca,nextplot,replacechildren);
for j = 1:20
surf(sin(2*pi*j/20)*Z,Z)
F(j) = getframe;
end
>> pause;
>> movie(F)
M. Scarpiniti
84 / 85
Introduzione
Elementi di Elaborazione delle Immagini
Il Video
Funzioni Base
Bibliografia
Matlab
MATLAB 7: Getting Started Guide.
Available on-line: http://www.mathworks.com/access/helpdesk/help/pdf_doc/matlab/getstart.pdf
Matlab
Image Processing Toolbox 7: Users Guide.
Available on-line: http://www.mathworks.it/access/helpdesk/help/pdf_doc/images/images_tb.pdf
A.V. Oppenheim, R.W. Schafer.
Discrete-Time Signal Processing
2-nd Edition, Prentice Hall, 1999.
T.A. Davis.
MATLAB Primer.
8-th Edition, CRC Press, 2010.
D.M. Smith.
Engineering Computation with MATLAB.
2-nd Edition, Addison-Wesley, 2010.
A. Knight.
Basics of MATLAB and Beyond.
CRC Press, 1999.
A.D. Poularikas.
Signals and Systems Primer with MATLAB.
CRC Press, 2006.
M. Scarpiniti
85 / 85