我想知道python OpenCV或scikit-image库中Matlab的filter2(filter, image, 'valid')
函数的等价物。我主要关注valid
参数,该参数允许计算滤波器和图像的卷积而不对图像进行零填充。我知道similar question已在此论坛上发布,但相当于filter2
函数与valid
参数的描述尚未正确描述。
答案 0 :(得分:3)
filter2
的{{3}}表示filter2(H, X, shape)
相当于conv2(X,rot90(H,2),shape)
;
documentation到conv2
是signal.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]]