OpenCV4入门教程057:filter2D(图像掩码与滤波)
索引地址:系列索引
官方指导文件对filter2D()函数的描述为:Convolves an image with kernel即利用内核实现对图像的卷积运算。
函数原型为:
1 |
|
参数说明:
- src: 输入图像
- dst: 输出图像,和输入图像具有相同的尺寸和通道数量
- ddepth: 目标图像深度,如果没写将生成与原图像深度相同的图像。
- kernel: 卷积核(或者是相关核),一个单通道浮点型矩阵。如果想在图像不同的通道使用不同的kernel,可以先使用split()函数将图像通道事先分开。
- anchor: 内核的基准点(anchor),其默认值为(-1,-1)说明位于kernel的中心位置。基准点即kernel中与进行处理的像素点重合的点。
- delta: 在储存目标图像前可选的添加到像素的值,默认值为0
- borderType: 像素向外逼近的方法,默认值是BORDER_DEFAULT,即对全部边界进行计算。
该函数使用于任意线性滤波器的图像,支持就地操作。当其中心移动到图像外,函数可以根据指定的边界模式进行插值运算。函数实质上是计算kernel与图像的相关性而不是卷积:
也就是说kernel并不是中心点的镜像,如果需要一个正真的卷积,使用函数flip()并将中心点设置为(kernel.cols - anchor.x - 1, kernel.rows - anchor.y -1).
该函数在大核(11x11或更大)的情况下使用基于DFT的算法,而在小核情况下使用直接算法(使用createLinearFilter()检索得到).
测试代码1:
1 |
|
测试效果:
测试代码2:
1 |
|
测试效果:
OpenCV4入门教程057:filter2D(图像掩码与滤波)
https://blog.jackeylea.com/opencv/opencv-filter2d/