Esercitazione 3 – Filtri inversi e deconvoluzione
dimensione, livello di grigio medio
istogramma, immagini con le tre
componenti principali
calcolare il numero di pixel bianchi e
neri all’interno dell’ultima immagine
Applicare all’immagine i vari metodi di
aumento del contrasto basati su elaborazione
dell’istogramma. Visualizzarne gli
istogrammi.
• Suddividere l’immagine in 4 quadranti.
• Applicare le varie tecniche di aumento del
contrasto alle 4 porzioni separatamente.
• Ricostruire l’immagine.
• Cosa accade nelle varie tecniche?
originale
imadjust
histeq
adapthisteq
a=imread('cameraman.tif');
a=im2double(a);
a1=a(1:size(a)/2,1:size(a)/2);
q1=imadjust(a1);
w1=histeq(a1);
e1=adapthisteq(a1);
a2=a(1:size(a)/2,size(a)/2+1:size(a));
q2=imadjust(a2);
w2=histeq(a2);
e2=adapthisteq(a2);
a3=a(size(a)/2+1:size(a),1:size(a)/2);
q3=imadjust(a3);
w3=histeq(a3);
e3=adapthisteq(a3);
a4=a(size(a)/2+1:size(a),size(a)/2+1:size(a));
q4=imadjust(a4);
w4=histeq(a4);
e4=adapthisteq(a4);
aq=[q1 q2;q3 q4];
aw=[w1 w2;w3 w4];
ae=[e1 e2;e3 e4];
figure(); subplot(2,2,1);imshow(a);title('originale');
subplot(2,2,2); imshow(aq);title('imadjust');
subplot(2,2,3); imshow(aw);title('histeq');
subplot(2,2,4); imshow(ae);title('adapthisteq');
H1=fspecial('motion', LENGTH, THETA);
Bcir=imfilter(I,H1,'circular');
LENGTH=31;
THETA=11;
DWB=deconvwnr(Bcir,H1);
E=edgetaper(a,fspecial(‘gaussian’,40,10))
Brep=imfilter(I,H1,'replicate');
DWBrep=deconvwnr(Brep,H1);
Bedge=edgetaper(Brep,fspecial('gaussian',60,10));
DWBedge=deconvwnr(Bedge,H1);
h=fspecial('motion',LENGTH+5,THETA);
DWB2=deconvwnr(Bcir,h);
DWB3=deconvwnr(Bedge,h);
noisestd=0.08;
noise = noisestd*randn(size(I));
blurredNoisy = Bcir+noise;
DWBN = deconvwnr(blurredNoisy, H1);
NSR = sum(noise(:).^2)/sum(I(:).^2);
DWBN2 = deconvwnr(blurredNoisy, H1, NSR);
NP = abs(fftn(noise)).^2;
NPOW = sum(NP(:))/prod(size(noise)); % noise power
NCORR = fftshift(real(ifftn(NP))); % noise ACF, centered
IP = abs(fftn(im2double(I))).^2;
IPOW = sum(IP(:))/prod(size(I)); % original image power
ICORR = fftshift(real(ifftn(IP))); % image ACF, centered
wnr7 = deconvwnr(blurredNoisy, H1, NCORR, ICORR);
reg=deconvreg(blurredNoisy,H1);
NPOWER = noisestd^2.*prod(size(I));
reg2=deconvreg(blurredNoisy,H1,NPOWER);




deconvwnr
edgetaper
fftn, fftshift, ifftn
deconvreg
 Elaborare
la propria immagine con i 4
metodi di aumento del contrasto: imadjust,
histeq, adapthisteq e unsharp masking. Per
l’unsharp masking provare l’effetto della
modifica del parametro alpha [0.1 0.5 0.9].
Nell’applicazione del filtro utilizzare le 4
tecniche di convoluzione (circular, replicate,
ecc…) e scegliere quella che meglio si
adatta alla propria immagine (verrà poi
utilizzato nell’applicazione dei filtri nei
prossimi esercizi)
 Aggiungere
all’immagine originale rumore
sale e pepe con d=[0.01,0.03,… 0.09] e
rimuoverlo con filtri di media e mediano
modificandone opportunamente i parametri
 Aggiungere
all’immagine originale rumore
gaussiano a media nulla con varianze [0.01
0.02 0.03 0.04] e rimuoverlo con filtri
gaussiano, media e mediano settando i
parametri opportunamente.
 Applicare
all’immagine originale un filtro di
motion con LENGTH=15 e THETA=5.
Ridurre il blur con la deconvoluzione di
Wiener.
 Applicare all’immagine originale un filtro
gaussiano di dimensione 7x7 e sigma=10.
Ridurre il blur con la deconvoluzione di
Wiener.
 Aggiungere all’immagine con motion
rumore gaussiano con deviazione standard
0.05 e rimuovere blur e rumore con metodo
di Wiener e metodo “regularized”.
Scarica

Matlab - SIMPlify.it