3 回答
TA贡献1784条经验 获得超8个赞
根据medianBlur()
文档,它在BORDER_REPLICATE
内部使用来处理边界像素。
BORDER_REPLICATE
Python: cv.BORDER_REPLICATE
aaaaaa|abcdefgh|hhhhhhh
所以它重复边界像素,直到所有像素都是窗口的中间像素。
编辑:要应用大小为 5x5 的内核,第一个像素应位于图像的第三行和第三列。这意味着将边界复制两个像素。所以你的形象在内部变成了这样:
[[11, 11, 11, 4, 17, 1, 5, 5, 5],
[11, 11, 11, 4, 17, 1, 5, 5, 5],
[11, 11, 11, 4, 17, 1, 5, 5, 5],
[ 6, 6, 6, 14, 0, 12, 16, 16, 16],
[24, 24, 24, 19, 13, 18, 23, 23, 23],
[ 7, 7, 7, 11, 11, 10, 5, 5, 5],
[10, 10, 10, 13, 23, 3, 0, 0, 0],
[10, 10, 10, 13, 23, 3, 0, 0, 0],
[10, 10, 10, 13, 23, 3, 0, 0, 0]]
TA贡献2003条经验 获得超2个赞
此处,函数 cv2.medianBlur() 计算内核窗口下所有像素的中值,并将中心像素替换为该中值。这对于消除椒盐噪声非常有效。需要注意的一件有趣的事情是,在高斯和盒式滤波器中,中心元素的滤波值可能是原始图像中可能不存在的值。然而,在中值滤波中情况并非如此,因为中心元素总是被图像中的某个像素值替换。这有效地降低了噪音。内核大小必须是一个正奇数整数。
添加回答
举报