2016-05-25 20 views
1

Ich habe ein Bild, das Mehrfrequenzrauschen hat, habe ich den Code in diesem Link: Find proper notch filter to remove pattern from image Quelle Bild: orig_image Aber mein letztes Bildrauschen nicht entfernt worden ist. Wie Sie wissen, muss ich den Gradienten in vertikaler Richtung entfernen. die frequenz darstellung des bildes kommen in: fft of image Haben jemand eine idee für die entfernung dieses lärms in matlab? Ich verwende Sobel Filter und Median Filter, aber nicht verbessert. Beachten Sie, dass mein Ziel das Entfernen von Linien innerhalb des Objekts ist. Grüße.Wie Multifrequenz-Rauschen aus Bild mit Filter in Matlab entfernen?

Antwort

1

Sie haben zwei Arten von Lärm: unregelmäßige horizontale Linien und Salz und Pfeffer. Das Entfernen der Linien ist einfach, solange das Objekt nicht den gesamten horizontalen Bereich abdeckt (was in unserem Beispiel nicht der Fall ist).

Ich nehme nur einen kleinen vertikalen Streifen auf der linken Seite, um nur die Streifen zu erhalten und subtrahiere sie dann vom ganzen Bild. Das Entfernen des Salz- und Pfeffergeräusches ist mit einem Medianfilter einfach.

Ergebnis: enter image description here

Code:

% read the image 
img = imread('http://i.stack.imgur.com/zBEFP.png'); 
img = double(img(:, :, 1)); % PNG is uint8 RGB 

% take mean of columsn 100..200 and subtract from all columns 
lines = mean(img(:, 100:200), 2); 
img = img - repmat(lines, 1, size(img, 2)); 

% remove salt and pepper noise 
img =medfilt2(img, [3,3], 'symmetric'); 

% display and save 
imagesc(img); axis image; colormap(gray); 
imwrite((img - min(img(:)))/(max(img(:)) - min(img(:))), 'car.png'); 
+0

danke a'lot. Wenn der Standort des Autos variiert, ändert sich das Ergebnis .... –

0

Hier ist Code, den ich einmal für eine Aufgabe verwendet habe, die ich einmal machen musste. Es war ein viel einfacheres Beispiel als das, das Sie haben. Es gab nur insgesamt 4 Komponenten im Frequenzbereich, die Rauschen verursachten, also löste ich einfach mein Problem, indem ich diese 4 Komponenten manuell auf Null einstellte (hfreq). Ich weiß nicht, wie gut das in Ihrem Fall funktioniert, vielleicht ist es hilfreich, einen Algorithmus zu schreiben, um die passenden Hfreqs zu finden, die auffallen. war hier das Originalbild I verwendet:

Dies ist der Code, den ich verwendet:

% filtering out the noisy image 

clc 
clear all 
close all 

image = imread('freqnoisy.png'); 

image = double(image); 
image = image/(max(max(image))); 

imshow(image) % show original image 

Fimage = fft2(image); 

figure 
imshow(((fftshift(abs(Fimage)))),[0 5000]) %shows all frequency peaks that stick out 


hfreq = ones(256); 

hfreq(193,193)=0; 
hfreq(65,65) = 0; 


hfreq(119,105) = 0; 
hfreq(139,153)= 0; 



% 
Fimage_filtered = fftshift(Fimage).*hfreq; 



figure 
imshow(abs(Fimage_filtered),[0 5000]) % show freq domain without undesired freq 

filtered_im = ifft2(ifftshift(Fimage_filtered)); 
figure 
imshow(filtered_im) 

das ist, was die Ausgabe aussehen wird:

enter image description here

+0

Tnx, in Ihrem Fall ist das Rauschen periodische Hexe Mittel, die eine spezielle Frequenz haben, aber meine Frequenz breites Spektrum, und ich weiß nicht, lösche die eine. –