一、卷积
- 卷积是图像处理中的一个操作,是kernel在图像的每个像素上的操作,Kernel本质上一个固定大小的矩阵数组,其中心点称为锚点(anchor point)。
- 利用卷积可以模糊图像、提取边缘、进行图像的锐化等。
- 卷积运算:把kernel放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值称为卷积处理


二、常见算子
- Robert算子:可以用来寻找梯度,寻找边缘 主对角线与副对角线上的梯度

- Soble算子:可以用来寻找梯度,寻找边缘 水平与垂直方向的梯度

- Laplance算子:可以用来寻找梯度,寻找边缘 整个的梯度,整体轮廓

三、filter2D
void cv::filter2D ( InputArray src,
OutputArray dst,
int ddepth,
InputArray kernel,
Point anchor = Point(-1,-1),
double delta = 0,
int borderType = BORDER_DEFAULT
)
- InputArray src: 输入图像
- OutputArray dst: 目标图像,其尺寸和通道与输入图像一致
- int ddepth: 期望的目标图像深度,负值(例如-1)表示深度与源相同
- InputArray kernel: 卷积核kernel,单通道浮点型矩阵, 如果想在不同的通道使用不同的卷积kernel,可以将图像首先使用split函数将不同的颜色通道分离,然后对每个颜色通道单独进行处理
- Point anchor = Point(-1, -1): 锚点,要进行处理的像素值位于kernel中的相对位置,有默认值(-1, -1)位于模板中心。
- double delta = 0: 在存入目标图像之前可以增加的常数
- int borderType = BORDER_DEFAULT: 用于推断图像外部像素的边界模式
四、示例
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
int main() {
Mat src, dst1, dst2, dst3, dst4, dst5, dst6;
src = imread("images/02.png");