贝叶斯类的数字识别

aka*_*aya 5 ocr pattern-recognition

我只需要为数字写一个OCR程序.我将使用MNIST数据集.问题是我不知道从哪里开始.有很多论文没有真正解释算法.我对模式识别并不是很了解.所以我有几个问题.

Q1:我在哪里可以找到算法(或教程)Q2:如何对数字进行分类?我不需要非常先进的东西.我首先想到的是找到上半部/下半部和左侧/右侧的比例.是否有更有用和简单的分类方法.问题3:什么是反向传播以及大多数论文中显示的层.我的简单OCR是否需要它们?

注意:我知道我的OCR程序不准确.现在这不是很重要.

Ret*_*unk 8

如果最近的工程图书馆有关于图像处理,计算机视觉或机器视觉的部分,那么幸运的是,图书馆将有一本我推荐用于OCR的书的副本:

Cheriet,Kharma,Liu和Suen的字符识别系统

本书提供了对OCR技术和最新研究的相当全面的概述.它没有深入探讨任何特定的主题,但它确实提供了学术论文的参考.

确保您可以访问有关图像处理的优秀入门教科书.冈萨雷斯和伍兹的这本书是许多大学的标准:

Gonzalez和Woods的数字图像处理

即使是"简单"的OCR也很快变得棘手.如果你在掌握基本的图像处理原理之前先进入一个关于神经网络,贝叶斯定理等的课程,那就太过分了.

如果可以,请在尝试为手写字符编写算法之前,尝试为机器打印字符编写一个或多个OCR算法.

Q1:我在哪里可以找到算法(或教程)

有许多OCR算法.Cheriet书将为您提供一个良好的开端.

Q2:我如何对数字进行分类?我不需要非常先进的东西.我首先想到的是找到上半部/下半部和左侧/右侧的比例.是否有更有用和简单的分类方法.

尝试实现该技术,看看它的工作情况.即使实施效果不如您所愿,实施它的经验教训可以在以后帮助您.

您还可以将字符细分为2 x 2网格或3 x 3网格,并检查相对密度的像素.与机器打印的字符不同,手写字符在直线网格中不能很好地排列.

使用标准化关联的模板匹配很简单,并且对于单个已知字体的机器打印字符,它可以合理地工作.它实现起来相对简单,值得学习:http: //en.wikipedia.org/wiki/Cross-correlation#Normalized_cross-correlation

对于OCR,通常会将样本中的字符缩小为初始步骤.细化是一种将字符(或任何其他形状)减少到1像素宽的表示的技术.一旦你有一个变薄的角色,就可以更容易识别线条和交叉点.如果您可以识别线条(或曲线)和相互作用,那么一种技术是查看每条线相对于其他线的相对位置和角度.

常见的细化算法包括Stentiford和Zhang-Suen.有一个免费版本的WinTopo,它演示了这两种算法:http: //wintopo.com/

您可以查看有关"中风提取"的学术论文,但这些技术往往更难以实施.

问题3:什么是反向传播以及大多数论文中显示的层.我的简单OCR是否需要它们?

这些术语指的是人工神经网络.对于简单的OCR算法,您将对识别逻辑进行硬编码或使用简单的训练方法.可以训练人工神经网络识别软件中未经过硬编码的字符. http://en.wikipedia.org/wiki/Neural_network

虽然您不需要学习人工神经网络来编写简单的OCR算法,但是简单的算法在手写字符方面的成功有限.

最重要的是,请记住,手写字符的OCR是一个非常困难的问题.如果使用简单的技术可以达到20%的手写字符读取率,那么请考虑成功.