Image 将像素排序到中值滤波器

Image 将像素排序到中值滤波器,image,opencv,image-processing,pixel,median,Image,Opencv,Image Processing,Pixel,Median,我有一个关于如何计算像素值的问题 例如,我使用3x3像素,需要排序并选择像素[4]以应用中值滤波器 那么,我该如何计算这些像素的顺序值呢 我是否对每个通道(RGB)进行排序,然后选择每个通道的中间项并将值输入像素 或者我必须对3个通道求和 我在python上在线找到了一段带有PIL的代码,但我不明白“members.sort()”函数是如何工作的 def FiltroMediana(path): img = Image.open(path) members = [(0, 0)] * 9 wid

我有一个关于如何计算像素值的问题

例如,我使用3x3像素,需要排序并选择
像素[4]
以应用中值滤波器

那么,我该如何计算这些像素的顺序值呢

我是否对每个通道(RGB)进行排序,然后选择每个通道的中间项并将值输入像素

或者我必须对3个通道求和

我在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()
没有“好”的方法将中值滤波器应用于彩色图像

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

  • 真彩色过滤是通过找到与其他颜色的总距离最小的颜色来实现的;但这很耗时


排序函数调用为命令。它只需在添加了8个条目后就可以订购该列表,以防有人真的很感兴趣。。。顺便说一句,有一个通用的过滤器模块,它为您提供了所有循环的框架,并顺便为您传递了所有周围的像素。我在这里使用它作为模式滤波器,但您只需要更改一行,使其成为中值滤波器。