我想识别手写形状并确定它可能在集合中属于哪种形状。简单来说,如果我画一个三角形,应用程序应该将其识别为三角形。
如何使用C#或Java实现这个功能,任何帮助都将不胜感激。
提前感谢。
这些是我需要识别的一些形状:
如何使用C#或Java实现这个功能,任何帮助都将不胜感激。
提前感谢。
这些是我需要识别的一些形状:
形状识别的研究领域确实非常广泛。
如果您的形状确实有些可预测并且是基本几何图形,
最直接的方法是找到边缘并应用霍夫变换。
以下是一些适合您入门的阅读材料, [1] Google学术搜索霍夫变换形状检测 http://scholar.google.com/scholar?q=hough+transform+shape+recognition&hl=en&as_sdt=0&as_vis=1&oi=scholart [2] 维基百科上的霍夫变换 http://en.wikipedia.org/wiki/Hough_transform
如果你正在寻找一个大图像中的特定形状,那么OpenCV是一个很好的选择。Emgu.CV是它的一个不错的.Net封装。可以参考我实现SURF算法的图片。同时也可以看看OpenCV中的其他选项,它有很多提供。需要注意的是,这种方法需要大量的处理能力。
如果您可以轻松地将您想要的形状识别为BLOB(即,仅给算法一个此形状的图片),则可以搜索“ANN OCR”(“人工神经网络”和“光学字符识别”)。许多(大多数?)ANN实现都附带有用于提供形状(字母)并识别最接近形状(手写字母)的示例代码。例如神经网络OCR。我相信这种方法可以解决您的问题。(旁注:我遇到并测试了许多可以做到这一点的库。这是神经网络101。)
如果您需要ANN-OCR OpenCV的BLOB算法,则可以提供此功能。
这两种方法都相当容易实现。