3

我有一个应用程序,我想一次跟踪图片中相当小的 2 个对象。这个应用程序应该在 Android 和 iPhone 上运行,所以算法应该是高效的。

对于我的客户来说,如果我们提供一些模式以及附加到要跟踪的对象的软件以具有可识别的目标,那是非常好的。

这意味着我可以自己制作一个图案。由于我对图像处理还不是很了解,所以我不知道图片中哪些对象最容易识别,即使它们很小。颜色也是可能的,尽管由于产生的开销而不希望单独处理多个平面。

谢谢你的建议!!最好的,

吉他流

4

2 回答 2

5

如果我明白这一点,您的对象应该:

  1. 可在 A4 上打印
  2. 可识别达 4 米
  3. 旋转不变性并不那么重要(我假设用户将手机+/-直立)

我建议打印一个大的棋盘并结合使用颜色匹配和角点检测。尝试不同的组合,看看在不同距离下哪种组合更快、更健壮。

颜色:如果您只想在一个通道上工作,您可以打印红色/绿色/蓝色*,然后只在相应的通道上工作。这已经会过滤很多并“免费”增加对比度。否则,根据我的经验,直方图反投影非常快。见这里

另外,假设您只有 4 个带有 RGB+黑色的正方形(见图),很容易得到所有红色轮廓,然后检查它是否具有正确的相邻颜色:右边的一块蓝色和一块绿色在它下面,两者的面积大致相同。仅此一项可能就足够强大了,并且相当于在 1 个通道上工作,因为对于每个步骤,您只访问一个特定通道(搜索红色轮廓,蓝色检查,绿色检查下方)。

RGB 方块

如果您收到大量误报,则可以使用角点来过滤您的命中。在示例图像中,您已经有 9 个角,如果您将通道分开,实际上会更多,如果还不够,您可以制作一个真正的棋盘,其中包含多个正方形,以便拥有更多角。检查在 ROI 中检测到多少个角以拒绝误报可能就足够了,否则您还可以检查在 x 和 y 方向上检测到的角之间的间距是否均匀(即形成网格)。

角点:检测角点已经得到了很大的探索,这里有几种方法。我不知道每个的效率如何,但它们足够快,并且在您根据颜色减少了 ROI 之后,这应该不是问题。也许最简单的方法是简单地用十字腐蚀/扩张来找到角落。见这里。您需要首先对图像设置阈值以创建二进制地图,可能基于上面提到的颜色。其他角检测器,例如 Harris 检测器,有据可查

哦,我不建议使用 Haar 分类器。似乎不必要地复杂且速度不快(尽管对于复杂对象非常健壮:即如果您不能使用自己的模式),更不用说大量的训练工作了。

于 2012-04-11T06:45:50.337 回答
1

哈尔培训是您的朋友。

本教程应该可以帮助您入门: http: //note.sonots.com/SciSoftware/haartraining.html

基本上,您根据样本图像(大约 2000 个要跟踪的对象)训练称为分类器的东西。OpenCV 已经拥有在库中构建这些分类器和函数以检测对象所需的工具。

于 2012-04-10T12:04:12.053 回答