【问题标题】:Detect symbols written on a whiteboard using OpenCV使用 OpenCV 检测写在白板上的符号
【发布时间】:2017-01-30 16:54:18
【问题描述】:

我正在尝试使用黑色/蓝色/红色/绿色标记检测写在白板上的形状。形状可以是圆形、矩形或三角形。图片可以在这篇文章的底部找到。

我使用 OpenCV 作为图像识别的框架。

我的首要任务是研究并列出可用于检测的不同策略。到目前为止,我发现了以下内容:

1) 灰度、模糊、Canny Edge、轮廓检测,然后一些逻辑来确定检测到的轮廓是否为形状?

2) 具有不同形状特征的 Haar 训练

3) SVM 分类

4) 灰度、模糊、Canny Edge、霍夫变换和某种颜色分割?

还有其他我错过的策略吗?任何较新的文章或经过测试的方法?你会怎么做?

其中一张测试图:https://drive.google.com/file/d/0B6Fm7aj1SzBlZWJFZm04czlmWWc/view?usp=sharing

更新: 第一种策略似乎效果最好,但远非完美。当盒子没有关闭,或者白板有很多噪音时,就会出现问题。 Haar 训练似乎不是很有效,因为检测的形状很简单,没有很多特定的特征。我还没有尝试过 CNN,但它似乎最适合图像分类,而不是检测较大图像中的形状(但我不确定)

【问题讨论】:

标签: opencv image-processing hough-transform haar-classifier canny-operator


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 我认为我现在最大的问题是白板并不总是白色的。即使在我应用了一些模糊效果后,仍可能存在反射、旧图纸(未完全擦除)和一般噪声。现在最好的结果是模糊、精巧的边缘、紧密的变形、轮廓,然后是一些逻辑来丢弃无效的轮廓。我会调查CNN。你有一些我可以用来入门的教程/hello world 示例吗?
  • 在这里您会找到大量有用的信息:github.com/ChristosChristofidis/awesome-deep-learning。在 Python 中,您有两个很棒的库(keras 和 lasagne),它们实现了不同的深度学习方法。
  • 如果可以,请上传示例图片。
  • 我已将图片链接添加到帖子 (drive.google.com/file/d/0B6Fm7aj1SzBlZWJFZm04czlmWWc/…)。我想去除两个矩形和圆形。如果也检测到顶盒就可以了。
  • 标记颜色只能是红色、绿色、蓝色或黑色。如果您考虑到这一点,您将能够摆脱反射和阴影。为什么不单独将图像的每个颜色通道与灰度图像分开阈值并结合结果。这样,您应该只剩下红色、绿色、蓝色和黑色文本,并带有一些小的附加效果。下一个膨胀、标记和分类。
猜你喜欢
  • 1970-01-01
  • 2021-07-03
  • 1970-01-01
  • 2012-04-10
  • 1970-01-01
  • 1970-01-01
  • 2014-05-13
  • 1970-01-01
  • 2017-12-02
相关资源
最近更新 更多