2016-05-23 9 views
0

ノッチフィルタを使って画像から周期的なノイズを除去したい。私は、次の手順を実行します。イメージからノイズを除去するための適切なノッチフィルタを見つける

I = imread('...img....'); 
ft = fftshift(fft2(I)); 
[m,n] = size(ft); 
filt = ones(m,n); 
%filt(......) = 0; % my problem is here 
ft = ft .* filt; 
ifft_ = ifft2(ifftshift(ft)); 

so i don't know what exactly to set to zero to get the proper result.

答えて

1

は、この画像を見てみましょう。

Notch locations

これはあなたに似たノイズの問題を有する画像のFFTです。これらの赤い円は、そのタイプのノイズに関連する周波数領域の「スパイク」を指しています。あなたのイメージを見て、あなたがそれらを見つけることができるかどうかを見てください。

これらのスパイクは、削除したいものです。言い換えれば、フィルタはそれらの場所でゼロの値を持ち、他のすべての場所では値1を持つ必要があります。次に、次の行に掛け合わせると、その情報を削除し、関連するノイズを大幅に削減します。

2

ノッチフィルタの主なアイデアは、ノイズの原因となるFFTイメージ内の少量の周波数をゼロにすることです。

それらを見つけるために、あなたはFFTの大きさを見ることができます。

F = abs(ft2); 
F = log(F+1); 
imshow(F,[]) 

周波数画像におけるピークは、以下の点に位置していることを確認することが可能である:

pnts2del ={[88,155],[101,92],[138,71],[125,134]}; 

enter image description here

あなたはこれらの点の周囲のそれぞれをゼロ場合は、クリーンイメージを取得します:

G = 60; 
for ii=1:length(pnts2del) 
    pnt = pnts2del{ii}; 
    filt(pnt(1),pnt(2)-G:pnt(2)+G) = 0; 
    filt(pnt(1)-G:pnt(1)+G,pnt(2)) = 0; 
    filt(pnt(1)-1:pnt(1)+1,pnt(2)-1:pnt(2)+1) = 0; 
end 

結果(前と後、および更新されたFFT):あなたの答えのための

enter image description here enter image description here

+0

TNX。どのようにGを決定するのですか?あなたの答えは –

+0

tnxです。どのようにGを決定するのですか?試してみて –

+0

:) – drorco

関連する問題