OpenCV图像处理之滤波

一、图像滤波

        即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性。

二、图像滤波分类

        大体上图像滤波可以分为线性滤波和非线性滤波,线性滤波包括方框滤波、均值滤波、高斯滤波,非线性滤波包括中值滤波和双边滤波。

三、五种滤波方式

3.1 方框滤波

        方框滤波即取一个m*n的窗口模板,进行平均求和得到最终值。

OpenCV图像处理之滤波_第1张图片

3.2 均值滤波

        均值滤波是一种特殊的方框滤波,即当normalize取true.。

3.3 高斯滤波

        高斯滤波是一种线性平滑滤波,可以消除高斯噪声,广泛应用于图像处理的减噪过程。通俗地讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都有其本身和邻域内的其他像素经过加权平均后得到。这个权矩阵由二维正太分布函数确定,由于正态分布又叫做高斯分布,所以这项技术就叫做高斯模糊。

        二维高斯函数如下:

                                                     

3.4 中值滤波

        其基本思路是用像素点邻域灰度值的中值来代替该像素点的灰度值,该方法在去除脉冲噪声、椒盐噪声的同时又能保留图像的边缘细节。

3.5 双边滤波

        双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间临近度像素值相似度的一种折中处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的,具有简单、非迭代、局部的特点。

        在双边滤波器中,输出像素的值依赖于邻域像素值的加权值组合,公式如下:

                                                          

        其中加权系数取决于定义域核和值域核的乘积。

        其中定义域核表示如下:

                                            

        值域核表示如下:

                                                

       其中有两个参数Sigma(d)和Sigma(r),当Sigma(d)大时,说明更大的定义域空间影响结果,当Sigma(r)大时,说明更大的值域空间影响结果。

4、OpenCV中五种图像滤波的综合示例

        下面将用一些代码和结果来说明五种滤波的效果。

        OpenCV中方框滤波函数为boxFilter,均值滤波函数为blur,高斯滤波函数为GaussianBlur,中值滤波函数为medianBlur,双边滤波函数为bilateralFilter。

        下面贴出五种滤波函数的效果图:

(1)原图

                             OpenCV图像处理之滤波_第2张图片

(2)方框滤波

                              OpenCV图像处理之滤波_第3张图片

(3)高斯滤波

                              OpenCV图像处理之滤波_第4张图片

(4)均值滤波

                             OpenCV图像处理之滤波_第5张图片

(5)中值滤波

                            OpenCV图像处理之滤波_第6张图片

(6)双边滤波

                            OpenCV图像处理之滤波_第7张图片

读者可以下载源码进行研究。

你可能感兴趣的:(C++)