Android中最快的移动物体识别和跟踪

时间:2014-03-21 11:21:14

标签: android opencv image-processing augmented-reality object-recognition

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

1。 OpenCV的

2。 BoofCv

第3。 FastCv

我已经尝试过TLD算法来跟踪对象,跟踪成功但是性能确实需要提高。如果对象移动得更快,则结果需要时间,因为算法需要处理时间。我也尝试过使用boofcv的循环,平均移位算法。

检查这些演示:

OpenTLD using FastCv

Boofcv Demonstration

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

我可以使用以下方案更快地完成此操作,

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

  2. 拍摄相机帧并将其转换为r,g,b矩阵,并在相机框架中搜索跟踪的物体矩阵。

  3. 有没有更好的方法呢?

2 个答案:

答案 0 :(得分:3)

我建议使用灰度而不是RGB,就像通常在图像处理中一样,你的计算方式减少到1矩阵而不是3。

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

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

您还可以做的是根据先前的对象位置将处理的图像尺寸缩小到较小的窗口,您可以估计下一个位置并将其限制为某个vecinity并仅处理图像的那些位。简而言之,只在图像的某个部分执行光流(使用灰度)。

答案 1 :(得分:2)

我认为 SIFT SURF 算法最适合此目的。 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了解更多信息。当然,您可以找到解决方案。继续尝试。