opencv 图像卷积运算函数filter2D()
在其官方文档中,filter2D()函数在掩模板介绍中一笔带过,我认为该函数应该进行详细介绍。
对于使用掩模板矩阵(kernel)计算每个像素值,结合函数filter2D()函数,其定义如下:
CV_EXPORTS_W void filter2D( InputArray src, OutputArray dst, int ddepth,InputArray kernel, Point anchor=Point(-1,-1),double delta=0, int borderType=BORDER_DEFAULT );
- 1
- 2
- 3
其官方指导文件对filter2D()函数的描述为:Convolves an image with kernel即利用内核实现对图像的卷积运算。参数含义如下:
InputArray src: 输入图像
OutputArray dst: 输出图像,和输入图像具有相同的尺寸和通道数量
int ddepth: 目标图像深度,如果没写将生成与原图像深度相同的图像。原图像和目标图像支持的图像深度如下:
src.depth() = CV_8U, ddepth = -1/CV_16S/CV_32F/CV_64Fsrc.depth() = CV_16U/CV_16S, ddepth = -1/CV_32F/CV_64Fsrc.depth() = CV_32F, ddepth = -1/CV_32F/CV_64Fsrc.depth() = CV_64F, ddepth = -1/CV_64F
- 1
- 2
- 3
- 4
- 5
当ddepth输入值为-1时,目标图像和原图像深度保持一致。
InputArray kernel: 卷积核(或者是相关核),一个单通道浮点型矩阵。如果想在图像不同的通道使用不同的kernel,可以先使用split()函数将图像通道事先分开。
Point anchor: 内核的基准点(anchor),其默认值为(-1,-1)说明位于kernel的中心位置。基准点即kernel中与进行处理的像素点重合的点。
double delta: 在储存目标图像前可选的添加到像素的值,默认值为0
int borderType: 像素向外逼近的方法,默认值是BORDER_DEFAULT,即对全部边界进行计算。
该函数使用于任意线性滤波器的图像,支持就地操作。当其中心移动到图像外,函数可以根据指定的边界模式进行插值运算。函数实质上是计算kernel与图像的相关性而不是卷积:
也就是说kernel并不是中心点的镜像,如果需要一个正真的卷积,使用函数flip()并将中心点设置为(kernel.cols - anchor.x - 1, kernel.rows - anchor.y -1).
该函数在大核(11x11或更大)的情况下使用基于DFT的算法,而在小核情况下使用直接算法(使用createLinearFilter()检索得到).
示例程序如下:
#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>using namespace std;
using namespace cv;int main()
{Mat srcImage = imread("lena.jpg");//判断图像是否加载成功if(srcImage.data)cout << "图像加载成功!" << endl << endl;else{cout << "图像加载失败!" << endl << endl;return -1;}namedWindow("srcImage", WINDOW_AUTOSIZE);imshow("srcImage", srcImage);Mat kern = (Mat_<char>(3,3) << 0, -1 ,0,-1, 5, -1,0, -1, 0);Mat dstImage;filter2D(srcImage,dstImage,srcImage.depth(),kern);namedWindow("dstImage",WINDOW_AUTOSIZE);imshow("dstImage",dstImage);waitKey(0);return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
运行结果如下:
与上一篇运行结果相比并没有黑边存在!
版权声明:本文为某博主原创文章,未经博主允许不得转载。链接: https://blog.csdn.net/keith_bb/article/details/53103026
opencv 图像卷积运算函数filter2D()相关推荐
- opencv学习(七)之图像卷积运算函数filter2D()
接上篇 在其官方文档中,filter2D()函数在掩模板介绍中一笔带过,我认为该函数应该进行详细介绍. 对于使用掩模板矩阵(kernel)计算每个像素值,结合函数filter2D()函数,其定义如下: ...
- OpenCV 图像卷积:cv.filter2D() 函数详解
API 照例,我们搬一下官网的 API: C++ void cv::filter2D(InputArray src,OutputArray dst,int ddepth,InputArray kern ...
- python二维图颜色函数_Python scipy的二维图像卷积运算与图像模糊处理操作示例
本文实例讲述了Python scipy的二维图像卷积运算与图像模糊处理操作.分享给大家供大家参考,具体如下: 二维图像卷积运算 一 代码 import numpy as np from scipy i ...
- python 图像卷积_[卷积神经网络(CNN)中的卷积核到底是如何提取图像特征的(python实现图像卷积运算)]...
1.前言 我们知道,卷积核(也叫滤波器矩阵)在卷积神经网络中具有非常重要的作用.说白了,CNN主要作用在于提取图像的各种特征图(feature maps). CNN主要是通过卷积运算来完成特征提取的. ...
- 基于MATLAB的图像卷积运算
卷积简介 卷积广泛应用于信号.图像和机器学习等领域,但是对于非数学专业的同学来说,是一个比较陌生和懵懂的概念.卷积(Convolution)是数学上的一种积分变换,主要作用是为了获取某个函数的局部信息 ...
- 【Python+OpenCV 图像透视变换 warpPerspective函数】
Python+OpenCV 图像透视变换 warpPerspective函数 1.函数介绍 2.代码实例 3.实现效果 1.函数介绍 warpPerspective():对图像进行透视变换.简单来说, ...
- OpenCV学习笔记(十)——图像卷积(cv.filter2D()、矩阵旋转cv.filp())
目录 1 图像卷积过程 2 cv.filter2D() 3 cv.filp() 卷积运算在信号处理中十分常见,而图像信息可以看成一种信号.例如,图像的每一行可以看出测量亮度变化的信号,而每一列可以看作 ...
- OpenCV图像发现轮廓函数findContours()的使用
OPenCV版本:4.4 IDE:VS2017 功能描述 简述:在一个二进制图像里发现轮廓. 函数在二进制图像中使用Suzuki85算法获取轮廓.轮廓对形状分析和目标检测与识别是一个有用的工具,用法见 ...
- Opencv之图像滤波:1.图像卷积(cv2.filter2D)
写这些博客主要是记录自己学习Opencv的过程,也希望能帮助到大家. 在OpenCV中,允许用户自定义卷积核实现卷积操作,使用自定义卷积核实现卷积操作的函数是cv2.filter2D( ...
- opencv图像形态学运算
[图像处理]轻松搞懂形态学处理(腐蚀.膨胀.开闭运算) - 知乎 图像的腐蚀与膨胀 - 简书 图像膨胀&腐蚀 - outthinker - 博客园 图形算法与实战:3.图像最大连通域_进击的C ...
最新文章
- java字符编码问题_java 字符编码问题
- 空闲数据概念_计算机组成原理复习笔记——基础概念(二)
- vs找不到dll_零基础学习Python_绝对VS相对
- java程序发布成exe等
- 字符串的构造方法和直接创建
- C++ string 使用详解(含C++20新特性)
- php中的address,html中address是什么意思?(代码示例)
- 现代软件工程 第十一章 【软件设计与实现】 练习与讨论
- SQL2000无法建立管理单元
- 编程范式之字符和基本类型
- Overview of HEVC之4 帧内预测
- Python字符串等于
- 系列课程 ElasticSearch 之第 8 篇 —— SpringBoot 整合 ElasticSearch 做查询(分页查询)
- VMware9 绿色破解版 下载地址
- 把Date类型的Fri Feb 01 00:00:00 CST 2019转换成yyyy-MM-dd格式
- matlab异距分组直方图,如何绘制不等距分组的直方图?
- 小白入门之HTML--第五章 块状元素,行内元素,盒子模型
- 经典黑白搭配 现代简约风格设计美学精神
- 推荐系统组队学习03、矩阵分解
- 需求文档怎么写?这里有一套思维框架