使用filter2D创建自定义线性滤波器
来源:互联网 发布:点播软件哪个好 编辑:程序博客网 时间:2024/06/11 01:49
1、函数原型
void filter2D(InputArray src, OutputArray dst, int ddepth, InputArray kernel, Pointanchor=Point(-1,-1), double delta=0, int borderType=BORDER_DEFAULT )
该函数可使用任意自定义卷积核在输入图像上进行卷积运算,而且可以实现就地转换(In-place operation is supported)。
2、参数分析
src:源图像
dst:目标图像
ddepth:dst的深度,若为负值(如-1),则表示其深度与源图像相等。
kernel:用来遍历图像的核
anchor:核的锚点的相对位置,其中心点默认为(-1,-1)。
delta:在卷积的过程中,该值会加到每个像素上。默认情况下,这个值为0。
BORDER_DEFAULT:像素插值方法,这里为默认值,详细可以参照borderInterpolate()方法。
3、卷积核&锚点
卷积核:卷积核本质上是一个大小固定、由数值参数构成的数组,一个特殊卷积所实现的功能是由其卷积核的形式决定的。
锚 点:数组的参考点(anchor point,也叫锚点)通常位于数组(卷积核)的中心。
举 例:下图描述了一个以数组中心为参考点的3X3的卷积核,-4所在为锚点。若要计算图像上某个点的卷积值,则将卷积核的锚点定位到图像上的那个点,让核的其它元素覆盖图像中的相应的像素点。将图像上的点与卷积核对应相乘后再求和,并将这个结果放在图像上锚点的相对位置上。通过在图像上扫描卷积核,对图像的每个点重复此操作。
4、应用举例
使用Gabor滤波器对原图像(src)进行滤波操作得到滤波后的图像(src_filted)
Mat getGaborFeature(Mat src, int theta, int lambd, int KernelSize) {Mat src_filted;src_filted.create(src.size(), src.type());Mat GK = getGaborKernel(Size(KernelSize, KernelSize), 2 * CV_PI, (theta * CV_PI) / 8, lambd, CV_PI / 2, CV_32F);filter2D(src, src_filted, -1, GK, Point(-1,-1));return src_filted;}
- 卷积,使用filter2D创建自定义线性滤波器
- 使用filter2D创建自定义线性滤波器
- imgproc模块--filter2D实现线性滤波器
- opencv学习(三十)之设计线性滤波器filter2D
- 自定义线性滤波器
- filter2D
- (24)Air Band OpenCV2.4.13_自定义线性滤波器
- opencv-线性滤波器filer2D
- opencv 线性滤波器
- 【转载】线性相位滤波器
- 实现自己的线性滤波器
- 实现自己的线性滤波器
- 使用OpenCV中的几种线性滤波器对图像平滑处理
- 线性表LinearList的创建与使用
- 线性顺序表的创建与使用
- opencv filter2D
- filter2D函数
- filter2D function
- Javascript模块化编程(二):AMD规范
- Linux守护进程
- 关于C语言中二级指针的理解
- js中获取 <%=request.getContextPath()%>
- 清除android程序中的多余资源
- 使用filter2D创建自定义线性滤波器
- JAVA NIO 简介
- 【从头开始写操作系统系列】环境搭建以及第一个Hello World
- 360网盘资料如何存放到隐形云中
- g++的编译及调试
- EL表达式里面fn的用法
- APM,云时代的应用性能优化神器
- Javascript模块化编程(三):require.js的用法
- 4种任务调度java实现