2014-06-15 87 views
1

已經有一些關於conv2(A,B,'same')函數的答案(例如:2D Convolution in Python similar to Matlab's conv2),但我無法找到關於conv2(h1,h2,A,'same')的任何內容。是否有一個相當於MATLAB的conv2的python(h1,h2,A,'same')?

引述MATLAB文檔:

C = CONV2(H1,H2,A)第一卷積A和沿着行向量h1和然後與沿着列矢量H2。 C的大小確定如下:如果n1 =長度(h1)和n2 =長度(h2),則mc = max([ma + n1-1,ma,n1])和nc = max([na + n2 -1,NA,N2])。

有沒有辦法使用python(或numpy,scipy等)來實現這種行爲?

語境

我儘量做到以下幾點:

h1 = [ 0.05399097 0.24197072 0.39894228 0.24197072 0.05399097] 
h2 = [ 0.10798193 0.24197072 -0.   -0.24197072 -0.10798193] 
A = img[:,:,1] 
C = conv2(h1, h2, A, 'same') 

凡IMG是一個RGB圖像。

+0

你檢查下面的答案嗎? –

+0

是的。它說像「img太深」的東西。我還沒有時間研究這個問題,所以我現在不想問了;) – jschlichtholz

回答

2

你可能想是這樣的:

def conv_h1(a): 
    return np.convolve(a, h1, mode='same') 
def conv_h2(a): 
    return np.convolve(a, h2, mode='same') 

img[:,:,1] = np.apply_along_axis(conv_h1, axis=0, img[:,:,1]) 
img[:,:,1] = np.apply_along_axis(conv_h2, axis=1, img[:,:,1]) 
相關問題