2014-03-03 332 views
4

我知道MATLAB的conv2corr2的等效函數是scipy.signal.correlatescipy.signal.convolve。但函數imfilter具有處理數組邊界外的屬性。如symmetric,replicatecircular。 Python可以做的事情Matlab imfilter在Python中的等價函數

回答

1

使用功能scipy.ndimage.filters.correlatescipy.ndimage.filters.convolve

+0

您可以詳細說明嗎?我試圖複製'profil2 = imfilter(profil,h,'replicate');'完全。 – Sam

2

只是爲了增加一些可靠的代碼,我想imfilter(A, B)等價的Python爲簡單的2-d的圖像和過濾器(內核)。我發現,以下給出了相同的結果MATLAB:

import scipy.ndimage 
import numpy as np 
scipy.ndimage.correlate(A, B, mode='constant').transpose() 

對於給定的問題,這將工作:

scipy.ndimage.correlate(A, B, mode='replicate').transpose() 

注意,由於某種原因,MATLAB收益轉預期的答案。

有關更多選項,請參閱文檔here

編輯1:

有通過MATLAB給出記錄here更多的選擇。特別是,如果我們希望使用'conv'選項,我們有MATLAB代碼(例如):

imfilter(x, f, 'replicate', 'conv') 

這與蟒蛇等價:

​​

注意在MATLAB中'replicate'是一樣'nearest'在python中的SciPy。