今天看一篇论文中用到双边滤波,之前没有看到过,所以学习一下。双边滤波在计算像素值的同时会考虑距离和色差信息,从而可在消除噪声得同时保护边缘信息。在执行双边滤波时,如果像素点与当前点色差较小,则赋予其较大的权重值,否则赋予其较小的权重值。
我们知道图像平滑处理有边缘和细节模糊的负面效应,作为图像平滑处理的一种方式,双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折中处理,同时考虑空域信息和灰度相似性。
实现:dst=cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace[,borderType])
参数说明:d表示以当前点为中心的邻域的直径,一般为5;
sigmaColor为双边滤波选择的色差范围
sigmaSpace为空间坐标中的sigma值,值越大表示越多的像素点参与滤波计算,当d>0时,忽略sigmaSpace,由d决定邻域大小;否则d由sigmaSpace计算得出,与sigmaSpace成比例。
示例:
import cv2 img = cv2.imread(图片文件路径, cv2.IMREAD_REDUCED_COLOR_2) cv2.imshow('img', img) img1 = cv2.bilateralFilter(img, 15, 100, 100) cv2.imshow('imgBlur', img1) cv2.waitKey(0)