使用OpenCV检测写在白板上的符号

使用OpenCV检测写在白板上的符号,opencv,image-processing,hough-transform,haar-classifier,canny-operator,Opencv,Image Processing,Hough Transform,Haar Classifier,Canny Operator,我正在尝试检测用黑/蓝/红/绿标记写在白板上的形状。形状可以是圆、矩形或三角形。图片可以在这篇文章的底部找到 我使用OpenCV作为图像识别的框架 我的第一项任务是研究并列出可用于检测的不同策略。到目前为止,我发现了以下几点: 1) 灰度、模糊、Canny边缘、轮廓检测,然后确定检测到的轮廓是否为形状的逻辑 2) 具有不同形状特征的Haar训练 3) 支持向量机分类 4) 灰度、模糊、Canny边缘、Hough变换和某种颜色分割 有没有其他我错过的策略?有更新的文章或测试过的方法吗?你会怎么做

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

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

我的第一项任务是研究并列出可用于检测的不同策略。到目前为止,我发现了以下几点:

1) 灰度、模糊、Canny边缘、轮廓检测,然后确定检测到的轮廓是否为形状的逻辑

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

3) 支持向量机分类

4) 灰度、模糊、Canny边缘、Hough变换和某种颜色分割

有没有其他我错过的策略?有更新的文章或测试过的方法吗?你会怎么做

测试图片之一:

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

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

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


如果你想尝试一种更具挑战性但更现代的方法,请考虑深度学习方法(我将从美国有线电视新闻网开始)。internet上有许多可用的实现。虽然对于这个特定的项目来说,这可能是一个过分的做法,但它可能会在将来帮助您……

看一看,而且我认为我现在最大的问题是白板并不总是白色的。即使在我应用了一些模糊效果后,也可能会有反射、旧图形(未完全擦除)和一般噪音。现在最好的结果是模糊、精明的边缘、近变形、轮廓,然后是丢弃无效轮廓的逻辑。我会调查CNN。您是否有一些教程/hello world示例可供我开始使用?在这里您将找到大量有用的信息:。在python中,您有两个很棒的库(keras和lasagne),它们实现了不同的深度学习方法。如果可以,请上传示例图像。我已将图像链接添加到帖子()。我想检测两个矩形和圆。如果检测到机顶盒也可以。标记颜色只能是红色、绿色、蓝色或黑色。如果你考虑到这一点,你将能够摆脱反射和阴影。为什么不将图像的每个颜色通道与灰色图像分开设置阈值,并结合结果呢。这样,您应该只剩下红色、绿色、蓝色和黑色文本,并带有一些轻微的附加效果。接下来是扩张、标记和分类。