【问题标题】:Real time logo detection in live camera preview with OpenCV on Android在 Android 上使用 OpenCV 在实时摄像头预览中进行实时徽标检测
【发布时间】:2018-02-07 04:39:29
【问题描述】:

我是计算机视觉的新手,但我正在尝试编写一个执行以下操作的 android 应用程序:

获取实时相机预览并尝试在其中检测一个徽标(我的资源中有徽标)。实时。如果找到,请在徽标周围画一个矩形。如果没有匹配,就不要画矩形。

我已经尝试了一些方法,包括使用 ORB 进行模板匹配和特征检测。

为什么这不起作用:

模板匹配: 缩放和旋转问题。我尝试了它的多尺度变体,但是 a) 性能真的很差 b) 当然总是显示矩形以尝试搜索图像。无法在代码中实际确认是否找到了徽标。

ORB 特征检测: 也很慢(5-6 fps),但效果还不错。另一个问题是,我也永远无法确定徽标是否在图片中。即使徽标不在图片中,ORB 也会找到随机匹配项。

就像我说的,我对此很陌生。我将不胜感激有关实现最佳方式的帮助:

  • 确认图片 A(约 200x200 像素)是否在相机图片(约 600x600 像素)的 ROI 中。

  • 这不应该超过每帧 50 毫秒。我不知道那是否可能。因此,如果执行此操作的正确方法需要更长的时间,我会在单独的线程中完成这项工作,并且只分析每五个相机帧左右。

如果有任何关于如何实现这一点的提示或代码示例,我们将不胜感激。谢谢!

【问题讨论】:

  • 如果您添加测试图像和当前输出,它将帮助我们找到问题!
  • @RickM。我看看今晚能不能做一些。我认为它们对我的情况没有帮助,因为我没有配置/微调问题,但更像是关于什么是实现我所寻找的最佳方法的一般问题。想象一下,我有一张大众汽车标志作为图片,我想要的基本上是确定大众汽车标志是否也在我的相机照片中。相机图像不会很棘手,因为我会让用户知道将徽标放在屏幕上的一个小矩形中。不过,我必须确保相机屏幕上确实是大众汽车的标志。
  • 这些图片仍然有助于确定模板匹配是否可行,以及为什么 ORB 似乎工作正常。要在使用 findHomography 使用 RANSAC 后从 ORB 中查找匹配的质量,您可能需要查看 here
  • @RickM。好的,今晚我将提供图片。 ORB/FAST/BRISK 等对我来说最大的问题是性能。我的应用程序不应该

标签: java android opencv feature-detection template-matching


【解决方案1】:

通过徽标检测,我强烈推荐使用 OpenCV HaarClassifier。很容易从一组标志图像或一张有很多变形的标志图像中生成训练样本。

如果您可以使用一些规则,例如要检测的徽标的最小和最大尺寸,以及图像上可能出现的区域,您可以以比您提到的 ORB 更快的速度运行检测器。

【讨论】:

  • 非常感谢。我实际上已经让它工作了。还不完美,但我到了那里。我有一个后续问题。为了使我的分类器更好,我觉得我需要更多的徽标示例图像。你知道一种快速简单的方法来生成一张图片的随机旋转和扭曲的图片吗?
  • 你尝试过 OpenCV 的样本生成器吗?此处对其进行了描述。 note.sonots.com/SciSoftware/haartraining.html#w0a08ab4
  • 是的,30 分钟前才知道。似乎工作得很好。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
  • 1970-01-01
  • 2012-04-02
相关资源
最近更新 更多