2011-08-09 45 views
5

矢量高斯濾波我有一個n維向量(1XN數據集,並且它不是圖像數據),並且我想將高斯濾波器應用到它。我有圖像處理工具包和其他一些(詢問您是否需要列表)。上在Matlab

大概我可以使fspecial函數的hsize參數類似[1 n]。 我還可以使用imfilter將它應用到我作爲下一步載體,或者我應該用別的東西?

我已經看到了如何在Matlab高斯濾波器應用到二維圖像數據相當的幾個例子,但我還是比較新的MATLAB的一個平臺,這樣的例子是真的很好。

注意:我目前還不能嘗試它,看看會發生什麼(當前沒有安裝Matlab的機器上),否則我會首先嚐試它,並且只會詢問是否遇到使用fspecialimfilter

回答

15

爲什麼不創建高斯濾波器自己呢?你可以看一下在fspecial公式(或高斯的任何其他定義):

sigma = 5; 
sz = 30; % length of gaussFilter vector 
x = linspace(-sz/2, sz/2, sz); 
gaussFilter = exp(-x .^ 2/(2 * sigma^2)); 
gaussFilter = gaussFilter/sum (gaussFilter); % normalize 

,並以應用它,你可以使用filter

y = rand(500,1); 
yfilt = filter (gaussFilter,1, y); 

,不要忘了過濾器具有延遲,這意味着與輸入信號相比,濾波後的信號發生偏移。由於該過濾器是對稱的,您可以通過使用conv代替filter得到了非移位輸出,並使用same選項:

yfilt = conv (y, gaussFilter, 'same'); 
+2

好了,我真的不認爲有必要寫我自己的函數,如果其他現有的功能也可以完成這項工作,但是,自己創建過濾器確實可以解決問題。謝謝。順便說一句,我相信通常尺寸是西格瑪值的6倍(正負3倍)嗎? –

+1

這真的取決於應用程序 - 但通常你想高斯尾巴消失,使截斷過濾器不具有顯著的影響(因爲尾巴去0在+負無窮大,則必須截斷有一個有限長度過濾)。所以是的,每邊都會有4個或更多的sigma來保證它。 –

+2

當然,有必要編寫自己的函數,尤其是當它是昂貴的工具箱的一部分時!如果您的公司或大學的Matlab Image Toolbox許可數量有限,該怎麼辦?它發生了! – Wok