OpenCV(c++) 笔记三:简单理解几种模糊处理

本博客为自己学习时候的笔记,并不深究各API的具体原理及类似API的区别与联系,从实用角度进行整理,方便自己的回忆与复习。课程内容均来自B站。https://www.bilibili.com/video/av29600072

均值模糊

均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中心的周围8个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。[来自百度百科]
简单来说就是取一个3x3的九宫格,其中心位置的像素点的像素值由其余8个点的平均值确定。

blur(src, dst, Size(3, 3), Point(-1, -1));
//Size值为确定的方格的范围,为奇数 Point一般写为(-1,-1)表示取中心点

高斯滤波

高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。

GaussianBlur(src, dst, Size(15, 15), 11, 11);

高斯滤波的参数解释为:
待处理图片,处理后的图片,内核的大小(处理的范围,必须是正奇数),x方向的标准偏差,y方向的标准偏差
改变最后两个参数的值使其有较大的不同可以得到拉高或高速移动的效果。


中值滤波

顾名思义,在一个区域内取其中位数作为锚点的像素值。它对椒盐噪声有良好的效果。如一张图片上有零星分布却突兀的黑白点,通过中值滤波的处理,原先的黑白色必然会被中间的像素值替代,从而取得理想的效果。

medianBlur(src, dst, 3);

双边滤波

双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空间与信息和灰度相似性,达到保边去噪的目的,具有简单、非迭代、局部处理的特点。之所以能够达到保边去噪的滤波效果是因为滤波器由两个函数构成:一个函数是由几何空间距离决定滤波器系数,另一个是由像素差值决定滤波器系数。

简单理解就是:对于空间上的点,双边滤波进行了类似高斯滤波的平滑处理,通过加权计算减少点与点之间的像素差;对于像素值与像素值本身的差距而言,若像素值之间的差值超过了设定的范围,则不作处理或略作调整,这样保留了原图像的轮廓。
在这里插入图片描述

bilateralFilter(src, dst, 15, 100, 5);

双边滤波的参数解释为:
待处理的图片,处理后的图片,颜色空间过滤器的sigma值(颜色像素之间的差距域,值越大会有越多的像素点做混合处理),坐标空间中滤波器的sigma值(空间像素之间的差距域,值越大,颜色相差较小的范围大的像素点会互相影响),用于推断图像外部像素的某种边界模式。
对于简单的滤波而言,可以将两个sigma值设置成相同的值,如果值<10,则对滤波器影响很小。


可见,如果将双边滤波和之前的提高对比度的掩膜同时进行操作,就可以得到一定程度上的美颜效果。
分别为原图、双边滤波图、双边滤波后提高对比度的效果图。
在这里插入图片描述

发布了14 篇原创文章 · 获赞 11 · 访问量 2535

猜你喜欢

转载自blog.csdn.net/qq_43425914/article/details/97497005