目录
简介
相关概念
滤波代码示例
综述:低通滤波(图像平滑去噪),高通滤波(边缘检测)
图像卷积
//图像卷积
#include
#include
using namespace std;
using namespace cv;
int main() {
//待卷积矩阵
uchar points[25] = { 1,2,3,4,5,
6,7,8,9,10,
11,12,13,14,15,
16,17,18,19,20,
21,22,23,24,25 };
Mat img(5,5,CV_8UC1,points);//定义一个图像矩阵
//卷积模板
Mat kernel = (Mat_(3,3) << 1,2,1,
2,0,2,
1,2,1);
//卷积模板归一化
Mat kernel_norm = kernel / 12;
//未归一化结果和归一化结果
Mat result, result_norm;
filter2D(img, result, CV_32F, kernel, Point(-1,-1),2,BORDER_CONSTANT);
filter2D(img, result_norm, CV_32F, kernel_norm, Point(-1, -1), 2, BORDER_CONSTANT);
cout << "result:" << endl << result << endl;
cout << "result_norm :" << endl << result_norm << endl;
Mat lena = imread("C:/imageprocess/image/lena.jpg");
if (!lena.data) {
std::cout << "can not load image..." << std::endl;
return -1;
}
imshow("原图", lena);
Mat lena_filter;
//api juanji
filter2D(lena, lena_filter, -1, kernel_norm, Point(-1, -1), 2, BORDER_CONSTANT);
imshow("lena_filter", lena_filter);
waitKey(0);
waitKey(0);
return 0;
}
#include "opencv2/opencv.hpp"
using namespace cv;
void main()
{
Mat srcImg = imread("b.jpg");
Mat dstImg;
Size size0 = Size(5, 5);
//boxFilter(srcImg, dstImg, -1, Size(5, 5), Point(-1, -1), true); //方框滤波器,有默认算子
//blur(srcImg, dstImg, size0); //均值滤波,方框滤波的特例,均一化的方框滤波
//GaussianBlur(srcImg, dstImg, size0, 1);//高斯滤波
medianBlur(srcImg, dstImg, 5); //中值滤波
//bilateralFilter(srcImg, dstImg, 5, 10.0, 2.0); //双边滤波
imshow("src", srcImg);
imshow("dst", dstImg);
waitKey(0);
}