图像处理OpenCV算法02

        5、图像滤波(平滑)

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

        常用的图像滤波算法高斯滤波、均值滤波、中值滤波、双边滤波等。

        卷积的定义:假设被卷积的图像为I,卷积核为K。

        

        I与K的二维离散卷积计算步骤如下:

        首先将K翻转成,然后用K沿着I的每一个位置相乘求和,得到full卷积,,从filter和image刚相交开始做卷积。


        valid卷积:

        当filter全部在image里面的时候,进行卷积运算。

        same卷: 

        当filter的中心(K)与image的边角重合时,开始做卷积运算。

        在OpenCV中通过调用signal.convolve2d()实现卷积。

 

        高斯滤波:高斯滤波(高斯平滑)是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯平滑滤波器对于抑制服从正态分布的噪声非常有效。

        高斯卷积算子的构建:

        首先计算高斯矩阵:

        

        再计算高斯矩阵的和:

        最后用高斯矩阵除以本身的和,即归一化,得到高斯卷积算子:

         

        在OpenCV中,通过调用cv2.getGaussianKernel(ksize,sigma,ktype)实现一维水平方向上的高斯平滑,再进行一维垂直方向上的高斯平滑。

 

        均值平滑:均值滤波,是最简单的一种线性滤波操作,输出图像的每一个像素是核窗口内输入图像对应图像像素的平均值。其算法比较简单,计算速度快,但是均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在去除噪声的同时,也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。但均值滤波对周期性的干扰噪声有很好的抑制作用。

        均值平滑:

        利用矩阵积分,计算出矩阵中任意矩形区域内的和,快速均值平滑:

        

        在OpenCV中,通过调用cv2.blur()实现均值滤波。

 

        中值滤波:中值滤波法是一种非线性平滑技术,将图像的每个像素用邻域 (以当前像素为中心的正方形区域)像素的中值代替 ,常用于消除图像中的椒盐噪声。中值滤波对脉冲噪声有良好的滤除作用,特别是在滤除噪声的同时,能够保护信号的边缘,使之不被模糊,但它会洗去均匀介质区域中的纹理。

        再OpenCV中,通过调用cv2.medianBlur()实现中值滤波。

 

        双边滤波:双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的,具有简单、非迭代、局部的特点,能够对低频信息进行较好的额滤波。双边滤波器的好处是可以做边缘保存,这个特点对于一些图像模糊来说很有用。

        双边滤波根据每个位置的领域,对应该位置构建不同的权重模板,首先,构建winH*winW的空间距离权重模板,与构建高斯卷积核的过程类似,winH*winW均为奇数,0<=h<winH,0<=w<winW。

        

        然后,构建winH*winW的相似权重模板,是通过(r,c)处的值与其领域值得差值的指数衡量。

        

        最后将closenessWeight和similarityWeight的对应位置相乘,然后进行归一化,便可得到改位置的权重模板,将所得到的权重模板和该位置领域的对应位置相乘求和,最后就得到该位置的输出值。

        在OpenCV中,通过调用cv2.bilateralFilter()实现双边滤波。

        联合双边滤波与双边滤波不同之处在于,双边滤波是根据原图对每一个位置,通过该位置和其领域的灰度值的差的指数来估计相似性;而联合双边滤波是首先对原图进行高斯平滑,根据平滑的结果,用当前的位置及其领域的值得差来估计相似性权重模板。

猜你喜欢

转载自blog.csdn.net/zx520113/article/details/80765665