CMT跟踪算法学习笔记(一)

本文深入探讨了一种算法的各个流程与关键组件,包括前景和背景特征点的获取、跟踪、匹配、融合等步骤。详细分析了初始化、跟踪、全局匹配、局部匹配等过程,以及如何使用聚类方法来确定框内点的中心。提供了实现关键点跟踪和匹配的策略,包括前向光流法、knnMatch匹配和融合不同匹配结果的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       关于这个算法,已经有网友写出笔记。

       这位网友用画图的方式总结出了算法的各个流程,并总结了源码中的各个类:http://blog.youkuaiyun.com/roamer_nuptgczx/article/details/47953357#plain

       这篇博文分析了聚类算法:http://blog.youkuaiyun.com/simplelove17/article/details/45116177

       这位博主写了四篇博文来分析:http://blog.youkuaiyun.com/songrotek/article/details/47662617

                                              http://blog.youkuaiyun.com/songrotek/article/details/47775131

                                              http://blog.youkuaiyun.com/songrotek/article/details/47830463

                                              http://blog.youkuaiyun.com/songrotek/article/details/48022597

 

     这个算法尤其是理论方面,看完后还是有很多不理解,但我想记录下自己能够得到那些启发,这就够了。

     在CMT::initialize这个函数中:(1)如何得到前景特征点和背景特征点。(2)为了更好的跟踪,计算特征点的相对中心位置(这个可用于尺寸变化,如何用还不知道)。

还有一点很重要的是,给每个特征点一个编号。实际上,背景点的编号都是-1,前景点顺序编号,这在以后的匹配跟踪融合中都会用到。

     在track中,根据前后向光流法得到跟踪到的关键点(可在其他跟踪法中试试这种方法)。

     在matchGlobal中,关键点的全局匹配,将当前帧中检测器得到的所有关键点的特征描述与database进行knnMatch匹配(k=2),

每个特征描述子在database寻找最佳的2个匹配结果,并把不符条件的特征点排除。(这个也可以与其他特征结合)

      在preferFirst中,融合跟踪和匹配到的点(这个也可以试,不过可能计算量会较大)。

     用融合后的点来做旋转和缩放评估,为什么能这样做还不能理解。

     在findConsensus中,用聚类的方法来得框内点的中心(还不理解)

     在matchLocal中,比较当前帧中检测得到的每一个关键点与第一帧中经过旋转和尺度变换之后的所有前景关键点之间的欧氏距离,小于阈值20则该前景关键点是有

可能匹配上的,将这些可能的前景关键点构造成一个特征描述库database_potential; 将当前帧中检测得到的每一个关键点的特征描述与database_potential进行knnMatch匹配,

每个特征描述子在database_potential寻找最佳的2个匹配结果,排除不稳定的关键点的策略与matchGlobal类似。

     再一次融合,将局部匹配的特征点与框内关键点融合,得到最终的关键点。

转载于:https://www.cnblogs.com/573177885qq/p/4768825.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值