模糊原理:
Smooth/Blur是图像处理中最简单和常用的操作之一。
使用该操作的原因之一就是为了给图像预处理时候减低噪声。
使用Smooth/Blur操作其背后是数学的卷积计算。
通常这些卷积算子计算都是线性操作,所以又叫线性滤波。
相关API:
均值滤波:
blur(Mat src,Mat dst,Size(xradius,yradius),Point(-1,-1));//输入图像,输出图像,内核大小,取核的中心为瞄点
高斯滤波:(基于权重的,距离越远,权重越小
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main(int agrc, char** agrv) {
Mat src,dst,gau_blur;
src = imread("C:/Users/liyangxian/Desktop/bjl/nm2.jpg");
if (!src.data) {
printf("no load..\n");
return -1;
}
const char* input_win = "input";
char output_win[] = "blur image";
namedWindow(input_win, CV_WINDOW_AUTOSIZE);
imshow(input_win, src);
blur(src, dst, Size(11, 11), Point(-1, -1));//可以只在一个方向上模糊,修改size中某个方向为1就好
namedWindow(output_win, CV_WINDOW_AUTOSIZE);
imshow(output_win, dst);
GaussianBlur(src, gau_blur, Size(11, 11), 11, 11);
imshow("gaussian image", gau_blur);
waitKey(0);
return 0;
}
)
GaussianBlur(Mat src,Mat dst,Size(11,11),sigmaX,sigmaY);//输入图像,输出图像,高斯内核大小,高斯核函数在X方向的标准偏差,Y,
note:Size(x,y)必须是正数而且是奇数