图像滤波:指在尽量保留图像特征的情况下,对图像的噪声进行抑制,对后续处理的有效性和可靠性有直接影响。
图像的平滑处理(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