9

基本上,我想检测一个对象,然后在视频中(逐帧)跟踪它。

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

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

4

4 回答 4

8

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

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

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

于 2012-07-17T11:23:50.177 回答
5

检测和跟踪视频中的对象是一个非常大的话题,具体方法取决于您的应用程序。没有灵丹妙药!如果您实现了检测部分,如果您需要跟踪的对象是彩色的,您可以尝试通过颜色(可能是 HSV 颜色空间)可能性的均值偏移进行跟踪,或者尝试模板匹配,或者..您需要更具体地了解您的需要。

于 2012-07-16T23:07:02.073 回答
4

您可以使用 OpticalFlow 进行简单跟踪,以下是执行此操作的步骤...

  1. 使用哈里斯角检测器或 SIFT 特征检测器查找移动物体的角。

  2. 将这些角和上一个图像(您在其中找到要跟踪的对象的角)和下一个图像提供给光流函数,它将计算下一个图像中同一对象的角..

以下是链接:

链接1

链接2

代码

注意:如果您要解决遮挡处理、多人跟踪等问题,那么光流本身无法解决问题。为此,需要使用卡尔曼滤波器或粒子滤波器......

于 2012-08-03T18:19:04.083 回答
0

您可以使用 TLD 或 CLM 实现几乎完美的实时跟踪。一旦您检测到感兴趣的对象,使用该边界框来启动捕食者跟踪。你可以在这里找到关于 CMT https://www.gnebehay.com/cmt/

和这里的顶级域名 https://www.gnebehay.com/tld/

于 2017-05-01T18:42:42.503 回答