【OpenCV学习笔记】图像平滑处理

图像平滑处理,从数值上来说是一种平滑化,从图形上来说相当于产生了模糊效果,中间点失去细节。

图像平滑处理就是对图像进行滤波,所谓滤波就是重新计算图像中的各个像素点,使该像素点的值与周围的像素点的值相近。

计算各个点的值通常使通过指定一个滤波核,并会将该滤波核在图像上滑动,从而能够计算除整幅图像的各个像素点的值。滤波核的大小通过为奇数,一般为3,5,7。

OpenCV中的几种滤波方式:

  • 均值滤波
  • 方框滤波
  • 中值滤波
  • 高斯滤波
滤波方式 优点
均值滤波

均值滤波是用每一个像素和它周围像素计算出来的平均值替换图像中每一个像素。

从频率域观点来看均值滤波是一种低通滤波器(让图像的低频部分经过,一般弱化边缘,会获得比较平缓的图像),高频信号将会去掉,所以能够帮助消除图像尖锐噪声,实现图像平滑,模糊等功能。

由于此方法不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊。

消除尖锐噪声,实现图像平滑,模糊等功能。
中值滤波

中值滤波也是消除图像噪声最多见的手段之一,特别是消除椒盐噪声,中值滤波的效果要比均值滤波更好。

它的基本原理是计算出数字图像中的一点的一个邻域中的各点值的中值(中间值),并使用该中值将将该点原值代替。

能够理解为使用一个窗口沿图像移动,用窗口内全部象素灰度的中值来代替窗口中心位置的象素灰度。

消除椒盐噪声。
高斯滤波

 高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,普遍应用于图像处理的减噪过程。

通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每个像素点的值,都由其自己和邻域内的其余像素值通过加权平均后获得。

能够理解为用一个模板(或称卷积、掩模)扫描图像中的每个像素,用模板肯定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。

消除高斯噪声。

均值滤波

均值滤波就是使用滤波核计算所有像素的平均值

【OpenCV学习笔记】图像平滑处理_第1张图片

void blur( InputArray src, OutputArray dst, Size ksize, Point anchor = Point(-1,-1), int borderType = BORDER_DEFAULT );

方框滤波

方框滤波的滤波方式和均值滤波基本相同,唯一不同的是方框滤波可选择,在所有数值加起来之后是否要求平均值,如果求平均,那么方框滤波就等价于均值滤波;如果不求平均,那么值如果超过255的话就等于255。

void boxFilter( InputArray src, OutputArray dst, int ddepth, Size ksize, Point anchor = Point(-1,-1), bool normalize = true, int borderType = BORDER_DEFAULT );

中值滤波

中值滤波就是对所有像素进行排序,取中间值

void medianBlur( InputArray src, OutputArray dst, int ksize );

高斯滤波

在均值滤波中滤波核中的值都为1,相当于所有像素都会乘以1,然后相加起来求平均。高斯滤波的滤波核中的值不全是1,与要计算的像素点的位置越接近,值会越大,越远值会越小,也就相当于一个权重矩阵

void GaussianBlur( InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY = 0, int borderType = BORDER_DEFAULT );

参数:

sigmaX:x方向的标准方差。可设置为0让系统自动计算。

sigmaY:y方向的标准方差。可设置为0让系统自动计算。

高斯模糊(高斯滤波)的原理与算法_lsh呵呵的博客-CSDN博客_高斯滤波的基本原理

高斯滤波原理剖析_fangyan的博客-CSDN博客_高斯滤波的基本原理

图像处理基础(4):高斯滤波器详解 - Brook_icv - 博客园

你可能感兴趣的:(OpenCV,qt)