APP下载

基于opencv的手写数字识别

2017-07-19梁培哲

卷宗 2017年15期
关键词:机器学习图像处理

摘 要:随着科技的不断发展,在财务、经济等一系列领域对于使计算机自动识别数字的应用越来越广泛,同时也不断推动着更加精确的识别算法的深入研究。本文提出了一种针对手写数字进行识别的方法,其基本思路是:将opencv开源库函数与CodeBlocks编译环境相结合,图像预处理后再使用SVM(支持向量机)算法与较权威的MNIST数据集结合识别手写数字。实验结果表明,相比于参考文献中的典型常用算法,该方法大大降低了识别错误率,在统计量样本数比较小的情况下也能获得较为准确的统计规律,该算法可行且有效。

关键词:机器学习;图像处理;手写数字识别;SVM分类算法

图像是人们日常生活和工作中随时都会碰到的一种客观的静态描述,对数字图像的深入透彻研究大大方便了我们的生活。目前的对于数字识别的算法主要有K邻近分类算法[1-3]、BP神经网络算法[4]。K近邻分类算法本身简单有效,不需要分类器进行训练,但其计算量较大,可理解性差;传统的BP神经网络收敛速度慢,网络和学习记忆不稳定。本文使用SVM分类算法结合MNIST数据集进行数字的识别,SVM(support vector machine)即支持向量机是一种分类算法[5],其优点是在统计量样本数比较小的情况下也能获得较为准确的统计规律。本文着手于研究机器识别手写数字,此手写数字识别实验主要分为三个部分:图像采集、图像预处理、数字识别。

1 图像预处理

对于摄取到的图片进行数字预处理是实验中重要的步骤之一是实验得出准确结果的前提。采集信号时,周围环境以及摄取设备对采集后的图片影响很大,若不进行图片预处理,往往很难得出正确结果。步骤如下:

1.1 中值滤波

一幅图像中,噪声的出现会使噪声点处的像素值比其周围的像素值相差非常多。可把图像中某一块的数据中所有像素值按大小顺序排列,如此和其他像素值相差很大的噪声点处的像素就会被排到最前或者最末端,再将排在中间的像素值代替模块中的中间的目标像素值,便可有效去除噪声。

1.2 直方图均衡化

直方图均衡化着重于图像灰度级的变换,目的是将图像灰度增强,它在实际工程中使用比较广泛。利用直方图均衡化可以将处理后的图像实际亮度集中的分布在亮度范围的中间区域。

1.3 图像分割

对提取到的图片进行图片分割,可将想要得到的数字更清晰的呈现出来。对于最佳阈值的选取,可以采用遍历像素值[1~254]。

(1)首先人工设置初始阈值Th=Th0将原图分为两类;分别计算两类的类内方差:

(4)

(5)

(6)

(7)

(2)计算两个区域各自的分布概率

(8)

(9)

(3)像素遍历选择选择最佳阈值,根据以下公式判定

(10)

1.4 形态学滤波

最基本的形态学滤波是腐蚀和膨胀,考虑到手写数字笔画可能会很粗不易于后期识别,所以采用膨胀的算法思路。一般膨胀是对二值图像进行处理,将此放在预处理最后一步。

2 数字识别

得到摄像头采集并经过处理后的数字图片后,下一步便是识别。识别数字的方式有很多,本文我们使用支持向量机SVM分类算法来实现手写数字识别。深度学习一般的解决思路便是将大量实例用于训练学习,学习后的机器会产生自己的一套识别体系,利用训练好的系统去识别未知的数字。其中SVM分类算法就是这样一个基础的机器学习的思想,在获得大量样本进行大量学习形成学习系统之后,机器形成一套自己用来识别手写数字的规则。随着样本数量的增加,算法会学的更加精确,不断提升自身的准确性。通常对于分类问题,可以将数据集分成三部分:训练集、测试集、交叉验证集。用训练集训练系统从而生成对数字的学习模型,用后者进行准确性验证(优化参数)。在ubuntu上,大约运行十分钟便可以完成训练和预测测试集的结果。

采用MNIST数据集下载训练数据和测试文件。要注意,摄像机采集之后,为了增强识别效果,对采集到的数字图片进行预处理以达到手写数字图片库的数字模式使识别可以更加准确。MNIST数据库是一个手写数据库,它有60000个训练样本集,10000个测试样本集。它是NIST数据库的一个子集。下载后的文件并不是标准的图像格式,图像都保存在二进制文件中,每个样本图像的宽高为28*28。在进行编写匹配程序之前要把其转换为普通jpg格式的文件。

3 结论

本文从识别手写数字字符识别入手,通过查阅大量资料得出一套完整的手写数字识别的方法体系,并且在Windows平台下,利用计算机视觉库OpenCv和CodeBlocks环境相结合进行实验,得出结果准确度高。采用的SVM分类算法与和典型的K邻近分类算法、BP神经网络算法相比,识别精度高。但是,在摄取图片背景复杂、图片曝光过度或不足、分辨率低的情况下,各算法还需要进一步完善。

参考文献

[1] 陈振洲,李磊,姚正安. 基于SVM的特征加权KNN算法[J]. 中山大學学报(自然科学版). 2005(01)

[2] 钱晓东,王正欧. 基于改进KNN的文本分类方法[J]. 情报科学. 2005(04)

[3] Yufei Tao,Dimitris Papadias,Nikos Mamoulis,Jun Zhang.An efficient cost model for K-NN search technical report. HKUST . 2001

[4] 王建梅,覃文忠. 基于L-M算法的BP神经网络分类器[J]. 武汉大学学报(信息科学版). 2005(10)

[5] 奉国和,朱思铭. 基于聚类的大样本支持向量机研究[J]. 计算机科学. 2006(04)

作者简介

梁培哲(1997-),女,汉族,郑州大学物理工程学院电子信息科学与技术专业2014级学生。

猜你喜欢

机器学习图像处理
基于图像处理的机器人精确抓取的设计与实现
机器学习在图像处理中的应用
Bayesian-MCMC算法在计算机图像处理中的实践
改进压缩感知算法的图像处理仿真研究
前缀字母为特征在维吾尔语文本情感分类中的研究
基于支持向量机的金融数据分析研究
基于图像处理的定位器坡度计算
Photo Shop通道在图像处理中的应用