Python / scipy中的1D非最大抑制

时间:2011-08-29 13:57:52

标签: python scipy edge-detection

您是否碰巧使用Python编写的一维非最大抑制算法。我需要它使用scipy在Python中制作一个Canny边缘检测器,它将一维强度矢量作为输入。

我在网上浏览过,有很多信息描述了Canny边缘检测器的行为以及一些用Java编写的例子,但它们都描述了2D中的边缘检测。

然而,scipy确实支持Canny边缘检测所需的其他算法,即1D的高斯滤波和微分。

提前致谢。

1 个答案:

答案 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]