数字识别的建议
我正在编写一个Android应用程序,从图片中提取数独谜题。 对于9x9数独网格中的每个单元格,我需要确定它是包含数字1到9中的一个还是空白。 我以这样的Sudoku开始:
我使用OpenCV预处理Sudoku以提取各个数字的黑白图像,然后通过Tesseract放置它们。 但Tesseract存在一些限制:
tesseract.setVariable("tessedit_char_whitelist", "123456789");
查找数字tesseract.setVariable("tessedit_char_whitelist", "123456789");
我有三个问题:
我参加了一个计算机视觉超级明星的课,他们是数字识别算法排名的顶端。 他确实坚信数字识别的最佳方式是......
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手写数字数据库,该数据库有成千上万个带有地面实况数据的数字图片。
稍微难一点的问题是在自然界出现的数字周围绘制边界框。 幸运的是,您似乎已经找到了制定边界框的策略。 :)
最简单的事情就是使用归一化中心矩进行数字识别。 如果你有一种字体(或者非常相似的字体,效果很好)。
看到这个解决方案: https : //github.com/grzesiu/Sudoku-GUI
核心部分负责数字识别,提取和时刻训练。 第一次运行应用程序时,运营商必须提供信息的数量。 然后将图像矩形(提取的方形圆角)分配给编号(操作员输入)。 基于比较时刻的应用程序。
这里首先是youtube电影,展示了应用程序的工作原理: http : //synergia.pwr.wroc.pl/2012/06/22/irb-komunikacja-pc/
链接地址: http://www.djcxy.com/p/79643.html上一篇: Suggestions for digit recognition
下一篇: Image recognition of well defined but changing angle image