在帧上计算SIFT或ORB后,如何实时跟踪视频中的对象?

dyn*_*mic 8 c++ opencv tracking object-detection

基本上我想检测一个对象,而不是在视频中逐帧跟踪它.

我可以在第一帧上检测到它,例如ORB或SIFT.但对于下一帧(或说下一个XX帧),我想避免再次计算所有关键点(ORB或SIFT)来再次检测它.

考虑到我想在视频中实时跟踪它,我该怎么办?

Jav*_*ock 7

常见的选择是使用补丁程序.这意味着您只需搜索前一帧关键点周围8个像素区域中的关键点.您可以执行cv::matchTemplate()关键点周围的区域,而不是使用SIFT.

执行金字塔搜索有助于提高帧速率.如果找不到比例加倍的关键点,则首先以较低的比例搜索.

如果补丁程序失败,因为图像移动太快,您只需再次应用SIFT重新初始化系统.我会使用FAST而不是SIFT.您可以使用SIFT作为标记,然后使用FAST实时检测关键点,生成SIFT描述符.

  • 但是,由于您将对单应性进行估计,因此您可以投影补丁以使它们旋转和缩放 (2认同)

Eri*_*ric 5

检测和跟踪视频中的对象是一个非常大的主题,并且高度依赖于您的应用程序.没有灵丹妙药!如果您实现了检测部分,您可以尝试通过手段跟踪颜色(可能是HSV颜色空间)可能性,如果您需要跟踪的对象是彩色的..,或尝试模板匹配,或者..您需要更具体的需要.