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”.