将像素排序到中值滤镜

时间:2019-02-26 12:01:21

标签: image opencv image-processing pixel median

我对如何计算像素值有疑问。

例如,我拍摄3x3像素,需要排序并选择pixel[4]以应用中值滤镜。

那我该如何计算这些像素的值呢?

我要对每个通道(R G B)排序,然后选择每个通道的中间项并将其值放入像素中吗?

还是我必须对三个通道求和?

我在python上在线找到了带有PIL的代码,但是我不理解“ members.sort()”函数的工作原理

def FiltroMediana(path):

img = Image.open(path)
members = [(0, 0)] * 9
width, height = img.size
newimg = Image.new("RGB", (width, height), "white")
for i in range(1, width - 1):
    for j in range(1, height - 1):
        members[0] = img.getpixel((i - 1, j - 1))
        members[1] = img.getpixel((i - 1, j))
        members[2] = img.getpixel((i - 1, j + 1))
        members[3] = img.getpixel((i, j - 1))
        members[4] = img.getpixel((i, j))
        members[5] = img.getpixel((i, j + 1))
        members[6] = img.getpixel((i + 1, j - 1))
        members[7] = img.getpixel((i + 1, j))
        members[8] = img.getpixel((i + 1, j + 1))
        members.sort()
        newimg.putpixel((i, j), (members[4]))

newimg.save("MedianFilterPIL.png", "PNG")
newimg.show()

1 个答案:

答案 0 :(得分:2)

没有“不错”的方法将中值滤镜应用于彩色图像。

  • 分别过滤三个平面会创建图像中没有的新颜色,

  • 通过寻找使彼此之间的总距离最小的颜色来实现真正的色彩过滤。但这很耗时。