在Python中等效的Matlab filter2(filter,image,' valid')

时间:2017-04-07 05:24:01

标签: python matlab opencv image-processing scikit-image

我想知道python OpenCV或scikit-image库中Matlab的filter2(filter, image, 'valid')函数的等价物。我主要关注valid参数,该参数允许计算滤波器和图像的卷积而不对图像进行零填充。我知道similar question已在此论坛上发布,但相当于filter2函数与valid参数的描述尚未正确描述。

2 个答案:

答案 0 :(得分:3)

filter2的{​​{3}}表示filter2(H, X, shape)相当于conv2(X,rot90(H,2),shape);

documentationconv2signal.convolve2d。所以你正在寻找的等价物是:

signal.convolve2d(X, np.rot90(H), mode='valid')

答案 1 :(得分:2)

在matlab中

a=[[1, 2, 0, 0];[5, 3, 0, 4];[0, 0, 0, 7]; [9, 3, 0, 0]];
k=[[1,1,1];[1,1,0];[1,0,0]];
a_k=filter2(k, a, 'valid')
ak=conv2(a,rot90(k,2), 'valid')
  
    

a_k =

  
11     5
17    10
  
    

ak =

  
11     5
17    10

在python中

a = np.array([[1, 2, 0, 0],[5, 3, 0, 4],[0, 0, 0, 7], [9, 3, 0, 0]])
k = np.array([[1,1,1],[1,1,0],[1,0,0]])
from scipy import signal
print(signal.convolve2d(a, np.rot90(k,2), mode='valid'))
  
    

[[11 5]      [17 10]]