【发布时间】: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