当前位置: 首页 > 知识库问答 >
问题:

数字识别建议

华森
2023-03-14

我正在编写一个Android应用程序来从图片中提取数独谜题。对于9x9数独网格中的每个单元格,我需要确定它是包含数字1到9中的一个还是空白。我从这样的数独开始:

我使用OpenCV对数独进行预处理,以提取单个数字的黑白图像,然后将它们通过Tesseract。不过,Tesseract有几个限制:

  1. Tesseract很大,包含许多我不需要的功能(即全文识别),并且需要英语训练数据才能运行,我认为这必须进入设备的SD卡。至少我可以告诉它只使用tesseract.set变量("tessedit_char_whitelist","123456789")查找数字;
  2. Tesseract经常将单个数字误解为一串数字,通常包含换行符。它有时也只是简单地弄错了。以下是上面数独的几个例子:

我有三个问题:

  1. 有什么方法可以克服Tesseract的局限性吗
  2. 如果没有,那么在Android上实现的检测单个数字(不是k近邻)的有用、准确的方法是什么?这可能是一个免费的库或DIY解决方案
  3. 如何改进预处理以针对该方法?我考虑过的一种可能性是使用一种细化算法,正如这篇文章所建议的那样,但我不会费心去实现它,除非它会有所不同

共有2个答案

岑畅
2023-03-14

最简单的方法是使用标准化中心时刻进行数字识别。如果您有一种字体(或非常相似的字体,它会很好地工作)。

查看此解决方案:https://github.com/grzesiu/Sudoku-GUI

核心部分负责数字识别、提取和瞬间训练。首次运行应用程序时,操作员必须提供所看到的数字的信息。然后将图像的矩(提取的方形roi)分配给数字(操作员输入)。应用基于比较力矩。

这里第一个youtube电影展示了应用程序的工作原理:http://synergia.pwr.wroc.pl/2012/06/22/irb-komunikacja-pc/

华景同
2023-03-14

我参加了一个计算机视觉超级明星的课程,他在数字识别算法排名中名列前茅。他真的坚持认为,最好的数字识别方法是。。。

1. Get some hand-labeled training data.
2. Run Histogram of Oriented Gradients (HOG) on the training data, and produce one
    long, concatenated feature vector per image
3. Feed each image's HOG features and its label into an SVM
4. For test data (digits on a sudoku puzzle), run HOG on the digits, then ask 
    the SVM classify the HOG features from the sudoku puzzle

OpenCV有一个HOGDescriptor对象,用于计算HOG特征。请看这篇文章,了解如何调整HOG特征参数的建议。任何SVM库都应该完成这项工作。。。OpenCV附带的CvSVM应该很好。

对于训练数据,我建议使用MNIST手写数字数据库,该数据库有数千张带有地面真实数据的数字图片。

一个稍难的问题是在自然界中出现的数字周围绘制一个边界框。幸运的是,您似乎已经找到了执行边界框的策略。:)

 类似资料:
  • 问题内容: 我一直在寻找网络上图像识别数字的资源。我发现许多链接提供了有关该主题的大量资源。但不幸的是,这比提供帮助更令人困惑,我不知道从哪里开始。 我有一个带有5个数字的图像,没有打扰(没有验证码或类似的东西)。数字在白色背景上为黑色,以标准字体书写。 我的第一步是分离数字。我当前使用的算法非常简单,它只是检查一列是否完全为白色,因此是否为空格。然后,它会修剪每个字符,以使其周围没有白色边框。这

  • 我正在编写一个程序,处理两个原型消息,我需要处理从不同来源发送的字节[],这些来源发送foo消息或bar消息。由于我无法弄清楚它属于哪个消息,我使用任何类(附带的协议)来解析字节数组并找到它属于哪个类,但遇到了编译时错误。如果我将来添加更多的原型消息类,我可以使用其他方法来检测吗? 第二个原型 代码: 尝试调用any时if语句出错。is(): 方法是(类

  • 甚至这张照片上的镶嵌也无法识别任何字符。我的代码是: 我的问题是,你知道如何取得更好的结果吗?更清晰的图像?尽管我的车牌质量较差,因此结果可以读取OCR(例如泰瑟拉克特)。 谢谢你的回答。真的,我不知道怎么做。

  • Hi识别专家, 我有很多的mp3文件(原创音源流采样是11.025千赫)包含数字(0-9)。 不同的说话者(男性/女性)说“一”、“七”、“三”等,中间有停顿(约2-2.5秒) 我要用CMU Sphinx来识别语音(桌面应用程序)。所以我有一些问题: > 声学模型:如果不对流进行上采样/下采样,如何找到支持11025 kHz的声学模型。如果我这样做,什么是最好的数字模型? 识别模式:我发现转录有两

  • 什么是tensorflow tensor意思是张量,flow是流。 张量原本是力学里的术语,表示弹性介质中各点应力状态。在数学中,张量表示的是一种广义的“数量”,0阶张量就是标量(比如:0、1、2……),1阶张量就是向量(比如:(1,3,4)),2阶张量就是矩阵,本来这几种形式是不相关的,但是都归为张量,是因为他们同时满足一些特性:1)可以用坐标系表示;2)在坐标变换中遵守同样的变换法则;3)有着