9

我正在开发一个增强现实游戏,它需要识别和跟踪快速移动的物体。我尝试了以下图像处理库,

1.OpenCV

2. BoofCv

3. 快速简历

我已经尝试过 TLD 算法来跟踪对象,跟踪是成功的,但性能确实需要改进。如果对象移动得更快,则结果需要时间,因为算法需要处理时间。我还尝试了带有 boofcv 的循环、均值偏移等算法。

检查这些演示:

使用 FastCv 的 OpenTLD

Boofcv 演示

这两个演示中的对象跟踪似乎很好,但计算需要时间。

我可以使用以下方案更快地做到这一点,

  1. 提取待跟踪对象的 r,g,b 矩阵

  2. 获取相机帧并将其转换为 ar,g,b 矩阵并在相机帧中搜索跟踪的对象矩阵。

有没有更好的方法来做到这一点?

4

2 回答 2

4

我建议使用灰度而不是 RGB,就像通常在图像处理中完成的那样,您的计算减少到 1 个矩阵而不是 3 个。

如果您需要检查颜色,只需在需要时使用 rgb,而不是在整个计算过程中使用。

跟踪快速移动的物体总是很困难。尝试使用每秒可以拍摄更多帧的相机,尽管您需要处理更多图像并且我想您在移动设备上

此外,您可以做的是根据先前的对象位置将正在处理的图像大小减小到更小的窗口,您可以估计下一个位置并将其限制在一定的速度,并且只处理图像的那些位。简而言之,仅在图像的某些部分执行光流(使用灰度)。

于 2014-03-22T13:46:43.393 回答
2

我认为SIFTSURF算法最适合这个目的。SIFT 或 SURF 可以像任何其他特征检测器和提取器一样使用:

FeatureDetector detector = FeatureDetector.create(FeatureDetector.ORB); 
// May be SIFT,   SURF, etc 
detector.detect(mat, keypoints); 
DescriptorExtractor extractor =     DescriptorExtractor.create(DescriptorExtractor.ORB); 
// May be SIFT, SURF, etc 
extractor.compute(mat, keypoints, features);

使用 openCv 了解更多信息。当然,您的方式可能是为此找到解决方案。继续尝试。

于 2014-03-24T05:36:24.927 回答