图像滤波:指在尽量保留图像特征的情况下,对图像的噪声进行抑制,对后续处理的有效性和可靠性有直接影响。
图像的平滑处理(Smoothing)和模糊处理(bluring)是去掉高频噪声的处理,和低通图像滤波是一个意思。
线性滤波:
1.方框滤波——boxblur
非归一化的方框滤波用于计算邻域内的积分特性;
归一化后的特殊情况是均值滤波,也就是normalize=true时的情况。
在OpenCV中使用:
2.均值滤波——blur
概念:均值滤波是用模板(核)的全体像素的平均值,代替原来的像素。
缺点:去噪的同时,使图像变得模糊。
在OpenCV中使用:内部代码实质是调用了boxblur改了参数,变成了归一化的情况。
3.高斯滤波——GaussianBlur
概念:图像与高斯分布卷积的结果。
在OpenCV中使用:
以上这些blur的滤波函数都是FilterEngine作为内核的,而cv:;filter2D(),cv:;erode(),cv::dilte()它们不依赖于FilterEngine
用进度条,调节size大小的程序:
#include
#include
#include
#include
#include
#include
#include "vector"
using namespace cv;
using namespace std;
static void on_callbackSlide(int,void *);
int contrastvalue=1;
Mat src;
Mat dst;
int main ()
{
src=imread("lou.jpg",0);
dst=Mat::zeros(src.size(),src.type());
namedWindow ("娄",1);
//on_callbackSlide(contrastvalue);
createTrackbar("Size大小","娄",&contrastvalue,20,on_callbackSlide);
waitKey(0);
}
static void on_callbackSlide(int,void *)
{
blur(src,dst,Size(contrastvalue*2+1,contrastvalue*2+1));
imshow("娄",dst);
}
//千万不要把creatTrackBar 写为 CvcreatTrackBar