手写体数字图像识别图像

上次我们看到了如何识别图像中的关键点 然后,我当时正在考虑使用机器学习技术来识别每个点所扮演的角色。 我使用Weka玩了一段时间,该工具非常容易尝试使用不同的机器学习算法。 为了确定分类中要使用的功能,我使用了以下策略:

  • 我围绕着兴趣点绘制了两个同心圆:一个靠近而另一个距离
  • 我确定了关键点所属的轮廓与同心圆的交点
  • 我将圆圈分为12个部分,计算出每个部分有多少个相交处
  • 然后,我将这24个值用于分类

..如果简单的启发式方法可以做到...

但是我意识到,实际上并不需要机器学习。 相反,我可以使用非常简单的启发式方法。 毕竟,我只是在寻找矩形的角,因此我只考虑了具有两个相交点的点,分别是最接近和最远的圆。 然后我考虑了这个相交的角度,基本上是在寻找90°左右的东西。 然后考虑角的方向,将其分类为左上角,右上角,左下角或右下角。

对点进行分类后,我开始寻找左上角并考虑匹配右下角。 我只是朝着正确的方向选择了最接近的一个。 一旦我有了一对左上角和右下角,我便知道在哪里寻找缺失的角:右上角的x应当等于右下角的一个,而y则等于左上角之一,反之亦然。 如果可以在寻找它们的这两点找到它们,那么我认为矩形是完整的。

最后,我只需要检查我是否识别出重叠的矩形:在那种情况下,我只是扔掉了较小的矩形。

这个算法不是完美的,但是我得到了不错的结果:

手写体数字图像识别图像_识别图像中的手写矩形

为什么我不使用OpenCV

当我们处理图像时,OpenCV是显而易见的答案,但是我并没有得到很好的结果。 我发现的轮廓线不是矩形,这似乎使检测矩形的典型算法感到困惑。 这是由于矩形之间的连接(连接矩形的线)。 我尝试了几件事,但是没有得到任何好的结果。 除此以外,OpenCV用C / C ++编写,这基本上意味着部署它非常麻烦。 我当前的解决方案基于Java,这意味着我可以轻松地在每个可能的平台上运行它,而不会感到头疼。 我将再看看OpenCV,我很愿意提出建议。 实际上,我的一个朋友给了我一些不错的主意。

代码,代码在哪里?

您知道,语言很不错,而真正重要的只是代码。 您可以在GitHub上获取它, 网址为https : //github.com/ftomassetti/SketchModel

翻译自: https://www.javacodegeeks.com/2016/04/recognizing-hand-written-rectangles-image.html

手写体数字图像识别图像

相关文章:

  • 2021-07-24
  • 2021-08-24
  • 2021-09-23
  • 2021-12-05
猜你喜欢
  • 2021-06-11
  • 2021-12-14
  • 2021-09-26
  • 2021-12-26
  • 2021-12-14
  • 2021-12-14
相关资源
相似解决方案