非线性滤波
非线性滤波是利用原始图像跟模版之间的一种逻辑关系得到结果,常用的非线性滤波方法有中值滤波和高斯双边滤波,分别对应cv2.medianBlur(src, ksize)方法和cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace[, dst[, borderType]])方法。
中值滤波
中值滤波就是某个ksize区域里面的中值,将每一像素点的灰度值设置为该点某邻域窗口内所有像素点灰度值的中值。中值对椒盐噪声(脉冲噪声)有很好的抑制作用。中值滤波的原理是把以当前像素为中心的小窗口内的所有像素的灰度按从小到大排序,取排序结果的中间值作为该像素的灰度值。
实现步骤
在一连串数字{1,4,6,8,9}中,数字6就是这串数字的中值。由此可以应用到图像处理中。依然在图像中去3×3的矩阵,里面有9个像素点,将9个像素进行排序,最后将这个矩阵的中心点赋值为这九个像素的中值。图中就展示了在3×3矩阵中对中心值取值的计算过程。
示例代码
OpenCV中可利用cv2.medianBlur(src, ksize)来实现中值滤波,其中参数src为输入图像,ksize为高斯核的大小。