识别手写形状

问题描述

| 我想识别笔迹形状并弄清楚它可能是哪种形状。简而言之,如果我绘制一个三角形,应用程序应将其识别为三角形。 我该如何使用C#或Java做到这一点,我们将提供任何帮助。 提前致谢。 这些是我需要识别的一些形状     

解决方法

您可以尝试使用OpenCV。 EmguCV是OpenCV for .net的很好的包装。观看ShapeDetection演示(包含在OpenCV中)     ,如果您想“自己动手”,建议采取以下步骤: 首先,进行骨架化(对图像进行细化处理,直到所有线条都变成一个像素厚)。有很多方法可以做到这一点,这是一个经过充分研究的问题。谷歌获取更多信息。 现在,从一个黑色像素开始,遍历并描绘出图像的轮廓,一次绘制一个像素。您可以将这些分段中的每一个添加到概述形状的分段列表中(每个分段都是一条从一个像素到其相邻像素的简单线)。现在,您的形状轮廓为多面多边形。 (此时可能采取的步骤:通过将每个顶点拉近其邻居的平均值来平滑轮廓) 现在,您使用拐角检测算法来找到拐角(在此处查看:http://visual.ipan.sztaki.hu/corner/node7.html)。 这应该足以识别您列出的形状。 如果要变得更聪明,还可以确定角之间存在的边的类型。如果两个角之间的线段保持在它们之间的直线的某个阈值内,则将其视为“直线”边缘。如果不是,则将其视为弯曲的边缘。 带有拐角+直线/弯曲边缘,您可能可以很好地检测出您要查找的任何形状。     ,我建议使用神经网络。 您可以教它形状。 例如,这是一个库: C#上的神经网络     ,如果要在较大的图像中查找特定形状,则OpenCV是一个不错的选择。 Emgu.CV是一个不错的.Net包装器。参见我的SURF实现图片。另请参阅OpenCV中的其他选项,它提供了很多功能。请注意,此方法需要大量处理能力。 如果您可以轻松地将所需形状识别为BLOB(即,仅给算法提供该形状的图片),则可以搜索\“ ANN OCR \”(\“人工神经网络\”和\“光学字符识别\“)。许多(大多数?)ANN实现带有示例代码,用于为其提供形状(字母)并识别最接近的形状(手写字母)。例如神经网络OCR。我相信这种方法可以解决您的问题。 (旁注:我已经遇到并测试了许多可以做到这一点的库。它是神经网络101。) 如果您需要BLOB算法用于ANN-OCR,OpenCV可以提供此功能。 这两种方法都很容易实现。     ,在形状识别方面确实存在着巨大的研究树。 如果您的形状确实可以预测并且是基本几何形状, 最直接的方法是找到边缘并应用霍夫变换。 一些可管理的阅读材料供您开始使用, [1]用于霍夫变换形状检测的Google学术搜索 http://scholar.google.com/scholar?q=hough+transform+shape+recognition&hl=zh-CN&as_sdt=0&as_vis=1&oi=scholart [2] Hough转换@ Wiki http://en.wikipedia.org/wiki/Hough_transform     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...