OpencV_Python图像滤波函数小结

时间:2022-05-04 00:34:56

图像滤波函数

cv2.bilateralFilter(InputArray src,OutputArray dst, int d,double sigmaColor,double sigmaSpace,int borderType = BORDER_DEFAULT)
将双边滤波器应用于图像,该函数适用双边滤波对输入的图像,可以减少不必要的噪音,同时保持较锋利的边缘。然而,与其他滤波器相比它的速度很慢。
http://www.dai.ed.ac.uk/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html 
sigma的值:简而言之你可以设置2个sigma值相等,如果他们取值很小(<10),那么滤波的作用是很有限的,如果它们的值很
大(>150),那么它们会有很给力的效果,让图片看上去很“卡通”
Filter size:较大的滤波器是很慢的,因此建议使用d=5作为实际应用,当然你也许会在噪声严重的滤波中使用9x9滤波
d:
过滤过程中
每个像素的邻域的直径
sigmacolor:颜色空间中的标准方差,参数值较大时意味着在像素点领域内的更多的颜色会被混合在一起,结果导致较大区域内的颜色半等
sigmaspace:坐标空间的标准方差,
参数的较大值意味着更远的像素将与相互影响,只要它们的颜色足够相近。
borderType:详见图像扩边cv2.copyMakeBorder()
cv2.blur(InputArray- src,OutputArray- dst,size- ksize,point- anchor=Point(-1,-1),int borderType = BORDER_DEFAULT)

模糊图像使用归一化的框过滤器。内核为︰K=1ksize.width*ksize.height111111111111111

blur(src, dst, ksize, anchor, borderType)与 
boxFilter(src, dst, src.type(), anchor, true, borderType).的调用相等
ksize:滤波内核的大小
anchor:默认值(-1,-1)即像素点在内核*
 
cv2.boxFilter(InputArray src,OutputArray dst,int ddepth,size ksize ,point anchor=Point(-1,-1),bool norimalize = true,int borderType = BORDER_DEFAULT)
其内核为

K=α111111111111111

α={1ksize.width*ksize.height1when \texttt{normalize=true}otherwise