一 学习内容
1 中值滤波(用于消除椒盐噪声)
2 双边平滑(用于:平滑图像的同时进行边缘保持,以防止在图像平滑的时候把边缘变得模糊)
补充:
3. 高斯平滑(用于平滑图像,消除图像中的随机噪声)
二 代码
#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int main() {
Mat src,dst1,dst2,dst3,dst4;
src = imread("E:/2 OpenCV_Projects_ZL/Desk1.jpg");
if (!src.data) {
printf("Load Error!");
return -1;
}
namedWindow("Figure1",CV_WINDOW_AUTOSIZE);
imshow("Figure1",src);
// 学习新内容
// 1. 中值滤波(用于消除椒盐噪声)
medianBlur(src,dst1,3);
namedWindow("Figure2", CV_WINDOW_AUTOSIZE);
imshow("Figure2", dst1);
// 2. 高斯平滑(用于平滑图像,消除图像中的随机噪声)
GaussianBlur(src, dst2, Size(15,15),3,3);
namedWindow("Figure3", CV_WINDOW_AUTOSIZE);
imshow("Figure3", dst2);
// 3. 双边平滑(平滑图像的同时进行边缘保持,以防止在图像平滑的时候把边缘变得模糊)
bilateralFilter(src, dst3, 15, 80, 3);//15表示窗口大小;80表示边缘处灰度差异的阈值大小;3表示备用的窗口大小
namedWindow("Figure4", CV_WINDOW_AUTOSIZE);
imshow("Figure4", dst3);
// 4. filter2D,提升双边平滑结果图像的对比度
Mat kernel = (Mat_<int>(3,3)<<0,-1,0,-1,5,-1,0,-1,0);
filter2D(dst3,dst4,-1,kernel);
namedWindow("Figure5", CV_WINDOW_AUTOSIZE);
imshow("Figure5", dst4);
waitKey(0);
return 0;
}
三 调试结果