我有一个关于如何计算像素值的问题。
例如,我采用 3x3 像素,需要排序并选择 pixel[4]
来应用中值滤波器。
如何计算要订购的这些像素的值?
我是否要对每个 channel (R G B)进行排序,然后选择每个 channel 的中间项并将值放入像素中?
或者我必须对 3 个 channel 求和?
我在网上找到了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()
最佳答案
没有“好的”方法可以将中值滤波器应用于彩色图像。
分别过滤三个平面会创建图像中没有的新颜色,
真正的色彩过滤是通过找到与其他颜色的总距离最小的颜色来实现的;但这很耗时。
关于image - 将像素排序为中值过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54885110/