【OpenCV】图像处理(一)平滑处理

OpenCV有很多方面的应用,作为主流的计算机图像处理编程软件,图像处理和计算机视觉是OpenCV应用最为重要的两个方面,在之前的博文里,我们介绍了OpenCV中的CvMat、IplImage等结构,了解了结构的数据类型的构成,接下来,我们将做些更复杂的图像处理工作。这篇博文将重点介绍图像处理中比较重要的一个前期基础工作-平滑处理。

平滑处理

平滑处理”也称作模糊处理,也叫滤波,是一项简单且使用频率很高的图像处理方法。平滑处理的用途有很多,但最为常见的就是用来减少图像上的噪声和失真。同时,在降低图像的分辨率时,平滑处理也是很重要的。在OpenCV中这个平滑处理的主要工作是由函数cvSmooth()完成的。

void cvSmooth(
    const CvArr* src,//输入图像
    CvArr*       dst,//输出图像
    //param1,2,3,4的值的选择依据smoothtype
    int          smoothtype=CV_GAUSSIAN,
    int          param1=3,
    int          param2=0,
    double       param3=0,
    double       param4=0
)

关于smoothtype的取值,大家可以参照下下图:

这里写图片描述

这个函数调用的示例也很简单,在这里就不传了。

均值滤波(Blur)的缺点在于它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。
中值滤波是将中心像素的正方形领域内的每个像素用中间值替换。可改善简单模糊的缺点。
高斯滤波,它使用于真实图像在空间内像素变化缓慢,邻近点的像素变化不会很明显,但是随即两个点就可能形成很大的像素差,正是基于这一点,高斯滤波在保留信号的条件下减少噪声,但该方法在边缘就无效了,会磨平边缘。
双边滤波,因为某些滤波器不仅会消除噪声,还会连同边缘一起磨掉,而双边滤波则可以在一定程度上避免这种滤波,但会很慢。

双边滤波与高斯滤波类似,对相似的像素赋予较高的权重,不相似的基于较低权重,分两部分,第一部分与高斯相同,第二部分也属于高斯加权,但不是基于空间距离,而是基于其他像素与中心像素的灰度差加权。可用于图像分割。

关于各个滤波的数学理论,大家感兴趣的可以参照如下这篇博文,特给出博文链接:

http://blog.csdn.net/xw20084898/article/details/21822565

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页