汉字字模提取论文.docx

上传人:b****8 文档编号:11241455 上传时间:2023-02-26 格式:DOCX 页数:27 大小:175.74KB
下载 相关 举报
汉字字模提取论文.docx_第1页
第1页 / 共27页
汉字字模提取论文.docx_第2页
第2页 / 共27页
汉字字模提取论文.docx_第3页
第3页 / 共27页
汉字字模提取论文.docx_第4页
第4页 / 共27页
汉字字模提取论文.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

汉字字模提取论文.docx

《汉字字模提取论文.docx》由会员分享,可在线阅读,更多相关《汉字字模提取论文.docx(27页珍藏版)》请在冰豆网上搜索。

汉字字模提取论文.docx

汉字字模提取论文

 

汉字字模提取的研究与实现

 

罗飞夺

 

摘要

在显示技术日新月异的今天,越来越多的场合需要利用到在无操作系统的小应用系统中显示汉字。

如火车站的车次信息显示、赛场上的比分赛况显示等。

汉字显示是在只有西文操作系统的情况下,以及一些无操作系统的小应用系统中,需要经常用到的技术。

如何得到汉字的字模,是汉字显示技术中首先必须解决的问题。

在许多工程控制和字符串处理的环境中,汉字字符的处理仍然有别于西文字符的处理,需要加以专门的考虑。

针对这一现状,笔者设计开发了“汉字字模提取软件”。

本软件的开发,使用的工具是MicrosoftVisualBasic。

本软件的主要功能,是实现汉字字模的提取,亦可通过该软件,改变所需的字体,保存需要的字模。

本文主要介绍了点阵汉字提取的原理与方法。

关键词:

汉字字模提取

Abstract

Today,themanifestationtechniqueisalteringfromdaytoday;moreandmoreoccasionmustmanifestthecharactersinthesmallappliedsystemsthathavenooperatesystem.Forexample,thetrainstationsshowtheinformationofthetrain,andtheSurpassfieldsshowtheinformationofthegameinformation.TheChinesecharactersmanifestationisundertheconditionofonlyhavingtheoperatesystemofEnglish,andinsomesmallappliedsystemsthathavenooperatesystem,thetechniquesthatneedtobeuseusually,howtogetthetypematrixoftheChinesecharactersistheinitialthingintheChinesecharactersmanifestationtechniqueofproblem.Intheenvironmentofmanyengineeringcontrolsandthestringprocessing,theprocessingoftheChinesecharactersstillhasdifferencebetweentheprocessingofthecharacterofEnglishcharacters.Itneedstobetakenintothespecializedconsideration.Tofacethecurrentsituation,thewriterdesignedanddevelopedthesoftwareofgettingthetypematrixoftheChinesecharacter.

Todevelopthesoftware,thewriterusedtheMicrosoftVisualBasic.

Themainfunctionofthesoftware,istogetthetypematrixoftheChinesecharacters.Andwecanalsochangethefontorsavethetypematrixifyouneed.

Thispapermainlyintroducestheprincipleandapproachofextractingdotcharacter.

KeyWordsChinesecharacter;dotcharactermodel;extract.

 

第一章引言

1.1编写目的

随着科学技术的不断发展,不断提高,计算机科学日渐成熟,它已经进入人类社会的各个领域并发挥着越来越重要的作用。

在这个日新月异的信息时代,信息技术的发展更是迅猛,传统的黑板、报纸等媒介,已经不能满足大量实时信息的管理和即时发布。

因此,使用汉字字模提取软件,对各类信息的发布和管理,具有手工发布管理无法比拟的优点:

方便、迅速、实时、准确、可靠、价廉。

1.2背景

车站、机场、商场、厂矿企业及其他一些公共场所,经常需要发布多变的实时的信息或进行广告宣传,传统的黑板和纸张等为媒介的手段不能满足其多变性和实时性。

LED电子显示屏以其修改方便、实时显示、美观整洁等特点应运而生。

而随着单片机和嵌入式技术的快速发展和应用,越来越多的仪器设备、智能装置具有一个液晶显示模块用于显示操作菜单、数据和工作状态等。

在显示技术日益发展的今天,汉字点阵文件显示技术已经成熟,在工业生产和日常生活中,LED点阵屏和LCD点阵式液晶显示屏的应用越来越广泛,如设备的操作显示屏、火车站的旅客向导显示屏、手机的显示屏以及大型广告显示屏等等。

然而无论是LED点阵屏还是LCD点阵式液晶显示屏,要在没有操作系统的单片机系统上显示汉字,都需要获得待显示汉字的点阵字模,只有预先提取每个要显示的汉字的字模以点阵方式来显示,再由单片机控制系统进行处理。

获取字模的最原始的方法是手工方法,这种方法不仅工作量大、效率低,而且容易出错;而在单片机控制的标语指示、车站机场车次航线显示、银行汇率显示等系统中,使用昂贵的通用汉字字库芯片并不经济。

因此,可以利用计算机的汉字库文件,直接调用汉字库文件,然后提取字符字模。

这样,不仅提高了工作效率,减少了工作量,还节约了硬件开支。

所以,在显示技术日新月异的今天,研究汉字字模提取的方法与技术,具有一定的现实意义和时代意义。

 

第二章汉字字模提取简介

2.1汉字字库的介绍

汉字字库,根据存储的汉字的信息的不同,可以分为点阵字库、矢量字库、曲线轮廓字库等。

又根据汉字字体的不同,每一种字库又可分为宋体、楷书、隶书、黑体等等。

在点阵字库中,存放着汉字的点阵字模信息。

它根据点阵的字模大小,可以分为16*16点阵字库,24*24点阵字库等。

当汉字的点阵数目增加时,其显示的质量就越高,相对的,它所占用的空间也就越大。

在同一点阵字库中,各汉字字模信息所占的存储空间相同,所以,查询和提取非常方便。

在矢量字库和曲线轮廓字库中,则存放各汉字的索引表及其比划或字型等信息。

不管是点阵汉字、矢量汉字、曲线轮廓汉字,要显示这些汉字,最终,都必须要提取它们的点阵字模信息。

2.2字模提取的介绍

一个汉字,可以看成是由许多点阵排列出来的,汉字笔画划过的地方为“1”,其余的地方为“0”(如图2.1所示),然后把这些点阵信息按一定顺序排列,就是这个汉字的字模了。

要显示一个汉字,就必须要知道这个字模的点阵字模信息。

图2.1

我国国标(GB2312-80)规定,汉字用内码表示,内码为两个字节。

并且,两个字节的最高位均为1。

同时,国标对汉字库也做了统一的规定,将汉字库分为若干个区,每个区均有94个汉字,每个汉字均有一个唯一的确定的区码和位码。

当我们知道了一个汉字的区位码,也就相当于知道了该汉字在字库中的位置。

由于汉字的机内码和区位码有一定的关系,通过汉字的机内码就可以得到汉字的区位码,从而,也就可以提取出该汉字的字模。

 

第三章字模提取总体设计

3.1设计的目标

本次设计利用MicrosoftVisualBasic平台。

利用其界面设计的简易性,以达到本次毕业设计所需的目标:

1、通过输入汉字,能够提取所需的汉字的字模;

2、能够自动显示点阵情况下的汉字;

3、可以改变所需的汉字的字体,包括字型、字号等;

4、可以保存汉字转换的结果。

3.2汉字字模提取的基本原理

如同画点画线一样,汉字是经过电脑画出来的。

这样,就必须为每一个字准备一个数组,这就是“字模”。

这些字模分为点阵和矢量两种。

我们常用的是点阵字模,一般有16*16和24*24两种,分别称为16点阵字和24点阵字。

它们的原理是依据点阵中的0和1来把汉字画出来(即0表示不画点,1表示画点)。

本文主要介绍点阵字模的获取。

当然,我们不能为所用到的每一个汉字去自己编写它们的字模。

我们只是设法将大汉字库中所需要的汉字字模取出来,建立我们自己的字库。

这样的字库可以使得汉字的显示更快,且只需要很小的存储空间。

UC-DOS为我们提供了大多数汉字的16点阵和24点阵的字库。

本文以16点阵的汉字显示为例,因此,取用UC-DOS中的字库文件HZK16oHZK16的内容是按照字节存放的,即把16*16个“位”变成32个“字节”来存放。

另外,汉字点阵字模代码是按照区位码的顺序在汉字库中存放的;而系统内部处理和存储汉字使用的是机内码。

因此,必须了解区位码和机内码的关系。

国内的汉字系统一般都是采用国标码最高位置1作为汉字的机内码。

国标码由2个字节组成,其中高字节表征区,低字节表征位。

国标码和区位码都有94个区,每个区又都有94个位。

国标码和区位码的关系是:

国标码高字节=区码十20H

国标码低字节=位码十20H

因此,汉字的机内码与国标码和区位码的关系是:

机内码高字节=国标码高字节+80H=区码十AOH

机内码低字节=国标码低字节+80H=区码十AOH

综上所述,通过汉字的机内码就可以获得汉字的区位码,从而知道汉字在字库中存放的位置。

现在,给出读取汉字字模的基本步骤:

①获取汉字的机内码;

②通过汉字的机内码推算出区位码;

③由区位码计算出汉字在字库中的位置offset:

offset=[(区码一1)*94+(位码一l)]*32

④从该偏移地址读取32个字节,就是相关汉字的点阵字模代码。

(引用:

王保华著《利用VC++实现汉字字模提取与小汉字库的生成》)

3.3软件的开发环境

3.3.1Windows下的VisualBasic编程环境

BASIC语言自诞生以来,在广泛的应用中不断地发展。

至今为止,BASIC语言已经经历了四个发展阶段:

第一代:

早期的BASIC(20世纪60年代中期到70年代中期);

第二代:

微机出现初期的BASIC(20世纪70年代中期到80年代中期),其代表为GW-BASIC和Microsoft的BASIC;

第三代:

结构化的BASIC语言,其代表为TrueBASIC,QuickBASIC,TurboBASIC,QBASIC;

第四代:

VisualBASIC。

前三代的BASIC语言,尽管功能不断丰富,但都是在DOS操作环境下使用的,它提供给用户的是字符界面,看起来单调枯燥。

例如,向计算机输入两个数a和b,要求计算机输出a+b的值c,用传统的BASIC语言编写的程序如下:

10INPUT“entera:

”,a

20INPUT“enterb:

”,b

30c=a+b

40PRINT“c=”,c

50END

运行时,在输入a和b的值后,按回车键,屏幕上会有提示的方式来显示计算的结果。

对于每一个使用过Windows的人来说,显然会对这种人机对话的方式感到相当不适应。

Windows提供的是图形界面,使用户能够在生动活泼的环境下愉快地进行学习和工作。

在Windows环境下,用户只需要移动鼠标,单击一些按钮,或者选择菜单中的某些命令就可以实现某些操作(而不用像在DOS环境中那样,必须给出一系列复杂的命令)。

那么,怎么样才能开发出这种适用于Windows环境的应用程序呢?

Microsoft于1991年推出了VisualBasic1.0版本,因其简单易学,在短时间内,一大批的程序员很快就能掌握了VisualBasic,并用它来编写出各种各样的Windows应用程序,使BASIC的编程走出了“Helloworld”时代。

在Windows环境下,用户只需要移动鼠标,单击一些按钮,或者选择菜单中的某些命令来实现某些操作,在程序运行过程中,还会出现“对话框”,引导用户进行某些选择或操作。

熟悉Windows的用户对次深有感触。

MicrosoftVisualBasic6.0是Windows应用程序开发工具,是目前普遍广泛的、易学易用的面向对象的编程工具。

VisualBasic提供了大量的ACTIVE控件,这些控件可用于设计界面,并实现各种功能,大大减少了编程人员的工作量,也简化了界面设计过程,从而有效地提供了应用程序的运行效率和可靠性。

故而,开发设计本软件,VB是一个相对比较好的选择。

3.3.2面向对象的编程

在面向对象的程序设计中,“对象”是系统中的基本运行实体,它封装了数据和操作。

对象的性质和状态特征称为“属性”,同类型的对象具有相同的属性。

当要特制某一具体的对象时,这些属性就有了具体的值。

不同对象的不同属性值描述了对象的特征。

这些值就是对象的数据。

同类对象的抽象称为“类”。

对象不会无缘无故地执行某个操作,只有在接受别的对象请求时,才会进行某一操作。

这种请求对象执行某一操作或回答某些信息的要求称为“消息”或“事件”。

对象接到消息所执行的程序称为事件驱动程序。

VB的事件驱动程序都表示为“过程”。

事件驱动过程可以包括对象的调用和各种VB语言的语句。

VB的工具箱为程序员提供了一套界面设计常用的对象模子类,它们的属性没有具体值。

当我们把工具箱的某个工具“拖动”或双击到窗体上时,系统以这个模子的形式赋予它各种初始值,构造了一个实在对象。

这些属性值可以由用户修改。

VB不仅为用户提供了一套标准控件工具,还允许程序员添加新的控件工具以及用VB程序设计语言设计对象。

3.3.3VB在汉字字模提取软件中的应用

3.3.3.1创建应用程序的主要步骤

1、创建应用程序的界面

界面是用户和程序交互的桥梁,用VB创建的标准的Windows应用程序的界面一般由窗体和按钮、菜单、文本框和图像框等构成。

根据程序的功能要求和用户与程序之间的信息交流的需要,来确定需要哪些对象,规划界面的布局。

2、设置界面上各个对象的属性

根据规划的界面要求设置各个对象的属性,比如对象的面貌、名称、颜色、大小等。

大多数属性取值既可以在设计时通过窗口设定,也可以在程序代码中通过编程在程序运行时设置修改。

3、编写程序响应的程序代码

界面仅仅决定了程序的外观,设计完界面后,就要通过“代码编辑器”窗口来添加代码,实现一些在接受外界信息后得到的响应、信息处理等任务。

4、保存工程

一个VB程序就是一个工程,在设计一个应用程序时,系统会建立一个扩展名为.vbp的工程文件,工程文件包含了该工程所建立的所有文件的相关信息,保存工程就同时保存了该工程的所有相关文件。

比如,当设计界面时产生的窗体保存在扩展名为.frm和.frx的窗体文件中。

在打开一个工程时,在工程中的所有相关文件同时被装载。

5、运行和调试程序

通过“运行”菜单中的选项来运行程序,当程序出现错误时,VB系统可提供信息提示,也可以通过“调试”和“运行”菜单来查找和排除错误。

6、生成可执行程序

为了使程序可以脱离VB环境来运行,通过“文件”菜单中的“生成工程1.exe”命令来生成可执行文件(.exe文件),此后即可直接执行该文件。

3.3.3.2创建用户界面

1、对象

VB的对象有自己的属性、方法、事件,可以把属性看做是一个对象的性质,把方法看做对象的动作,把时间看做是对象的响应。

VB是一种面向对象的编程语言,通过对属性、方法和事件的编程来实现各种功能。

2、对象的属性

属性是对象的数据,原来表示对象的状态。

属性有属性值,改变对象的属性值就可以改变对象的状态。

属性的设置可以在“属性”窗口中完成,也可以在运行时由代码实现。

在运行时可设置的属性成为读写属性,只能读取的属性叫做只读属性。

语法:

对象名.属性名=表达式(如果省略对象名则对象为当前的窗体)

例如:

Picture1.visible=true

3、对象的方法

对象的方法决定了对象要执行的动作,方法中的代码是看不见的,可通过调用来使用某个对象的方法。

语法:

[对象名].方法名[(参数1,参数2,参数3,….)]

例如:

Form1.show

Picture1.cls

4、对象的事件

事件是对象的响应,VB的应用程序是由事件驱动的。

也就是说,只有当事件发生时,下雨事件的程序才会运行。

如果没有事件的发生,则整个程序就处于停滞的状态。

在VB中,事件是能被对象识别的动作。

VB编程的核心就是为每个要处理的事件编写相应事件的过程代码,以便使用户或系统在触发相应事件时执行指定的操作。

5、创建窗体

(1)窗体的属性

窗体的属性有很多,按分类可以分为:

①杂项属性,②外观属性,③位置属性,④行为属性,⑤字体属性,⑥DDE属性,⑦缩放属性。

(2)窗体的方法

窗体有很多方法,通过在代码中调用来执行。

窗体最常用的方法是show方法,用于显示窗体。

常见的方法还有:

Hide(隐藏)、Refresh(刷新)、Move(移动)、Print(显示文本)。

(3)窗体的事件

窗体作为对象能够对事件做出响应。

具体可包括:

Activate和deactivate事件;Initialize事件;Load和Unload事件;Click和Dblclick事件;Resize事件。

(4)界面样式

SDI界面单文档界面

MDI界面多文档界面

6、控件

(1)控件的分类

VB控件可分为内部控件、ActiveX控件和可插入对象三类。

①内部控件

内部控件是由VB本身提供的控件,也称常用控件,这些控件通常显示在控件箱中。

②ActiveX控件

ActiveX控件是VB控件箱中的扩充部分,这些控件在使用前必须添加到工具箱中。

③可插入对象

可插入对象是由其他应用程序创建的对象,利用可插入对象,就可以在VB程序中使用其他应用程序的对象。

如图3.1所示

图3.1

 

第四章汉字字模提取的实现

4.1从汉字库中提取出汉字

4.1.1汉字的区位码

1981年,我国颁布了《信息交换用汉字编码字符集●基本集》(GB2312—80),该保准选出了6763个常用汉字和682个非常用汉字字符,以汉字库的形式提供,并为每个字符规定了标准码,以供这7445个字符在不同计算机系统之间进行信息交换使用。

这个标准所收集的字符及其编码称为国标码,又称国际交换码。

GB2312国标字符集有三个部分组成:

第一部分,是字母、数字和各种符号,包括了拉丁字母、俄文、日文平假名和片假名、希腊文以及汉语拼音等682个;第二部分,是一级常用汉字,按汉语拼音排列,共3755个;第三部分,是二级常用汉字,因为不太常用,所以按偏旁部首排列,共3008个。

GB2312国标字符集,构成了一个三维平面,分成了94行,94列,行号又称为区号,列号又称为位号。

即,汉字库统一规定组成94*94的矩阵,共分为94个区,编号01—94;每个区有94个位,编号01—94。

这样,每个汉字或字符在码表中都有与之相对应的位置,因此各有一个唯一的编码,该编码就是汉字或字符所在的区号(行号)和位号(列号)的二进制代码。

这就是汉字的区位码,用两个字节表示,区位码的第一个字节表示区号,第二个字节表示位号。

4.1.2汉字的内码

汉字内码是微机内部使用的代码、系统处理的对象。

在计算机内,英文字符是用一个字节的ASCⅡ码表示的。

但由于汉字众多,对一个汉字的表示,需要用到两个字节。

并且,为了与系统中的ASCⅡ码相区别,将这两个字节的最高位置1,并称之为机器内的汉字代码,即机内码,简称内码。

4.1.3汉字的区位码与内码之间的关系

汉字的区位码和内码之间的变换关系如下:

内码高位字节=区码+160;

内码地位字节=位码+160。

汉字字符的比较是以其机内码是否相等进行判断的,亦可把每个汉字的机内码转换成字符型再进行比较,即把所要转换的汉字与汉字库内所有汉字进行比较,若两个汉字字符相等,就可以等到其汉字的区位码。

这样,清楚了汉字的区位码,也就得到了汉字的位置码。

位置码=(区号-1)*94+位号–1

4.1.4汉字字模提取实现的技术原理

汉字的位置码,并不是这个汉字的字模。

字模,是汉字在汉字库中的存储形式。

例如,对于一个16*16的点阵汉字字库,要描述一个汉字的形体需要16行(即16区),每行有16列(即16位),存储需要2个字节,那么描述这个汉字则需要32个字节。

对于最常用的16*16点阵和24*24点阵的汉字字模的提取,在这里稍微做一下介绍,其它点阵的字模提取方法与之类似。

对于16*16点阵的汉字字库,每个字模信息占32个字节,根据2.1.3节的介绍,一个汉字字模在16*16点阵字库中的起始位置:

起始位置=32*[(内码高字节–161)*94+(内码低字节–161)]

同样,对于24*24点阵的汉字字库,每个字模信息占72个字节,则一个汉字字模在24*24点阵字库中的起始位置:

起始位置=72*[(内码高字节–161)*94+(内码低字节–161)]

但是,对于不同的24*24点阵的汉字字库,各种非汉字符号的存放方式不一样。

有的省去了前15个区,并将这15个区单独存放;有的则没有省去。

如果省去了前15个区,则将上述公式修改如下:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1