我是靠谱客的博主 俊逸乐曲,最近开发中收集的这篇文章主要介绍OpenCV filter2D和sepFilter2D (任意线型滤波器和分解卷积核)1. 函数定义2. 生成卷积核,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
::返回OpenCV算子速查表
filter2D和sepFilter2D
- 1. 函数定义
- 1.1 filter2D
- 1.2 sepFilter2D
- 1.3 分解卷积核的好处
- 2. 生成卷积核
1. 函数定义
1.1 filter2D
OpenCV官方文档filter2D
- 图像与内核的卷积。
- 函数在图像上应用任意线型滤波器。
- 支持就地调用
void filter2D(
InputArray src,
OutputArray dst,
int ddepth,
InputArray kernel,
Point anchor = Point(-1, -1),
double delta = 0,
int borderType = BORDER_DEFAULT
);
- kernel:卷积核,作用于单通道浮点矩阵;如果你想处理多通道图像,不同通道使用不同的滤波器,那么就要先拆通道,然后分别处理。
- **anchor **:锚点位置,(-1,-1)表示锚点在核的中心。
- delta:偏移量。
1.2 sepFilter2D
OpenCV官方文档sepFilter2D
- 使用可分离线性滤波器处理图像
void sepFilter2D(
InputArray src,
OutputArray dst,
int ddepth,
InputArray kernelX,
InputArray kernelY,
Point anchor = Point(-1, -1),
double delta = 0,
int borderType = BORDER_DEFAULT
);
- kernelX,kernelY:函数使用的是可分离线性滤波器,也就是说行和列使用的核是不同的,它们都是一维矩阵。
- delta:偏移量。
- 其余参数和filter2D是一样的。
1.3 分解卷积核的好处
- 一个可分核可以理解成两个一维核,在卷积时先调用x内核,然后调用y内核。两个矩阵进行卷积所产生的消耗可以用两个矩阵的面积的积来估算,如此一来,用n×n的核对面积为A的图像进行卷积所需的时间是An2,但如果分解成 n×1 和 1×n 的两个核,那么代价就是 An +An = 2An ,因此分解卷积核可以提高卷积计算的效率。
- 只要n不小于3,这种计算方式就能提高效率,并且随着n的增大,这种效益愈发明显。
2. 生成卷积核
生成导数核getDerivKernel 生成高斯核getGaussianKernel
- 导数滤波器 Sobel 和 Scharr 所使用的核称为导数核,可以由 getDerivKernels() 生成。
- 高斯模糊算子GaussianBlur所使用的高斯核可以由 getGaussianKernel() 生成。
- 方框型滤波器(blur、boxFilter)还有中值模糊(medianBlur),它们使用的卷积核都是二维矩阵,所以可以使用 fiter2D 替代。而它们所使用的卷积核需要你自己构造。
- 形态学morphologyEx所使用的核是由 getStructuringElement() 生成的。
最后
以上就是俊逸乐曲为你收集整理的OpenCV filter2D和sepFilter2D (任意线型滤波器和分解卷积核)1. 函数定义2. 生成卷积核的全部内容,希望文章能够帮你解决OpenCV filter2D和sepFilter2D (任意线型滤波器和分解卷积核)1. 函数定义2. 生成卷积核所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复