双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空间与信息和灰度相似性,达到保边去噪的目的,具有简单、非迭代、局部处理的特点。之所以能够达到保边去噪的滤波效果是因为滤波器由两个函数构成:一个函数是由几何空间距离决定滤波器系数,另一个是由像素差值决定滤波器系数.
1 Python: cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace[, dst[, borderType]]) → dst
参数解释:
-
src:输入图像
-
d:过滤时周围每个像素领域的直径
-
sigmaColor:在color space中过滤sigma。参数越大,临近像素将会在越远的地方mix。
-
sigmaSpace:在coordinate space中过滤sigma。参数越大,那些颜色足够相近的的颜色的影响越大。
使用方法:
1 import cv2 as cv 2 import numpy as np 3 cv.namedWindow("image") 4 cv.createTrackbar("d","image",0,255,nothing) 5 cv.createTrackbar("sigmaColor","image",0,255,nothing) 6 cv.ctrateTrackbar("sigmaSpace","image",0,255,nothing) 7 img = cv.imread("test.jpg",0) 8 while(1): 9 d = cv.getTrackbarPos("d","image") 10 sigmaColor = cv.getTrackbarPos("sigmaColor","image") 11 sigmaSpace = cv.getTrackbarPos("sigmaSpace","image") 12 out_img = cv.bilateralFilter(img,d,sigmaColor,sigmaSpace) 13 cv.imshow("out",out_img) 14 k = cv.waitKey(1) & 0xFF 15 if k ==27: 16 break 17 cv.destroyAllWindows()
来源:https://www.cnblogs.com/aoru45/p/9763999.html