android – 使用OpenCV识别的完美对象
作者:互联网
我有一个应用程序,我想一次跟踪2个对象,在图片中相当小.
此应用程序应该在Android和iPhone上运行,因此算法应该是高效的.
对于我的客户来说,如果我们提供一些模式以及附加到要跟踪的对象的软件以获得一个可识别的目标,那就完美了.
这意味着我可以自己制作一个模式.
由于我对图像处理的影响不大,我不知道哪些对象在图片中最容易识别,即使它们相当小.
尽管由于产生的开销而不希望单独处理多个平面,但颜色也是可能的.
谢谢你的任何建议!!
最好,
guitarflow
解决方法:
如果我直截了当,你的对象应该:
>可在A4上打印
>可识别长达4米
>旋转不变性不是那么重要(我假设用户将握住手机/ – 直立)
我建议打印一个大的检查板,并使用颜色匹配和角点检测的组合.尝试不同的组合,看看在不同的距离上哪些更快,更强大.
颜色:如果您只想在一个通道上工作,则可以打印红色/绿色/蓝色*,然后仅在相应的通道上工作.这已经过滤了很多并且“免费”增加对比度.
否则,直方图反投影在我的经验中非常快.见here.
另外,假设您只有4个RGB黑色正方形(见图),很容易得到所有红色轮廓,然后检查它是否有正确的相邻颜色:右边是一块蓝色,下面是一片绿色它,两者大致相同的区域.仅此一项可能足够强大,相当于在1个通道上工作,因为对于每个步骤,您只访问一个特定通道(以红色搜索轮廓,以蓝色检查,在下面以绿色检查).
如果你得到很多误报,你可以使用角来过滤你的命中.在示例图像中,您已经有9个角,实际上如果分开通道则更多,如果不够,您可以创建一个具有多个正方形的真正棋盘以获得更多角.检查在ROI中检测到多少个角以便拒绝误报可能就足够了,否则您还可以检查在x和y方向上检测到的角之间的间距是否均匀(即形成网格).
角落:探测角落已被大量探索,这里有几种方法.我不知道每个人的效率如何,但它们足够快,在你根据颜色降低ROI之后,这应该不是问题.
也许最简单的方法是用十字架进行腐蚀/扩张以找到角落.见here.
您需要首先阈值图像以创建二进制地图,可能基于上面的metnioned颜色.
其他角落探测器如Harris探测器也很好documented.
哦,我不建议使用哈尔分类器.看似不必要的复杂而且不那么快(虽然对于复杂的对象非常强大:即如果你不能使用自己的模式),更不用说大量的训练工作了.
标签:object-detection,android,iphone,opencv,pattern-matching 来源: https://codeday.me/bug/20190826/1729791.html