1.高斯滤波
void cv::GaussianBlur(
cv::InputArray src, // 输入图像
cv::OutputArray dst, // 输出图像
cv::Size ksize, // 核大小
double sigmaX, // x方向高斯半宽
double sigmaY = 0.0, // y方向高斯半宽
int borderType = cv::BORDER_DEFAULT // 边界处理方法
);
适合处理高斯噪声。(往中心集中的那种)
高斯滤波是一种线性平滑滤波,对于除去高斯噪声有很好的效果。
高斯算法在官方文档给出的解释是高斯滤波是通过对输入数组的每个点与输入的高斯滤波模板执行卷积计算然后将这些结果一块组成了滤波后的输出数组,通俗的讲就是高斯滤波是对整幅图像进行加权平均的过程,每一个像素点的值都由其本身和邻域内的其他像素值经过加权平均后得到。
高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。
InputArray src: 输入图像,可以是Mat类型,图像深度为CV_8U、CV_16U、CV_16S、CV_32F、CV_64F。
2.均值滤波–blur函数
图像的简单平滑就是均值滤波,对图像中一定邻域内的像素灰度值求平均值,将平均的结果作为中心像素的灰度保存在结果图中。(在多通道图像中,每个通道需要分别计算。)
void cv::blur(
cv::InputArray src, // 输入图像
cv::OutputArray dst, // 输出图像
cv::Size ksize, // 核大小
cv::Point anchor = cv::Point(-1,-1), // 锚点位置
int borderType = cv::BORDER_DEFAULT // 边界处理方法
);
3.boxFilter方框滤波
最主要的作用就是来模糊一张图片(可以部分的消除掉图像出尖锐的边缘点)
Mat dstImage;
boxFilter(srcImage, dstImage, -1, Size(5, 5));
inputArray类型的src,输入图像。Mat类的对象。该函数对通道是独立处理的,且可以处理任意通道数的图像,但是待处理的图像深度应该是CV_8U,CV_16U,CV_16S,CV_32F,CV_64F。
Size类型的lsize,内核的大小。一般用Size(w,h)的写法表示,例如Size(3,3),Size(5,5)。
常见的线性滤波器:
(1)低通滤波器:允许低频率通过;
(2)高通滤波器:允许高频率通过;
(3)带通滤波器 :允许一定区域的频率通过;
(4)带阻滤波器 :阻止一定范围内的频率并且允许其他频率通过;
(5)全通滤波器 :允许所有频率通过,仅仅改变相位;
(6)陷波滤波器(Band stop filter):阻止一个狭窄频率范围通过的特殊带阻滤波器。
线性邻域滤波是一种常用的邻域算子。邻域算子(局部算子)是利用给定像素周围的像素值的决定此像素的最终输出值的一种算子。下面这个图解可以很好的说明这个过程:
邻域算子(局部算子)是利用给定像素周围的像素值的决定此像素的最终输出值的一种算子。而线性邻域滤波是一种常用的邻域算子,像素的输出值取决于输入像素的加权和