2013-08-27 34 views
7

Sono nuovo di MatLab. Ho provato a giocare e leggere la guida ma non riesco a risolvere questa situazione.Immagine deblurring su Matlab

enter image description here

Ho rimosso il rumore utilizzando algoritmo gaussiano. Ciò ha avuto successo, ma non sono riuscito a far sì che l'immagine fosse chiara, ho provato ad usare l'algoritmo di de-oscuramento di Richardson-Lucy ma non funziona. Qualche idea su come posso risolvere questo? Thnx in anticipo.

Ecco cosa ho fatto finora.

dimensione dell'immagine = 21kb immagine dimensione = 264 x 126

img = imread('car_plate.jpg') 
subplot(331); 
imshow(img), title('Original Image') 

PSF = fspecial('gaussian',15,15); 
blur = imfilter(img,PSF,'replicate'); 
subplot(332);imshow(blur);title('Filter image'); 

motion_noise = fspecial('disk', 7); 

luc1 = deconvlucy(img,motion_noise); 
subplot(333); imshow(luc1); 
title('Disk and Lucy'); 

LEN = 9; THETA = 1; 
motion_noise2 = fspecial('motion', LEN, THETA); 


luc2 = deconvlucy(blur,motion_noise2); 
subplot(334); imshow(luc2); 
title('Motion and Lucy'); 

Quando ho provato con filtro mediano, ho ricevuto questa uscita

errore utilizzando medfilt2
previsto numero di ingresso 1, A , per essere bidimensionale.

Errore nei medfilt2> parse_inputs (linea 106)
validateattributes (a, { 'numeric', 'logico'}, { '2d', 'real'}, mfilename, 'A', 1);

Errore in medfilt2 (riga 48)
[a, mn, padopt] = parse_inputs (varargin {:});

Errore in a1q21 (riga 2)
J = medfilt2 (img);

e i miei risultati attuali sono questo.

enter image description here

+0

il rumore nell'immagine di input assomiglia più al rumore di "sale e pepe". Prova a utilizzare [filtro mediano] (http://www.mathworks.com/help/images/ref/medfilt2.html) per rimuoverlo. – Shai

+0

@shai Thnx. Ive ha provato a usare il filtro mediano. Il problema è che l'immagine non è in 2D e il mio docente mi ha detto che non devo convertire l'immagine in alcun modo. L'unica cosa che mi ha detto è che dovrei usare l'algoritmo di deblurring di Richardson-Lucy. – Harvin

+0

cosa intendi per "immagine non in 2D"? puoi filtrare in mediana ciascun canale e ri-combinarli. Prova a confrontare i risultati. – Shai

risposta

4

Si utilizza le funzioni di punto di diffusione sbagliate per il vostro algoritmo debluring (portapillole è una cattiva scelta). Per ottenere i migliori risultati, filtrare con un filtro mediano per rimuovere il rumore S & P e quindi deblur con un kernal gaussiano. Salto il deblur del movimento poiché l'immagine non sembra avere una sfocatura fortemente direzionale. Avrai bisogno di giocare con il sigma del filtro di nitidezza per ottenere i migliori risultati.

img = imread('car_plate.jpg') 
subplot(331); 
imshow(img), title('Original Image') 

blur = medfilt2(img,[3 3]); 
subplot(332);imshow(blur);title('Filter image'); 

deblurSigma = 10; %Adjust this to get the most visually pleasing results 
motion_noise = fspecial('gaussian', 15,deblurSigma); 
luc1 = deconvlucy(img,motion_noise); 
subplot(333); imshow(luc1); 
title('Disk and Lucy');