filter2D图像卷积
程序员文章站
2023-12-23 19:38:27
...
图像处理中的卷积运算一般都用来平滑图像、尖锐图像求边缘等等
七个参数分别表示:(原图,目标图,图像深度,核函数,模板中心点,delta,边界类型)
一般卷积操作只涉及到前五个参数。
原文链接:
1.Filter是一个非常耗时的操作,不过OpenCV的Filter写法比较特别
这里把原理解析一下,就可以编写自己的filter代码了
2.下面这篇是对官方文档的一个翻译:
opencv学习(七)之图像卷积运算函数filter2D()
作者自己写了一段代码,重点在:
Mat kern = (Mat_<char>(3,3) << 0, -1 ,0,
-1, 5, -1,
0, -1, 0);
Mat dstImage;
filter2D(srcImage,dstImage,srcImage.depth(),kern);
这里的srcImage.depth()可以写为-1,表示=目标图像和原图像深度保持一致。
最后给出官方文档的定义:
定义如下:
void filter2D( InputArray src, OutputArray dst, int ddepth,
InputArray kernel, Point anchor=Point(-1,-1),
double delta=0, int borderType=BORDER_DEFAULT );
参数说明:(一般只写前5个参数)
InputArray src: 输入图像
OutputArray dst: 输出图像,和输入图像具有相同的尺寸和通道数量
int ddepth: 目标图像深度,如果没写将生成与原图像深度相同的图像。当ddepth输入值为-1时,目标图像和原图像深度保持一致。
InputArray kernel: 卷积核(或者是相关核),一个单通道浮点型矩阵。如果想在图像不同的通道使用不同的kernel,可以先使用split()函数将图像通道事先分开。
Point anchor: 内核的基准点(anchor),其默认值为(-1,-1)说明位于kernel的中心位置。基准点即kernel中与进行处理的像素点重合的点。
double delta: 在储存目标图像前可选的添加到像素的值,默认值为0
int borderType: 像素向外逼近的方法,默认值是BORDER_DEFAULT,即对全部边界进行计算。