2012-09-08 70 views
1

我正在玩hybrid images,並希望使用高斯濾波器來低通濾波圖像。然而,爲了製作混合圖像,假設在與不同截止頻率組合的2幅圖像上使用2個濾波器。具有指定截止頻率的低通高斯濾波器

fspecial()當我們用它來製作高斯濾波器時,允許我們指定截止頻率嗎? (我知道我們可以指定濾波器大小和西格瑪,並且西格瑪和截止頻率之間有一些關係)。如果我們只能使用西格瑪指定截止頻率,那麼我需要設置什麼西格瑪來獲得0.2 Hz的截止頻率。

+0

我對此沒有太多經驗,但我希望你在正確的軌道上使用西格瑪來指定一個截止點頻率。請記住,截止頻率對應於輸入信號衰減一定量的點,因此您必須先確定截止頻率對應的截止頻率(通常爲3dB),然後才能確定要解算的點。 – Salain

+3

fspecial創建一個預定義的2D矩陣過濾器,根據您的理解,您要過濾一維信號(0.2 Hz,意味着您有時間向量或頻率向量)。那麼你是在過濾一個矢量還是一個矩陣? – bla

+1

@nate我正在過濾一個矩陣的jpg文件..我將如何爲那個指定一個頻率..? – Siddhartha

回答

5

我會先回答關於1D的問題,其他問題將隨之而來。它可能看起來微不足道,但與我同時存在一段時間。讓我們假設以下代碼:

t=linspace(0,20,2^10); %time vector in seconds 
w=0.2; %in Hz 
signal=cos(2*pi*w*t)+rand(1,length(t))-0.5; % signal in seconds 
dt=t(2)-t(1) ; 
N=length(signal); 
df=1/(N*dt); % the frequency resolution (df=1/max_T) 
if mod(N,2)==0 
    f_vec= df*((1:N)-1-N/2); % for EVEN length vectors 
else 
    f_vec= df*((1:N)-0.5-N/2); 
end 

所以,我們創建了一個特定頻率的噪聲信號。 f_vec是從f = [ - f_max,-f_max + df,...,0,...,f_max]延伸的頻率矢量,其中f_max = 1 /(2 * dt)。如果我們現在設計出一維高斯濾波器(在傅立葉空間中)如下:

f_vec0=0; 
sigma=1; 
filter=exp(-(f_vec-f_vec0).^2./(2*sigma^2)); 

然後在傅立葉doamin過濾:

f_signal=fftshift(fft(signal)); 
filt_signal=fftshift(ifft(f_signal.*filter)); 

所以,從我們應用了過濾器,標準差= 1指的截止頻率(即我決定是濾波器的最高1%(其1))大約是在3赫茲:

cutoff_freq=f_vec(find(filter>=0.01,1,'last')) 

有鑑於此到2D是微不足道的,只是要小心單元。對於圖像,有像素作爲位置單位,1 /像素作爲空間頻率。 fspecial函數生成預定義過濾器的2D矩陣。 fspecial的用法通常是這樣的:

PSF = fspecial('gaussian',hsize,sigma); 
Blurred = imfilter(Image,PSF,'symmetric','conv'); 

使用卷積就像在傅立葉域中相乘一樣。傅立葉域中的西格瑪與位置域的1 /西格瑪成比例等等...

+0

非常有幫助謝謝! – Siddhartha