4

我目前正在使用 OpenCV 开发计算机视觉应用程序。该应用涉及目标识别和特征确定。一般来说,我会让一个目标穿过可见区域,然后在几秒钟内慢慢地穿过它。这应该让我能够从相机中找到超过 50-60 帧的目标。

我们已经使用 SWT 和 OCR 成功实现了检测算法(目标都有字母数字标识符,这使得它们相对容易被挑选出来)。我想要做的是尽可能多地使用来自每个目标的所有 50-60 次射击的数据。为此,我需要某种方法来识别图像 2 的特定 ROI 包含与图像 1 中的另一个 ROI 相同的目标。

我想从以前可能遇到过这个问题的任何人那里得到一点建议。如何在合理的误差范围内轻松/快速地识别 ROI #2 与 ROI#1 具有相同的目标?我的第一直觉是这样的:

  1. 检测第一帧中的目标。
  2. 计算第 1 帧中每个目标的某些独特特征。保存。
  3. 获取第 2 帧。
  4. 立即寻找与第 2 步中计算的 ROI 具有相同特征的 ROI。抓住这些并将它们发送到生产线上进行进一步处理,跳过第 5 步。
  5. 在第 2 帧中检测新目标。
  6. 将目标传递给线程以计算形状、颜色、GPS 坐标等。
  7. 起泡,冲洗,重复。

我认为 SURF 或 SIFT 功能可能是实现此目的的一种方式,但我担心由于失真或颜色褪色,它们可能无法在帧与帧之间识别相同的目标。我不知道如何设置 SIFT/SURF 特征的阈值。

提前感谢您对此事的任何启发。

4

1 回答 1

2

您可以做的一件事是局部均衡亮度和可能的饱和度。如果您没有使用 YCrCb 或 HSV 等高级空间,我建议您尝试一下。

你能假设物体没有移动得太快吗?如果您在检测例程中输入先前的位置,您可以减小您正在查看的窗口的大小。速度和运动方向也是如此。

我已经成功地使用了区域的直方图组合和形状描述符来可靠地检测它,您可以使用它或将其添加到 SURF/SIFT 分类器中。

于 2013-04-05T12:49:24.690 回答