在python中环中值过滤器

时间:2016-04-26 15:41:23

标签: python opencv image-processing median background-subtraction

我想实现一个环中值滤波器 - 它的作用基本上是用它周围的圆环中像素的中值替换中心像素。 我可以制作像这样的半径的圆形面具

kernel = np.zeros((2*radius+1, 2*radius+1))
y,x = np.ogrid[-radius:radius+1, -radius:radius+1]
mask = x**2 + y**2 <= radius**2
kernel[mask] = 1

然后我可以使用scipy的通用过滤器来获取值的中值

import scipy.ndimage.filters as scp_filt
circular_median = scp_filt.generic_filter(my_image, np.median, footprint=kernel)

上面的遮罩包含圆圈内的像素。圆周上的像素应该对我来说有点模棱两可(想想3 * 3,5 * 5,7 * 7内核中的圆圈)。有没有&#34;戒指&#34;功能我可以使用OTS或其他什么?

为什么这一切 - 尝试使用本文的一部分http://pages.swcp.com/~spsvs/resume/PODS_DSS2009_2009-01-15.pdf环中值滤波器,在从原始图像中减去后,会留下比例尺小于半径的物体。

另外,不确定我是否应该在RGB中执行此操作。我只看过灰度图像上的中值滤镜

1 个答案:

答案 0 :(得分:-1)

对圈https://www.daniweb.com/programming/software-development/threads/321181/python-bresenham-circle-arc-algorithm

使用Bresenham算法

Scipy泛型过滤器以及此环中值内核在实践中非常慢,至少在python