我试图用黑/蓝/红/绿标记检测写在白板上的形状。形状可以是圆形,矩形或三角形。图片可以在这篇文章的底部找到。
我使用OpenCV作为图像识别的框架。
我的首要任务是研究并列出可用于检测的不同策略。到目前为止,我发现了以下内容:
1)灰度,模糊,Canny边缘,轮廓检测,以及确定检测到的轮廓是否为形状的一些逻辑?
2)具有不同形状特征的哈尔训练
3)SVM分类
4)灰度,模糊,Canny Edge,Hough变换和某种颜色分割?
我还有其他任何策略错过了吗?任何新文章或测试方法?你会怎么做?
其中一张测试图片:https://drive.google.com/file/d/0B6Fm7aj1SzBlZWJFZm04czlmWWc/view?usp=sharing
更新: 第一种策略看起来效果最好,但远非完美。当盒子未关闭或白板有很多噪音时会出现问题。哈尔训练似乎不是很有效,因为在没有许多特定功能的情况下检测简单的形状。我还没有尝试过CNN,但它似乎最适合图像分类,而不是检测更大图像中的形状(但我不确定)
答案 0 :(得分:1)
我认为第一个选项应该有效。您可以使用傅里叶描述符来对分段形状进行分类。
http://www.isy.liu.se/cvl/edu/TSBB08/lectures/DBgrkX1.pdf
另外,也许你可以在这里找到有用的东西:
http://www.pyimagesearch.com/2016/02/08/opencv-shape-detection/
如果您想尝试更具挑战性但更现代的方法,请考虑深度学习方法(我将从CNN开始)。互联网上有许多实现。虽然这个特定项目可能有点过头了,但它可能会对你有所帮助......