OpenCV图像处理篇之图像平滑

Last edited time
Sep 23, 2024 03:04 PM
AI summary
文章介绍了图像平滑算法,强调其在去噪中的重要性,主要使用线性滤波器。常见的滤波器包括均值滤波器、高斯滤波器、中值滤波器和双边滤波器。提供了一个程序示例,展示如何对添加了椒盐噪声的图像应用这四种滤波器,并分析了各自的去噪效果。
Tags
Image Smoothing
Noise Reduction
Image Processing
Last edited by

图像平滑算法

图像平滑与图像模糊是同一概念,主要用于图像的去噪。平滑要使用滤波器,为不改变图像的相位信息,一般使用线性滤波器,其统一形式如下:
其中h称为滤波器的核函数,说白了就是权值。不同的核函数代表不同的滤波器,有不同的用途。
在图像处理中,常见的滤波器包括:
  1. 归一化滤波器(Homogeneous blur)
    1. 也是__均值滤波器__,用输出像素点核窗口内的像素均值代替输出点像素值。
  1. 高斯滤波器(Guassian blur)
    1. 是实际中最常用的滤波器,高斯滤波是将输入数组的每一个像素点与 高斯内核 卷积将卷积和当作输出像素值。高斯核相当于对输出像素的邻域赋予不同的权值,输出像素点所在位置的权值最大(对应高斯函数的均值位置)。二维高斯函数为,
  1. 中值滤波器(median blur)
    1. 中值滤波将图像的每个像素用邻域(以当前像素为中心的正方形区域)像素的中值代替。对椒盐噪声最有效的滤波器,去除跳变点非常有效。
  1. 双边滤波器(Bilatrial blur)
    1. 为避免滤波器平滑图像去噪的同时使边缘也模糊,这种情况下使用双边滤波器。关于双边滤波器的解释参见http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html
下面的程序将先给标准Lena图像添加椒盐噪声,分别使用4种不同的滤波器进行平滑操作,请注意观察不同滤波器对椒盐噪声的去噪效果!

程序分析及结果

上面程序的逻辑非常清晰:
  1. 读入灰度图,并添加椒盐噪声(6000个噪声点):
    1. notion image
  1. disp_captiondisp_image函数分别是用于显示提示文字和平滑过程中的变化图像的,平滑过程中图像的变化如下图:
    1. notion image
      注意观察上面的图,中值滤波(Median Blur)对椒盐噪声的效果最好!
  1. 四种滤波方法分别使用到4个OpenCV函数,这些函数的声明都在imgproc.hpp中,这些函数的前2个参数都是原图像和滤波后图像。
    1. 归一化滤波器blur的第3个参数为滤波核窗口的大小,Size(i,i)表示ixi大小的窗口。
      高斯滤波器GaussianBlur第3个参数也是滤波核窗口的大小,第4、第5个参数分辨表示x方向和y方向的δ。
      中值滤波器medianBlur第3个参数是滤波器的长度,该滤波器的窗口为正方形。
      双边滤波器的函数原型如下:
  1. 本程序使用的Makefile文件为:
    Loading...