OpenCV学习之PyramidAdaptedFeatureDetector

PyramidAdaptedFeatureDetector简述

  OpenCV源码FeatureDetector类中的函数create()列举了四种创建特征检测初始化方式:Grid、Pyramid、Dynamic、HARRIS、Feature2d+detectorType共4种检测特征方式。其中Grid与Dyamic已经在之前的博客中有过简单的分析与实验验证,HARRIS检测与Feature2D+detectorType属于基础的特征检测方式。下面我们再来看一下最后的Pyramid金字塔方式下的特征点检测。该模块主要针对一些检测算子没有尺度自适应的方式进行设计的,例如Harris、FAST角点检测算子都不具有尺度不变性,所以可以采取PyramidAdaptedFeatureDetector方式进行赋予在多尺度下进行特征提取。简单看一下FeatureDetector类中的create()函数初始化检测方式:

  上述通过输入字符串进行比对来判别采取哪种检测方式,下面我们简单看一下PyramidAdaptedFeatureDetector检测的源码部分。其主要思想就是对输入图像循环进行插值后的图像再次特征检测,最后将所有不同尺度下的图像特征点汇聚在一起输出。首先看一下其类声明里面函数:

简单的初始化方式与输入参数验证是否正确的函数:

PyramidAdaptedFeatureDetector类在构造函数中默认采样层数maxLevel=2即最终生成金字塔为3层。

  上图即为金字塔检测主函数,通过对原始图像进行2倍下采样后进行特征点检测,同时要将下采样后检测的特征点信息(坐标、尺度)归一化到原输入图像的坐标标准下,存储不同尺度下的检测到的特征信息保存输出。

PyramidAdaptedFeatureDetector实战代码


  好了,上述就是调用PyramidAdaptedFeatureDetector类的方式,通过Pyramid+Type类型进行调用。其使用方式同之前博客的Grid、Dyamic一致,就不再阐述了。代码比较简单,当然如果你希望改变检测的金字塔层数,那么你只需直接调用PyramidAdaptedFeatureDetector类函数进行声明初始化即可。

实验对比

ok, 下面让我们简单看一下实验对比结果吧:

  从上述实验结果来看,会出现很多重复的特征点。这些重复的特征点可以说都是在图像多尺度下检测的结果。这样可以来使图像针对缩放变换识别出不变属性,这就是过去20年间流行的尺度空间理论的思想分支之一。人眼观察物体在不同的距离会有不同的大小显示,计算机如何将其检测出来,后来发现图像在大小变换时,高频信息变换比较稳定。例如:图像中的一些特征点在图像经过缩放之后仍然能够检测出来。PyramidAdaptedFeatureDetector类主要功能就是来使某些不具备尺度不变的特征检测算子赋予其尺度不变性(通过尺度归一化方式)。例如:Harris-Laplace相结合使Harris算子具备尺度不变性等。好了,今天就说到这里吧。最后,祝大家端午节日快乐!

如有错误,还请批评指正!

参考

https://opencv.org/

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值