如何检测PizzaMarker

3
有人尝试过使用“仅”OpenCV找到像这样的披萨标记吗?
我一直在尝试检测这个标记,但是迄今为止没有得到好的结果。我不知道图片中的标记在哪里(无法选择ROI),标记将在房间中某个地方(不同的光照效果)并且不正对着我们。我想要的是 - 提取这个标记的角以及后来用这些角提取标记的定位,但首先只需要5个角(上,下,左,右,中心)。
我到目前为止尝试了阈值、噪声清除、查找轮廓,但都没有真正帮助我得到好的结果。棋盘或方形标记通常因为它们的(平行)线条而被发现 - 我想这不能帮助我...
有什么简单的方法可以找到这些标记吗?你会如何开始?使用其他颜色格式如HSV?
一步一步的想法或教程将非常有帮助。因为我在网上找不到教程。也许这个标记不叫披萨标记 -> 有人知道真实名称吗?
谢谢帮助

你有房间标记的示例图像吗?我知道你特别要求OpenCV解决方案,但如果你愿意使用更通用的算法,你可能会在dsp.stackexchange.com上得到一些很好的回答。 - Chris
4个回答

2
首先,感谢您的帮助。看起来有几种方法是有用的,但有些更费时间。对我而言,使用模板匹配最容易,但标记不完全相同。我只使用了它的一小部分...
这可以在新标记中找到5次(4次负面和一次正面):
现在我只使用了4个最负面的点和最积极的点,得到了我最终想要的5个点。为了更加确定,我检查它们是否彼此靠近,并进行cornerSubPix()。

1

是的,级联模板匹配可能是可行的,但似乎非常具有特殊性。但谢谢 - 如果我找不到更好的方法,我会尝试它。 - user1651460
我今天会尝试这个方法 - 它似乎是在二值(带阈值)图像中找到二进制图像的最佳方法。最佳匹配将给我我的感兴趣区域的中心,然后我会尝试边缘检测。 - user1651460
1
链接已失效。Archive.org链接:https://web.archive.org/web/20120706062114/http://opencv.willowgarage.com/documentation/object_detection.html - Thomas

1

如果您需要实时操作的东西,我建议您选择边缘检测路线,并寻找像这些人所做的那样的相交线。看起来快速且能够适应光照变化。

阅读有关openCV中霍夫线变换的内容以开始工作。

补充:

从黑到白是您可以拥有的最强边缘。如果您创建一个渐变图像并使用场景中发现的最强边缘(通过直方图或其他方式),您将能够将检测限制在仅黑/白边缘上。寻找交叉点。这应该为您提供一小部分中心点,以应用Hough椭圆检测(或其他替代方法)。如果您愿意,还可以旋转模板进行进一步检查。

顺便说一下..如果您选择这条路线,OpenCV具有边缘检测、霍夫变换和FitEllipse功能。


你好 - 感谢您的回答 - 链接并没有完全帮助到我,但它似乎非常有用,我会仔细阅读。霍夫线变换可能是可行的,但由于周围物体的存在,可能会有其他线条。但我也会更加仔细地研究这个问题。无论如何,感谢您的快速回答。如果有更多想法 - 我真的很感激。 - user1651460

1

实际上,这个“pizza”模式是Viola-Jones目标检测框架中使用的haar特征的构建块之一。

所以我要做的就是使用cv::integral(img)计算出总面积表或积分图像,然后在不同的比例尺下(大小相关)对这个模式进行穷举搜索。在每个窗口中,您只使用9个点(左上角,上中心,...,左下角)。


谢谢你的帖子,但我没能理解太多。因为我真的不理解这个框架背后的数学,我尝试了5分钟的积分,但无法弄清楚如何使用它。现在我已经解决了。非常感谢你的帖子。 - user1651460

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接