卷积和卷积如何工作,这个是知道的,卷积的作用就是模糊图像
提取边缘,锐化图像。常见的卷积核(算子)有robert算子,
sobel算子,拉普拉斯算子,前两个算子是分x方向和y方向的,
而拉普拉斯算子是提取整体图像的边缘。
提取边缘时,sobel比robert算子效果好,自定义线性滤波器用的API
是filter2D(src,dst,图像深度8或32,卷积核模板,锚点)
卷积概念
●卷积是图像处理中一个操作 ,是Kermel(卷积核)在图像的每个像素
上的操作。
●Kermel(卷积核)本质 上是一个固定大小的巨阵数组,其中心点称为锚
点(anchorpoint)
卷积如何工作
●把kernel卷积核放到像素数组之 上,求锚点周围覆盖的像索乘
积之和(包括锚点) ,用来替换锚点覆盖下像素点值
称为卷积处理
从左到右 从上到下
8 6 6
2 8 6
2 2 8
处理之前的像素值
设置的卷积和大小为
1 1 1
1 1 1
1 1 1
根据公式计算 sum=8x1+6x1+6x1+2x1+8x1+6x1+2x1+2x1+8x1
锚点 8 的替换值为 sum/(m*n) 卷积乘积和除以数组的大(宽高) =48/9=5.3;
卷积也称为 算子
常见算子
Robert算子(2x2) 梯度算子
X方向 Y方向
+1 0 0 +1
0 -1 -1 0
Sobel算子(3x3)
水平方向(左右差异化) 上下方向
-1 0 1 -1 -2 -1
-2 0 2 0 0 0
-1 0 1 1 2 1
拉普拉斯算子(3x3)
拉普拉斯算子得到的是整个的算子 全局算子 不区分XY方向
0 -1 0
-1 4 -1
0 -1 0
用来寻找轮廓 寻找图像的边缘
自定义卷积模糊(线性滤波)
filter2D(Mat src, Mat dst, int depth, Mat kernel, Point anchor, double delta);
Matst, 输入图像
Matdst,模糊图像
int depth, 图像深度32/8
Matkernel, 卷积核模板
Point anchor, 锚点位置
double delta 计算出来的像素delta
其中kernel是可以自定义的卷积核
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui_c.h>
#include <iostream>
#include <math.h>
using namespace cv;
using