OpenCV入门(十)快速学会OpenCV 9 图像平滑处理
发布网友
发布时间:2024-10-05 02:44
我来回答
共1个回答
热心网友
时间:2024-11-21 07:46
在尽量保留图像原有信息的情况下,过滤掉图像内部的噪声,这一过程称为对图像的平滑处理,所得的图像称为平滑图像。例如,图7-1是含有噪声的图像,在图像内存在噪声信息,我们通常会通过图像平滑处理等方式去除这些噪声信息。
一幅图像在获取传输等过程中会受到各种各样的噪声干扰。图像噪声来自多方面,有来自系统外部的干扰,如电磁波或经电源串进系统内部而引起的外部噪声;也有来自系统内部的干扰,如摄像机的热噪声、电器的机械运动而产生的抖动噪声等。这些噪声干扰使图像退化,质量下降,表现为图像模糊、特征淹没、对图像分析不利。因此,去除噪声、恢复原始图像是图像处理中的一个重要内容。消除噪声的工作称为图像平滑。
图像平滑 (image smoothing) 是一种区域增强算法. 可以帮助我们去除早点改善图片质量。
滤波器 (Filter) 可以帮助我们来降低噪声, 均值滤波器的主要应用是去除图像中的不相关细节。
图像平滑是一种实用的数字图像处理技术。一个较好的平滑处理方法应该既能消除图像噪声,又不使图像边缘轮廓和线条变模糊,这是数字图像平滑处理要追求的目标。因为噪声源众多,噪声种类复杂,所以相应的平滑方法也多种多样。我们可以将图像平滑分为空间域图像平滑技术和频率域图像平滑技术。 空间域的图像平滑技术有邻域平均法、空间低通滤波、多图像平均、中值滤波等。 在频率域,由于噪声频谱通常在高频部分,因此可以采用各种形式的低通滤波器的方法减少噪声。
滤波的意思就是对原图像的每个像素周围一定范围内的像素进行运算,运算的范围就称为掩膜或领域。运算分为两种(如上图),如果运算只是对各像素灰度值进行简单处理(如乘一个权值)最后求和,就称为线性滤波; 如果对像素灰度值的运算比较复杂,而不是最后求和的简单运算,则是非线性滤波。例如,求一个像素周围3×3范围内的最大值、最小值、中值、均值等都不是简单的加权,都属于非线性滤波。
测试原图:
均值滤波是指用当前像素点周围N·N个像素值的均值来代替当前像素值。使用该方法遍历处理图像内的每一个像素点,即可完成整幅图像的均值滤波。
代码实例:
输出结果:
方框滤波与均值滤波的不同在于,方框滤波不会计算像素均值。在均值滤波中,滤波结果的像素值是任意一个点的邻域平均值,等于各邻域像素值之和除以邻域面积。而在方框滤波中,可以自由选择是否对均值滤波的结果进行归一化,即可以自由选择滤波结果是邻域像素值之和的平均值,还是邻域像素值之和。
代码实例:
输出结果:
高斯滤波中,会将中心点的权重值加大,远离中心点的权重值减小,在此基础上计算邻域内各个像素值不同权重的和。
高斯滤波器 (Gauss Filter) 是一种线性平滑滤波, 适用于高斯噪声。
中值滤波与前面介绍的滤波方式不同,不再采用加权求均值的方式计算滤波结果。它用邻域内所有像素值的中间值来替代当前像素点的像素值。
代码实例:
输出结果:
双边滤波在计算某一个像素点的新值时,不仅考虑距离信息(距离越远,权重越小),还考虑色彩信息(色彩差别越大,权重越小)。双边滤波综合考虑距离和色彩的权重结果,既能够有效地去除噪声,又能够较好地保护边缘信息。
代码实例:
输出结果: