使用OpenCV检测白板上的符号

4
我正在尝试使用黑色/蓝色/红色/绿色标记笔在白板上检测形状。这些形状可以是圆、矩形或三角形。图像可以在本文底部找到。
我使用OpenCV作为图像识别的框架。
我的第一个任务是研究和列出可用于检测的不同策略。到目前为止,我已经发现以下内容:
1)灰度化、模糊、Canny边缘检测、轮廓检测,然后使用一些逻辑来确定检测到的轮廓是否为形状?
2)Haar训练使用不同的特征来识别形状
3)SVM分类
4)灰度化、模糊、Canny边缘检测、霍夫变换,以及某种颜色分割?
还有其他我错过的策略吗?有没有更新的文章或测试过的方法?您会如何做?
其中一张测试图片:https://drive.google.com/file/d/0B6Fm7aj1SzBlZWJFZm04czlmWWc/view?usp=sharing 更新: 第一种策略似乎效果最好,但仍存在不完美的问题。当方框没有闭合时,或者白板上有很多噪点时会出现问题。Haar训练似乎不是很有效,因为要检测的形状很简单,没有太多特定的特征。我还没有尝试CNN,但它似乎最适合于图像分类,而不适合在较大的图像中检测形状(但我不确定)。

1个回答

1

我认为第一个选项应该可行。您可以使用傅里叶描述符来对分割的形状进行分类。

http://www.isy.liu.se/cvl/edu/TSBB08/lectures/DBgrkX1.pdf

还有,也许你可以在这里找到一些有用的东西:

http://www.pyimagesearch.com/2016/02/08/opencv-shape-detection/

如果你想尝试更具挑战性但现代化的方法,请考虑深度学习方法(我会从CNN开始)。互联网上有许多实现可用。虽然对于这个特定项目来说可能有些过度,但它可能在将来对你有所帮助...


我认为我现在最大的问题是白板并不总是白色的。可能会有反射、旧图案(没有完全擦除)和一般噪音,即使我应用了一些模糊效果后仍然存在。目前最好的结果是通过模糊、边缘检测、闭形态学、轮廓,然后一些逻辑来丢弃无效的轮廓。我将研究卷积神经网络。你有一些教程/入门示例可以让我开始使用吗? - MortenGR
在这里,您将找到大量有用的信息:https://github.com/ChristosChristofidis/awesome-deep-learning。在Python中,您有两个出色的库(Keras和Lasagne),它们实现了不同的深度学习方法。 - GpG
如果可以,请上传示例图像。Translated Text: 如果可以,请上传示例图像。 - GpG
我已经将图片链接添加到帖子中(https://drive.google.com/file/d/0B6Fm7aj1SzBlZWJFZm04czlmWWc/view?usp=sharing)。我想要检测出两个矩形和一个圆形。如果顶部的框也被检测到,那也没关系。 - MortenGR
我在过滤颜色方面取得了很少的成功。我的滤镜一直留下明亮的白色痕迹,导致出现虚假的边缘/轮廓。另一方面,使用凸包似乎非常有前途。现在的挑战是有时正方形和箭头被认为是一个单独的形状。我将创建一个单独的问题来解决这个问题 :) - MortenGR
显示剩余4条评论

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