卷积概念
自定义卷积模糊
代码演示
卷积概念:
卷积是图像处理中的一个操作,是kernel在图像上的每个像素上的操作
kernel本质上是一个固定大小的矩阵数组,其中心点成为锚点
卷积如何工作的:把kernel放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点) 用来替换锚点覆盖下像素点值成为卷积处理 数学表达式如下
常见算子:
#include<opencv2\opencv.hpp>
#include<highgui\highgui.hpp>
#include<math.h>
#include<core\core.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main(int argc, char** argv) {
Mat src, dst1,dst2;
int ksize = 0;
src = imread("1.jpg");
if (src.empty())
{
printf("could not load image...");
return -1;
}
char INPUT_WIN[] = "input image";
char OUTPUT_WIN[] = "result image";
namedWindow(INPUT_WIN, CV_WINDOW_AUTOSIZE);
namedWindow(OUTPUT_WIN, CV_WINDOW_AUTOSIZE);
imshow(INPUT_WIN, src);
//X方向 提取边缘
Mat kernel1 = (Mat_<int>(2, 2) << 1, 0, 0, -1);
filter2D(src, dst1, -1, kernel1, Point(-1, -1));
imshow(OUTPUT_WIN, dst1);
Mat kernel2 = (Mat_<int>(2, 2) << 0, 1, -1, 0);
filter2D(src, dst2, -1, kernel2, Point(-1, -1));
imshow("Y方向", dst2);
waitKey(0);
return 0;
}
自定义卷积模糊: