基于模式识别的手写汉字识别毕业设计论文(2)
资料介绍:
4.分类决策。在特征空间中用模式识别方法把被识别的对象归为某一类。
5.分类器设计。基本做法是收集样品训练集,在此基础上确定判别函数,改进判别函数和误差检验。
2.2图像识别
2.2.1图像识别简介
模式识别是人工智能领域的基础,它利用计算机和光学系统来识别计算机看到的图像信息,模拟人的视觉;用计算机和声音传感器来识别计算机接收到的声波信息,模拟人的听觉;用计算机通过压力、温度、气体、液体等传感器来识别计算机获得的各种特征信息,模拟人的触觉和嗅觉等功能。在视觉、听觉和触觉的识别中,基于视觉图象识别具有特别重大的意义。从信息论的角度来看,“图像”所包含的信息量最大,内容极为广泛。图像识别目的在于用计算机自动处理某些信息系统,以代替人去完成图像分类及辨识的任务。对图像识别来说,系统针对某一物体除掉它与其他物体的相同的内容,考虑对它进行分类这一共性来研究的,针对这一共性,以统一的观点把同一共性归为一类,另一种共性归为另一类。
2.2.2图像识别过程
图像识别过程分为四步:
1.图像预处理
为了研究图像内容的识别,首先要对获得的图像信息进行预处理,滤去干扰、噪声,当信息微弱无法辨识时,还须对图像进行增强处理,几何调整,颜色校正等,以便人、机分析。 [版权所有:http://DOC163.com]
2.图像分割
为了从图像中找到需要识别的物体,还要对图像进行分割,也就是定位和分离出不同的待识别的物体。这一过程输入是一幅图象,输出是像元图像。
3.图像特征抽取
在需要识别的物体被分割出来的基础上,提取需要的特征,并对某些参数进行计算、测量,根据测量结果进行分类。这一过程输入是庞大的信息图像,输出则是少量的特征信息,而且这些特征信息仅仅代表物体,无法还原回原物体。
4.图像分类
根据提取的特征值,利用模式识别的方法进行分类,确定类别名称,以便对图像的重要信息得到一种理解和解释。这一过程输入的是特征信息,输出是类别名称。
图像识别过程如图2-2所示。
[资料来源:https://www.doc163.com]
2.3位图基础知识
2.3.1图像文件格式介绍
要利用计算机对数字化图像进行处理,首先要对图像的文件格式要有清楚的认识,自然界的图像以模拟信号的形式存在,在用计算机进行处理以前,首先要数字化,比如摄像头(CCD)摄取的信号在送往计算机处理前,一般情况下要经过模数转换,这个任务常常由图像采集卡完成,它的输出一般为裸图的形式;如果用户想要生成目标图像文件,必须根据文件的格式做相应的处理。随着科技的发展,我们可以利用数码像机、数码摄像机作为图像处理系统的输入设备来为后续的图像处理提供信息源。无论是什么设备,它总是提供按一定的图像文件格式来提供信息,比较常用的有BMP 格式、JPEG格式、GIF格式等等。
除了最简单的图像外,所有的图像都有颜色,按颜色的不同可以将图像分为以下几种:
1.单色图像
单色图像是带有颜色的图像中比较简单的格式,它一般由黑色区域和白色区域组成,可以用一个比特表示一个像素,"1"表示黑色,"0"表示白色,当然也可以倒过来表示,这种图像称之为二值图像。
2.灰度图像
灰度图像的存储文件带有图像颜色表,此颜色表共有256项,图像颜色表中每一表项由红、绿、蓝颜色分量组成,并且红、绿、蓝颜色分量值都相等。我们也可以用8个比特(一个字节)表示一个像素,相当于把黑和白等分为256个级别,"0"表示为黑,"255"表示为白,该字节的数值表示相应像素值的灰度值或亮度值,数值越接近"0",对应像素点越黑,相反,则对应像素点越白。
[资料来源:www.doc163.com]
3.彩色图像
这种图像要复杂一些,表示图像时,常用的图像彩色模式有RGB模式、CMYK模式和HIS模式,一般情况下我们只使用RGB模式,R 对应红色,G对应绿色,B对应蓝色,它们统称为三基色,这三中色彩的不同搭配,就可以搭配成各种现实中的色彩,此时彩色图像的每一个像素都需要3个样本组成的一组数据表示,其中每个样本用于表示该像素的一个基本颜色。
下面简要介绍一下几种常用的图像文件格式。
1.JPEG格式
JPEG也是常见的一种图像格式,它由联合照片专家组(Joint Photographic Experts Group)开发并以命名为"ISO 10918-1",JPEG仅仅是一种俗称而已。JPEG文件的扩展名为.jpg或.jpeg,其压缩技术十分先进,它用有损压缩方式去除冗余的图像和彩色数据,获取得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像质量。
同时JPEG还是一种很灵活的格式,具有调节图像质量的功能,允许你用不同的压缩比例对这种文件压缩,比如我们最高可以把1.37MB的BMP位图文件压缩至20.3KB。当然我们完全可以在图像质量和文件尺寸之间找到平衡点。
由于JPEG优异的品质和杰出的表现,它的应用也非常广泛,特别是在网络和光盘读物上,肯定都能找到它的影子。目前各类浏览器均支持JPEG这种图像格式,因为JPEG格式的文件尺寸较小,下载速度快,使得Web页有可能以较短的下载时间提供大量美观的图像,JPEG同时也就顺理成章地成为网络上最受欢迎的图像格式。
[资料来源:www.doc163.com]
2、SWF格式
利用Flash我们可以制作出一种后缀名为SWF(Shockwave Format)的动画,这种格式的动画图像能够用比较小的体积来表现丰富的多媒体形式。在图像的传输方面,不必等到文件全部下载才能观看,而是可以边下载边看,因此特别适合网络传输,特别是在传输速率不佳的情况下,也能取得较好的效果。事实也证明了这一点,SWF如今已被大量应用于WEB网页进行多媒体演示与交互性设计。此外,SWF动画是其于矢量技术制作的,因此不管将画面放大多少倍,画面不会因此而有任何损害。综上,SWF格式作品以其高清晰度的画质和小巧的体积,受到了越来越多网页设计者的青睐,也越来越成为网页动画和网页图片设计制作的主流,目前已成为网上动画的事实标准。
3、BMP格式
BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。随着Windows操作系统的流行与丰富的Windows应用程序的开发,BMP位图格式理所当然地被广泛应用。这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱生来的缺点--占用磁盘空间过大。在本文中主要用到的就是这种文件格式,下面对它做详细介绍。
2.3.2 BMP文件结构
1、 BMP文件组成 [资料来源:http://doc163.com]
BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。文件头主要包含文件的大小、文件类型、图像数据偏离文件头的长度等信息;位图信息头包含图像的尺寸信息、图像用几个比特数值来表示一个像素、图像是否压缩、图像所用的颜色数等信息。颜色信息包含图像所用到的颜色表,显示图像时需用到这个颜色表来生成调色板,但如果图像为真彩色,既图像的每个像素用24个比特来表示,文件中就没有这一块信息,也就不需要操作调色板。文件中的数据块表示图像的相应的像素值,需要注意的是:图像的像素值在文件中的存放顺序为从左到右,从下到上,也就是说,在BMP文件中首先存放的是图像的最后一行像素,最后才存储图像的第一行像素,但对与同一行的像素,则是按照先左边后右边的的顺序存储的;另外一个需要关注的细节是:文件存储图像的每一行像素值时,如果存储该行像素值所占的字节数为4的倍数,则正常存储,否则,需要在后端补0,凑足4的倍数。
2、 BMP文件头
BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。其结构定义如下:
typedef struct tagBITMAPFILEHEADER
{
WORD bfType; // 位图文件的类型,必须为"BM"
DWORD bfSize; // 位图文件的大小,以字节为单位
[资料来源:Doc163.com]
WORD bfReserved1; // 位图文件保留字,必须为0
WORD bfReserved2; // 位图文件保留字,必须为0
DWORD bfOffBits; // 位图数据的起始位置,以相对于位图文件头的偏移量
//表示,以字节为单位
} BITMAPFILEHEADER;该结构占据14个字节。
3、位图信息头
BMP位图信息头数据用于说明位图的尺寸等信息。其结构如下:
typedef struct tagBITMAPINFOHEADER{
DWORD biSize; // 本结构所占用字节数
LONG biWidth; // 位图的宽度,以像素为单位
LONG biHeight; // 位图的高度,以像素为单位
WORD biPlanes; // 目标设备的平面数不清,必须为1
WORD biBitCount // 每个像素所需的位数,必须是1(双色), 4(16色), [资料来源:Doc163.com]
//8(256色)或24(真彩色)之一
DWORD biCompression; // 位图压缩类型,必须是 0(不压缩),1(BI_RLE8
//压缩类型)或2(BI_RLE4压缩类型)之一
DWORD biSizeImage; // 位图的大小,以字节为单位
LONG biXPelsPerMeter; // 位图水平分辨率,每米像素数
LONG biYPelsPerMeter; // 位图垂直分辨率,每米像素数
DWORD biClrUsed;// 位图实际使用的颜色表中的颜色数
DWORD biClrImportant;// 位图显示过程中重要的颜色数
} BITMAPINFOHEADER;该结构占据40个字节。
4、 颜色表
颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色。RGBQUAD结构的定义如下:
typedef struct tagRGBQUAD {
BYTErgbBlue;// 蓝色的亮度(值范围为0-255)
BYTErgbGreen; // 绿色的亮度(值范围为0-255)
BYTErgbRed; // 红色的亮度(值范围为0-255)
BYTErgbReserved;// 保留,必须为0
} RGBQUAD;
颜色表中RGBQUAD结构数据的个数由BITMAPINFOHEADER 中的biBitCount项来确定,当biBitCount=1,4,8时,分别有2,16,256个颜色表项,当biBitCount=24时,图像为真彩色,图像中每个像素的颜色用三个字节表示,分别对应R、G、B值,图像文件没有颜色表项。位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下: [来源:http://www.doc163.com]
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader; // 位图信息头
RGBQUAD bmiColors[1]; // 颜色表
} BITMAPINFO;
RGBQUAD数据结构中,增加了一个保留字段rgbReserved,它不代表任何颜色,必须取确定值"0",同时, RGBQUAD结构中定义的颜色值中,红色、绿色和蓝色的排列顺序与一般真彩色图像文件的颜色数据排列顺序恰好相反,即:若某个位图中的一个像素点的颜色的描述为"00,00,ff,00",则表示该点为红色,而不是蓝色。
5、 位图数据
位图数据记录了位图的每一个像素值或该对应像素的颜色表的索引值,图像记录顺序在扫描行内是从左到右,扫描行之间是从下到上。这种格式我们又称为Bottom_Up位图,当然与之相对的还有Up_Down形式的位图,它的记录顺序是从上到下的,对于这种形式的位图,也不存在压缩形式。位图的一个像素值所占的字节数:当biBitCount=1时,8个像素占1个字节;当biBitCount=4时,2个像素占1个字节;当 biBitCount=8时,1个像素占1个字节;当biBitCount=24时,1个像素占3个字节,此时图像为真彩色图像。当图像不是为真彩色时,图像文件中包含颜色表,位图的数据表示对应像素点在颜色表中相应的索引值,当为真彩色时,每一个像素用三个字节表示图像相应像素点彩色值,每个字节分别对应R、G、B分量的值,这时候图像文件中没有颜色表。
[资料来源:http://www.doc163.com]
2.3.3 CDib类的建立
1、CDib类的功能
CDib类的基本操作功能包括以下内容:
① 8位位图文件的读、写操作。
② 提供位图宽度、高度、颜色数目等位图相关信息。
③ 提供有关位图占据内存空间的信息,包括图像数据区首地址、颜色表首地址、位图信息结构首地址等信息。
2、CDib类的定义
本论文所研究的手写汉字识别系统,都以CDib类作为基类,由CDib
类派生出有用的子类。在MFC中已有一个支持设备有关位图(DDB)操作的CBitmap类,由于我们用到的CDib是设备无关位图(DIB),所以不能直接从CBitmap类派生出。DIB主要是一种“外部”位图,它主要以文件形式进行存储和交换,所以CDib类应该能很好的处理文件操作。