【问题标题】:Fastest moving object recognition and tracking in AndroidAndroid 中最快的移动物体识别和跟踪
【发布时间】:2014-04-28 17:45:12
【问题描述】:

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

1. Opencv

2。 BoofCv

3. FastCv

我尝试过TLD算法来跟踪对象,跟踪成功,但性能确实需要提高。如果对象移动得更快,则结果需要时间,因为算法需要处理时间。我还尝试过使用 boofcv 进行循环、均值偏移的算法。

查看这些演示:

OpenTLD using FastCv

Boofcv Demonstration

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

我可以使用以下场景来更快地做到这一点,

  1. 提取待跟踪物体的r,g,b矩阵

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

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

【问题讨论】:

  • 我在 OpenCv 中找到了模板匹配算法。 stackoverflow.com/questions/17001083/….
  • 你得到了什么FPS,你需要什么?它很难比均值偏移运行得更快,而且均值偏移对于通用跟踪可能不够健壮。
  • 我的速度在 9 到 11 Fps 左右。
  • @Sujith 你找到解决办法了吗?

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


【解决方案1】:

我认为 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 了解更多信息。当然,您的方式可能是为此找到解决方案。继续努力。

【讨论】:

  • 它们只能用于在对象在视觉上相当大的情况下跟踪对象。例如,所有这些检测器/描述符都将无法跟踪一个玩红球的人。在这种情况下,很可能最多会找到一个兴趣点(缺乏纹理),并且不会持续触发。基本上,对象需要足够大以创建许多兴趣点,这样即使有一些失败,它仍然可以工作。
【解决方案2】:

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

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

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

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

【讨论】:

  • 根据我的经验,如果您要进行直方图跟踪,颜色信息非常重要。除非您有特殊情况,例如具有深色背景的明亮物体。使用灰度时,太多的物体看起来很相似,并且轨道往往会随机地将自己附加到其他物体上。
  • 好吧,大多数图像处理算法和技术都是在灰度下工作的,而且大多数时候它足以解决大多数问题。许多医学图像处理是以灰度完成的,如果您足够小心并使用某些技术,您可以识别非常复杂的对象或形式。这真的取决于你在做什么,这就是为什么我说“只在需要时使用 rgb”。需要颜色信息并不意味着您必须在整个过程中使用 RGB。
猜你喜欢
  • 2020-06-20
  • 1970-01-01
  • 1970-01-01
  • 2014-05-22
  • 1970-01-01
  • 2015-01-12
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
相关资源
最近更新 更多