您是否碰巧使用Python编写的一维非最大抑制算法。我需要它使用scipy在Python中制作一个Canny边缘检测器,它将一维强度矢量作为输入。
我在网上浏览过,有很多信息描述了Canny边缘检测器的行为以及一些用Java编写的例子,但它们都描述了2D中的边缘检测。
然而,scipy确实支持Canny边缘检测所需的其他算法,即1D的高斯滤波和微分。
提前致谢。
答案 0 :(得分:2)
你的意思是最大过滤器吗?如果是这样,请查看scipy.ndimage.maximum_filter1d
作为一个简单的例子:
import numpy as np
import scipy.ndimage as ndimage
input = np.sin(np.linspace(0, 4*np.pi, 20))
input = (input * 10).astype(np.int) # Makes it easier to read
output = ndimage.maximum_filter1d(input, 4)
print 'In: ', input
print 'Out:', output
这会产生:
In: [ 0 6 9 9 4 -1 -7 -9 -8 -3 3 8 9 7 1 -4 -9 -9 -6 0]
Out: [ 6 9 9 9 9 9 4 -1 -3 3 8 9 9 9 9 7 1 -4 0 0]