从NMS谈起——什么是好的特征

特征的评价

提取特征时我们往往先提取关键点,再提取描述符。前者决定了我们用哪些点来代表一幅图像,后者决定了我们如何描述图像的内容。相应的,对于关键点和描述符都有不同的评价标准。

抛开对于速度和存储性能,对于描述符,我们有很清楚的评价标准:即在不同的视角和成像条件下,对应点对的描述符尽量相似,非对应点对的描述符尽量不同。对于关键点,则没有这么简单。

我们使用一副图像中的某些点(或者patch)来代表整张图像,因此对于关键点,我们希望它有明确的几何意义,因此现在使用的关键点往往是角点或者斑点。对于同一场景,我们希望提取的特征不随着视角和环境变化而大幅度变动,这实际上是希望关键点具有较好的可重复性。为了量化可重复性,我们对于同一场景在不同情况下得到的两张图片,提取相同数目的关键点,统计对应的关键点点对占总的关键点数量的比例。

关键点的空间分布

实际使用时,我们提取的关键点往往是有限的。因此如何选择关键点的分布就是一件很重要的事情。

不管是从提高可重复性的角度来说,还是从更好的代表图像语义的角度来说,我们都希望关键点能以某种方式均匀的分布在整幅图像上。

现有的关键点提取方法往往会对于整张图像计算一个关键点的响应度,由于图像局部性的存在,相邻的像素往往会有较为相似的响应度。如果只是简单的按照相似度从大到小的方法排序来取前M个点,将会导致按照响应度进行排序可能会导致关键点聚集在一起,如图,提取出来的点是一簇一簇的
TOPM

非极大值抑制

为解决这一问题,一个常用的方法是非极大值抑制算法(Non-Maximum Suppression,NMS)。它的原理是是对于每个邻近的区域中,只保留响应度最高的关键点,而丢弃其他的关键点。事实上为了避免出现上面的特征点聚集的情况,目前opencv中提取各种特征的算法默认进行了3*3的NMS,实现上也很简单,只需要从响应度最高的点开始,丢弃它的8-邻近区域的特征点,然后依次访问剩下的点就可以了。

使用3*3的NMS提取特征得到的结果如下:
NMS

可以看到,这种方法可以在缓解上面提到的特征点一簇一簇出现的情况,在提取相同数目的情况下更多的点落在了之前无法兼顾的区域,但是依然不能不能保证关键点均匀的分布在整张图像上。此外,使用一个人工规定的固定大小的窗口来进行NMS也并不是一个最优的方法:一方面不同场景,不同分辨率的图像需要的窗口时不一样的,另一方面即使对于同一张图像,不同的局部也需要使用不同的窗口来获得最优的分布。以上图为例,增加NMS的窗口可能可以保证特征的分布更加稀疏,但却可能导致一些应该提取出来的点被屏蔽掉。

这里讲了NMS在特征点提取中的应用,实际上目标检测的领域也常常用到NMS的方法来去掉重复的检测框。虽然具体实现上有差异,思想其实是一致的。

Bucketing

另一种尝试是使用Bucketing的方法来进行特征的均匀化,著名的SLAM算法ORB-SLAM 即是使用这种方法。它所用到的数据结构比较复杂,这里不多赘述。简单来说,它将一张图像分割成许多小格子,然后对每个格子中的图像提取一定数目的关键点。使用ORB-SLAM的ORB特征提取的关键点如下图所示:
可以看到,比起NMS,这种方法可以缓解特征点在全部聚集在某个局部的情况,但是对于每个局部,还是会出现特征点聚集的情况,这一点与NMS刚好相反。另一方面,Bucketing的过程还是需要手动设置格子的大小和阈值,因此也不是最优的算法。
Bucketing

Reference

  1. Balntas V, Lenc K, Vedaldi A, et al. HPatches: A benchmark and evaluation of handcrafted and learned local descriptors[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 5173-5182.
  2. Mur-Artal R, Montiel J M M, Tardos J D. ORB-SLAM: a versatile and accurate monocular SLAM system[J]. IEEE transactions on robotics, 2015, 31(5): 1147-1163.
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值