一种基于WindowsCE的手写体识别系统的实现
2012-02-08李冰刘敏
李冰,刘敏
(河南质量工程职业学院,河南平顶山467000)
手写体识别(Handwriting Recognize)是指将在手写设备上书写产生的有序轨迹信息转化为内码的过程。WindowsCE是一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统。主要应用在手机、指纹识别系统、汽车电子检测设备、智能家电、医疗仪器、工业控制仪器、定位导行设备上。本文尝试在WindowsCE环境下建立一个手写体识别系统。
1 手写体识别系统的设计
本文系统对手写文字的识别过程主要包括:用户在系统手写区输入文字、文字定位、特征提取、特征比对等。
(1)绘制文字:在手写窗口中实现文字的手写,并对其坐标值进行保存。
(2)预处理:在手写体识别系统中不需要对图像进行灰度化处理、去噪处理等基本操作,仅保存坐标值就可以生成一个二值化图像。
(3)特征提取:对文字进行定位,找出手写体文字的上、下、左、右边界,重新生成一张图片,将新生成的图片分成20×20的区域,统计每个区域的目标像素个数和整个小区域像素个数,计算目标像素个数与整个小区域像素的比值,得到400个特征值,这样就可以有足够的特征值进行比较,必要时还可扩展特征值数量。
(4)样本特征库:本文系统需要一个识别标准,即样本特征库。将文字与对应的手写体特征值存储到样本特征库中。由于WindowsCE便于对文本文件读取,而且速度快。因此本文系统的样本特征库使用的是txt文件类型,格式是“文字+空格+特征值”。样本特征库越丰富,识别率越高。
(5)分类判断:本系统采用了模板匹配法,其实质是提取出手写文字的特征值,利用这些特征值与样本特征库的特征值进行比对,找出待识别文字的特征值与特征库中的特征值最接近的文字,作为识别结果。
(6)误识别人工分类:无法识别的文字特征,需进行样本训练,经过人工分类后存入样本特征库,建立新的样本特征记录。
本文系统的具体工作流程如图1所示。
2 系统实现
考虑到应用领域和可推广性,本文系统主要针对的是WindowsCE5.0平台。开发环境采用了VisualStudio2005和Platform Builder5.0。
图1 工作流程
本文以“人”字的特征值提取为例。
(1)对手写窗口进行预处理。
bmpDraw=new Bitmap(pbDraw.Width,pbDraw.Height);
pen.DashStyle=System.Drawing.Drawing2D.DashStyle.Solid;
g=Graphics.FromImage((Image)bmpDraw);
g.Clear(Color.White);
pbDraw.Image=(Image)bmpDraw;
this.pbDraw=pbDraw;
(2)将特征提取到样本特征库中。
将特征值存入rec.txt中:
StreamWriter sw=new StreamWriter(fileName,true);
sw.WriteLine(name+""+GetBMPContext(bmpDraw));
在GetBMPContext方法中提取特征值:
Bitmap bmp2=new Bitmap(20,20);
作为一种固定模式的学案导学模式,其在实际应用中的具体形式是千差万别的。由于每个教师都有自己独特的教学风格,且学生的情况不同,因此具体采用哪种方式因人而异。但无论其是何具象,这种新型教学模式的主体仍然是学生,一切表现形式都以学生为主。历史不仅是一门学科更是一门艺术,因此历史教学不像数学、哲学教学过程中注重逻辑思维的培养,其更加讲究教学的艺术手段。在初中历史教学过程中,教师应更加注重培养学生的学习兴趣,使课堂更具活力和生命力。只有这样,才能激发学生学习历史的积极性,从而提高他们独立思考和独立学习的能力。然而,由于本人知识和生活经验的限制,它未能涵盖学术指导模式在教学中应用的所有方面。
Graphics g2=Graphics.FromImage((Image)bmp2);
g2.Clear(Color.White);
g2.DrawImage(bmp,new Rectangle(0,0,bmp2.Width,bmp2.Height),
new Rectangle(0,0,bmp.Width,bmp.Height,GraphicsUnit.Pixel);
g2.Dispose();
int a=0,b=0;
for(int i=0;i<bmp2.Width;i++)
{
for(int j=0;j<bmp2.Height;j++)
{
if(bmp2.GetPixel(i,j).ToArgb()==Color.Black.ToArgb())
result=result+"0";
else
result=result+"1";
}
}
return result;}
(3)识别判断。
通过Bitmap.getPixel(x,y)返回Color,再次提取当前特征值,遍历库中特征值进行比较判断,如果匹配度达到一定阈值,就可以认为已经识别,否则需要进行人工分类,并存入样本特征库。
3 结束语
本文的手写体识别系统具有重复样本特征值提取功能,这样可以避免因为个人书写习惯不同等因素导致的识别率不高,通过样本训练提取手写文字特征值添加到样本特征库。样本特征库内容越丰富,系统识别率就越高。
[1] 范艳峰,肖乐,甄彤.自由手写体数字识别技术研究[J].计算机工程,2005,31(10):168-167.
[2] 张炘中.汉字识别技术[M].北京:清华大学出版社,1992.
[3] 陈彬彬.高精度手写体数字识别[D].成都:四川师范大学,2007.
[4] 罗佳.无约束手写数字串切分于识别研究[D].成都:四川师范大学,2007.