有没有办法在OpenCV中实现1D信号的卷积?
正如我所看到的只有filter2D,但我正在寻找像Matlab的convn这样的东西。
对于一维卷积,你可能想看看np.convolve。
请看这里:https://docs.scipy.org/doc/numpy/reference/generated/numpy.convolve.html
需要一维卷积的Python OpenCV程序可以很容易地使用它。您总是可以将1D向量视为2D mat,因此只需调用opencv build-it函数即可解决问题。
下面是我用来平滑直方图的代码片段。
# Inputs:
# gray = a gray scale image
# smoothing_nbins = int, the width of 1D filter
# Outputs:
# hist_sm = the smoothed image histogram
hist = cv2.calcHist([gray],[0],None,[256],[0,256])
hist_sm = cv2.blur(hist, (1, smoothing_nbins))
可以看到,这里唯一需要的技巧是将一个过滤器维度设置为1。
据我所知,如果您使用convolve2D仅与1D矩阵,它仍然有效。但根据你的具体工作,它可能不是。