编码字符集论文

2024-09-30

编码字符集论文(精选4篇)

编码字符集论文 篇1

软件国际化要求应用程序能处理多种语言和文化习俗,特别是互联网应用要能同时应对世界不同地区和国家的访问,提供可读的、符合来访者阅读习惯的页面或数据。其中首先需要解决的问题就是字符集编码的处理。主要论述Java中如何处理字符集编码问题。

1 字符集与编码

字符就是具有一定意义的符号,如文字、数字、标点符号、图形符号、技术符号等。字符集是字符的集合,一种字符集一般对应着一种语言所使用的文字和符号。编码是指用一个整数值来代表一个字符,使得字符可以被计算机处理。不同的字符集采用的编码规则和编码空间是不一样的。字符集编码的源头是ASCII码,一种7位编码的英语字符集。随后的发展经历了两个阶段,第一个阶段是本地化编码,不同的国家和地区在ASCII编码的基础上,制定了自己的编码标准,如GB2312、JIS、BIG5、ISCII等,这些编码互相独立、互不兼容,无法同时使用。第二个阶段是Unicode编码,即将世界上所有国家和地区的字符和符号统一编码在一个大字符集里,完全解决字符编码问题。

(1)Unicode编码。编码空间结构上被分为17组,组称作平面,每个平面能编码65536个字符,目前只是用了少数平面,其中0号平面(U+0000-U+FFFF),即基本多文种平面是最主要的平面,包含了世界上大部分常用的字符。UNI-CODE编码在实现时,受使用平台的限制,以及节约空间的考虑,字符实际上是以UTF-8、UTF-16、UTF-32这些Unicode转换格式编码。

(2)GB2312、GBK、GB18030编码。这3种编码是汉字的国家标准编码,属于本地化编码,与Unicode不兼容。其中GBK是国家强制标准。

下面从基本编码、编码探测、IO编码、HTTP编码4个方面探讨在Java语言中怎样解决编码问题。

2 基本编码

Java语言原生支持Unicode,JVM中字符串以UTF-16编码存放,Class文件中字符串以修改过的UTF-8编码保存,最新的JDK7支持Unicode 6.0。JDK中字符集编码处理的包是java.nio.charset,只有5个类(类图如下),采用了编解码的概念,Java字符串(UTF-16编码)转换为其他字符集称作编码,其他字符集转化为Java字符串称作解码。另有java.nio.charset.spi包用于扩展。主要的操作如下:

(1)列出当前JVM支持的全部字符集

public static Sorted Mapavailable Charsets()

(2)字符串编解码

//将GBK编码字节流解码成Java字符串

//将Java字符串编码成GBK字节流

3 编码探测

编码探测是指通过分析文本的特征,判断其采用了何种字符集编码。

(1)基于BOM信息的探测。BOM是byte order mark(字节顺序标记)的缩写,指置于一段Unicode文本首部的若干标志字节,用于说明文本的字节顺序和编码类型。具体如表1所示。

需要注意U+FEFF在早期Unicode标准中被编码为Zero Width No-Break Space(ZWNBSP),从Unicode 3.2起已被废止,专门用于BOM,原有的功能被U+2060?Word Joiner代替。EF BB BF实际是FE FF的UTF-8编码。可以用一个简单的函数判断文本是否有BOM头部。

(2)自动编码探测。常用的Java自动编码探测包有cp Detector、juniversalchardet和ICU等。下面以ICU-Character Set Detection举例。

4 IO编码

Java IO操作基于流(Stream)和通道(Channel)两种模式。流模式中数据被看做流动的字节流或字符流,流本身被看做是与某一具体数据源或目的相关联的设备,可以操作它读出或写入数据流。通道模式引入Buffer类用于管理数据,通道本身则看做一个与远端设备相连的端到端的连接。流和通道处理字符编码的方式不同,具体见例子。

(1)以UTF-8编码读入文件

(2)将数据以UTF-8编码保存

5 HTTP编码

一般认为HTTP字符集编码指的是传输的文本内容的编码,但实际上HTTP编码涉及URL编码、头部编码和内容编码3部分,下面分别论述。

(1)URL编码是指当用户在页面中发起URL请求或在地址栏中输入URL时,浏览器在将该URL发往服务器前,会对其进行编码。首先浏览器会选择一个字符集将URL编码成字节流,随后对该字节流进行%编码,将URL转换成ASCII编码的一个限定子集进行发送。由于字符集选定和%编码的规则没有统一的标准,而是交给浏览器自行决定,从而导致了混乱。下面是使用Wireshark捕获的IE9、Chrome和Firefox页面请求编码,如表2所示。

解决的办法是直接使用Javascript对URL进行编码,发送到服务器,跳过浏览器的编码过程。具体的函数是encode URI()、decode URI()和encode URIComponent()、decode URIComponent()等。Jquery通过封装这几个函数,提供了简便的解决办法,见下例:

var params={"param":"测试"};

$("#id").load("http://abc.com/test/测试",params);

服务器端的解码先用Servlet API中的Http Servlet Request.get Request URL()取出未解码过的URL,Http Servlet Request.get Query String()取出未解码过的请求字符串。然后使用UR-LEncoder和URLDecoder类对URL进行编解码,转换规则如下:

(1)字母数字字符"a"到"z"、"A"到"Z"和"0"到"9"保持不变。

(2)特殊字符"."、"-"、"*"和"_"保持不变。

(3)加号"+"转换为空格字符""。

(4)将把"%xy"格式序列视为一个字节,其中xy为8位的两位十六进制表示形式。然后,所有连续包含一个或多个这些字节序列的子字符串,将被其编码可生成这些连续字节的字符所代替。可以指定对这些字符进行解码的编码机制,如果未指定的话,则使用平台的默认编码机制。

另外,在Tomcat中可以通过在Server.xml中设置指定解码字符集,用Http Servlet Request.get Parameter("param")取出解码后的参数。

(2)头部编码。早期HTTP规范要求头部字符也必须是ASCII编码,后来随着Content-Disposition的出现,下载文件时需要在头部采用多语言编码。RFC 5987、RFC6266规定HTTP头部多语言编码采用parameter*=charset'lang'value的格式,但是目前只有最新的浏览器支持(Safari>=6,IE>=9Chrome,Firefox,Opera)支持,老版本的浏览器不支持,而且不同浏览器的解码规则也不同,要想完美解决,需要在服务器端做浏览器探测,并根据猜测到的不同浏览器进行响应编码。

(3)内容编码。HTTP使用Content-Type头部标识实体内容的MIME类型,同时支持可选的参数进一步说明文本内容的编码。Servlet中用set Content Type()和response.set Character Encoding()用于设置返回内容的字符集编码。Request set Character Encoding用于设置解码请求实体中文本内容的编码。如下例:

需要注意,set Content Type()优先级比set Character Encoding()要高。

参考文献

[1](美)昊斯特曼.JAVA核心技术卷II:高级特性(原书第8版).叶乃文,邝劲筠,杜永萍,译.机械工业出版社,2008.

[2]成富.深入理解Java7:核心技术与最佳实践.机械工业出版社,2012.

[3]http://www.oracle.com/us/technologies/java/overview/index.htmlOracle.2013.

编码字符集论文 篇2

不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文系统下,ANSI 编码 代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。

对于ANSI编码而言,0x00~0x7F之间的字符,依旧是1个字节代表1个字符。这一点是ASNI编码与Unicode编码之间最大也最明显的区别。比如“A君是第131号”,在ANSI编码中,占用12个字节,而在Unicode编码中,占用16个字节。因为A和1、3、1这4个字符,在ANSI编码中只各占1个字节,而在Unicode编码中,是需要各占2个字节的。

2、cp936编码

cp936是微软自己发布的用在文件系统中的编码方式。而bg2312是中国国家标准。

目前Windows的内核已经采用Unicode编码,这样在内核上可以支持全世界所有的语言文字。但是由于现有的大量程序和文档都采用了某种特定语言的编码,例如GBK,Windows不可能不支持现有的编码,而全部改用Unicode。Windows 使用代码页(code page)来适应各个国家和地区。code page可以被理解为前面提到的内码。GBK对应的code page是 CP936。

3、GB2312编码 GB2312(1980年)一共收录了7445个字符,包括6763个汉字和 682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。

ASCII、GB2312、GBK到GB18030的编码方法是向下兼容的。

的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。

4、Unicode编码

Unicode也是一种字符编码方法,不过它是由国际组织设计,可以容纳全世界所有语言文字的编码方案。 Unicode的学名是 ”Universal Multiple-Octet Coded Character Set“,简称为UCS。 UCS可以看作是”Unicode Character Set“的缩写。

UTF-8、UTF-7、UTF-16都是被广泛接受的方案。UTF-8的一个特别的好处是它与ISO- 8859-1完全兼容。UTF是 “UCS Transformat ion Format”的缩写。

UTF-8以字节为编码单元,没有字节序的问题。UTF-16以两个字节为编码单元,在解释一个UTF-16文本前,首先要弄清楚每个编码单元的字节序。

UTF-8:UTF意为通用字集转换格式(Universal Character Set Transformation Format),UTF-8是Unicode的8位元格式。如果使用只能在同类位元组内支持8个位元的重要资料一类的旧式传输媒体,可选择UTF-8格式。

Unicode规范中推荐的标记字节顺序的方法是BOM。

在UCS编码中有一个叫做”ZERO WIDTH NO- BREAK SPACE“的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符”ZERO WIDTH NO-BREAK SPACE“。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符”ZERO WIDTH NO- BREAK SPACE“又被称作BOM。UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符”ZERO WIDTH NO-BREAK SPACE“的UTF-8编码是EF BB BF(读者可以用我们前面介绍的编码方法验证一下)。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。

Windows就是使用BOM来标记文本文件的编码方式的。

编码字符集论文 篇3

关键词:云南规范彝文,形码编码,输入法,字库

经过20多年的发展,我国已经在少数民族语言文字信息交换和处理领域取得了快速发展,其中藏、蒙、维、彝、朝5种民族文字领域更是硕果累累,不仅正式进入国际标准化组织(ISO)统一编码的国际标准,而且在输入法实现方面技术基本成熟。这对于少数民族语言文字信息的保护有着重要的现实意义。

实现一个完整的输入法,最重要的是文字字库的设计和制作,而核心内容便是字符集编码方案的选择和设计。这两项是决定一个输入法性能优良与否的关键。本文以云南规范彝文为研究对象,完成了云南规范彝文字库的设计和制作,并设计一套切实可行的规范彝文字符集的编码方案。

1 云南规范彝文字库的设计

字库是外文字体、中文字体以及相关字符的电子文字字体集合库,被广泛用于计算机、互联网及相关电子产品上。字库的设计是一件复杂庞大的工程,一套完整的字库在面市前要经过多个流程才能完成,其中涉及到诸多知识点,例如字稿的选择、扫描、数字化拟合,以及对字库的修改和整合[1]。

1.1 字库设计及数字化拟合字库

本文使用的是目前比较流行的数字化字形描述技术——TrueType,其中Font Creator Program软件设计并制作有3 751个彝文字的云南规范彝文字库。通过Font Creator Program实现修改字体、写入字体版权信息、控制字体属性等。

前期对手稿的处理十分关键,字库的正确性、美观与否都取决于对手稿的数字化,可以选择扫描的方式将手稿数字化。将手稿图像导入Font Creator Program中,如图1所示。

数字化拟合是利用专门程序按照一定的数学算法,自动将扫描后的点阵图像拟合成尽可能接近原告的数字化信息,即二次B样条曲线及直线。数字化拟合是很重要的一步,如果拟合准确,可以大幅提高修改字体的工作效率。

在导入字模图像的同时要对相应的参数进行设定。需要注意的是,导入的字模图像不能过大,应尽量低于100 kB。因为较大的图片会导致载入字模图片时间延长,降低效率。根据云南规范彝文字形的特征,经过计算在以200×200范围的点阵字模,比较适合彝文字模图像[2],如图2所示。

1.2 修改云南规范彝文字体

虽然计算机拟合效率较高,但数字化拟合只是完成了最初步的工作,若要提高字体质量,使制作的字库中的字体美观实用,还要靠人工修改才能完成。首先修字的工作量非常大,云南规范彝文字库共有3 751个彝文字。修字主要是通过编辑节点对字形进行编辑,保证每一个笔画要用最少的点描述,以尽可能地减少存储信息,提高还原速度。同时不仅要将字体控制在200×200的范围内,还要兼顾云南规范彝文的字形特征,尽量使其美观。

1.3 整合云南规范彝文字库

当编译完全部字符后需要对字体进行验证,可以得到验证报告,如图3所示,然后根据验证报告上的信息对有问题的字符进行相应调整。最后便可得到美观实用的云南规范彝文字库,现截取部分字库文件图片,如图4所示。

2 云南规范彝文字符集编码的设计

2.1 编码标准

我国现已颁布并实施的国际、国家标准有[3]:

(1)《信息交换用彝文编码字符集》(G86032),该标准根据1980年国务院颁布实施的规范彝文制定,共计1 165个彝文字符,主要起草人:沙玛拉毅。

(2)《信息交换用彝文15×16点阵字模集及数据集》,1992年该项标准由国家标准出版社出版、国家技术监督局颁布实施,主要起草人:沙玛拉毅。

(3)《信息交换用彝文24×24点阵字模及数据集》,该项标准于1997年由国家技术监督局发布,主要起草人:沙玛拉毅。

2.2 云南规范彝文编码设计思路

字库的编码是字库组织的依据,是文字处理的基础。现有彝文字库的编码多是采用国际音标形式对彝文字进行编码,但使用该方法进行编码有很大的局限性,即采用这种编码设计方案的输入法所面向的使用对象是熟悉彝文并掌握彝文字标准发音的群体。这也就阻碍了这种编码方式的使用和推广。基于上述原因,本文采用了形码的编码方式,无论是否熟知彝文字,亦或是第一次使用彝文字的用户都可以输出彝文字。

2.3 云南规范彝文字符集外码编码的实现

从信息论的角度对于信源进行编码,可以选择定长编码或者变长编码,虽然变长编码可以提高编码效率,在节省了时间的同时却牺牲了存储空间,存储这些变长码需要大量缓冲设备,如果出现了误码,容易引起错误扩散;定长编码在冗余度压缩编码中比变长编码占有一定优势,而且本文采用的全数字定长编码不仅容易发现手动输入错误,在键盘键入过程中也有利于提高输入效率。

彝文字的符号体系与汉字有明显的区别,尽管文字的使用频率和规范程度远不及汉文,但从彝文字结构本身来说自有其特色。首先,彝文字强调笔画简单,一般3~4画的居多;其次,彝文字的书写程序是强调从上至下、从左至右平向流线型的,文字整体符合书写规律;最后,彝文字的书写强调笔画的流畅,弧线的圆润和优美。因为彝文字具有以上特点,本文采用了一种基于笔画的编码方案。对待处理的文字,进行了外码的编辑。

2.3.1 对彝文字进行拆分

与汉字相似,首先确定该彝文字的结构,一般可分为上下结构、左右结构、包围结构。确定结构类型的标准主要是使拆分后的两部分结构占字面积相似,或是重心平衡。然后确定主要部首,规则是从左到右、从上到下、从外到内。如图5所示。

2.3.2 确定主要部首的组成笔画数

具体方法是将所有的彝文字都看作是直线与弧线组成的集合,每一个独立的直线和圆滑曲线算作为一笔,其他的折线都要拆分成独立的直线跟圆滑曲线来计算笔画数,直线上的交叉点不作为拆分点进行拆分。如图5中的彝文字的主要部首由两条圆滑曲线组成,即为两笔。笔画数则为2。

2.3.3 确定封闭区间的个数

封闭区间可以是由直线、圆滑曲线、折线所构成的独立区间,计算封闭区间个数时,以独立的最小封闭区间为准,即各个封闭区间的关系为相互独立,不存在包含于、相交于的关系。例如,图5所示的彝文字的独立最小封闭区间数为4。

图6中的彝文字为左右结构,其中主要部首由一条圆滑曲线构成,即为1笔,部首的笔画数则为1,封闭区间只有1个,则部首的独立最小封闭区间数为1;剩余部分由3条独立直线构成,即为3笔,画数则为3,没有封闭区间,独立最小封闭区间数则为0。

但整个彝文字体的封闭区间应按最小独立的封闭区间算,右边的剩余部分将左边的部首中的封闭区间划分为了3个小的独立的封闭区间,并和它产生了一个封闭区间,这样该彝文字一共有4个最小封闭区间。

2.3.4 确定结点个数

结点个数即为整个彝文字体中的交叉点的个数,如图4中的彝文字的结点个数为2,图5中的彝文字的结点个数为6。若结点个数为多为两位整数,如18个结点个数,则取这个两位数的个位进行编码,即外码编码即为8。

2.3.5 外码的编码原则

本文设计彝文字的外码由5个码组成,第1位码为主要部首的笔画数,第2位码是主要部首的独立的最小封闭区间的个数,第3位码是除主要部首以外剩余笔画数,第4位是整个彝文字的独立的最小封闭区间的个数,第5位是整个彝文字的结点个数。具体编码如图7,图8所示。

2.4 云南规范彝文字符集码表的制作

考虑到规范彝文字符编码时所占编码区域的大小,以及云南规范彝文输入系统与中英文输入系统、其它彝文输入系统的兼容性,本文采用了国际上的主流Unicode编码技术,它是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。其中E000~F8FF为自行使用区域(Private Use Zone),可存放6 400个字符,本文的云南规范彝文字符可全部存放在该用户自定义编码区域。制作生成的Unicode码表文件如图9所示。

2.5 输入法的实现

本文采用一种Windows系统实现文字输入功能的标准方法Windows IME API 即“IMM-IME”输入法生成器来实现云南规范彝文的输入,因为该IMM-IME结构在Win32平台下所提供的输入环境不仅系统稳定性较高,而且是一种方便、规范的方式[5]。

云南规范彝文输入法安装成功后,在Windows中的Microsoft Word 2003中,输入了传统彝文叙事歌《阿诗玛》的最后一句“说的说来听得听”,并且可与中文兼容共同显示,效果如图10所示。

3 性能分析

国家标准对键盘输入系统的性能评价主要有两个层次,一个是编码层次,一个是软件层次。在编码层次上要求达到定性指标,如易学性;在软件层次上要求达到量化指标,如输入的平均码长和重码键选率。因此易学性、平均码长和重码字键选率是衡量一种输入法性能的3个重要指标[4]。

3.1 易学性

本文所设计的云南规范彝文输入法不仅是针对彝文学者的输入法,而是面向所有有彝文输入要求的使用者,即便是不懂彝文的使用者也可以通过简单的学习使用该输入法完成彝文输入。

3.2 彝文输入的平均码长

输入平均码长是指再输入给定的测试样本时,测得的输入每个彝文字的平均击键次数[6]

平均码长=(键/字) (1)

以云南规范彝文字库中随机抽取的1 000个彝文字为输入测试样本,由于本文中使用的为定长编码,其中测试样本击键次数分布如表1所示。

根据式(1)计算

平均码长=10×11+9×21+8×90+7×702+6×1761000(键/字)=6.989(键/字) (2)

3.3 彝文输入的平均码长

重码字键选率是指在输入给定测试样本过程中,通过重码选择确认的彝文字数与测试样本总字数的百分比[6]

重码字键选率=×100%(3)

在输入测试样本时,重码选择确认的彝文字数与测试样本字数分布如表2所示。

根据式(2)计算

重码字键选率=45+30+21+10+12+4+4+3+4+12+61000×100%=15.1%(4)

4 结束语

彝文是一种原生的古老文字,它在古老方面与汉文难分伯仲,却不是借用和摹仿汉字的产物。彝文产生于新石器时代到铁器时代之间,它也和其他民族的古老文字一样经历了一个漫长的发展过程和文字发展的必经阶段,彝文发展到今天已有4 000多年的历史。但是,由于彝文所使用的书写材料的易腐蚀性,加之南方潮湿闷热的气候等,都给彝文文献的保存造成了困难。因此在彝文历史文化研究中,需要收集、整理、保存的彝文文献,迫切需要解决的就是彝文字信息化问题。本文设计和制作的云南规范彝文字库及设计的规范彝文字符集的编码方案,为彝文的信息处理另辟蹊径。

参考文献

[1]吕强,史磊,杨季文.TrueType字体文件格式初探[J].计算机研究与发展,1995,32(11):23-31.

[2]陈顺强,张阳,熊剑.四川古彝文字库设计及其字符集的编码[J].西南民族大学学报:自然科学版,2009,35(4):913-918.

[3]沙马拉毅.计算机彝文信息处理[M].成都:四川民族出版社,2000.

[4]沙马拉毅,钱玉趾.规范彝文编码方案[J].中文信息,1990(3):12-13.

[5]胡宇晓,马少平,夏莹.基于MM-ME输入法接口的实现方法[J].计算机工程与应用,2002,38(1):117-120.

编码字符集论文 篇4

计量封印产品主要用于电能计量装置上进行加封[1], 防止未授权的人员非法开启计量装置, 达到防窍电的目的。为满足电力企业防止封印被伪造, 以及在使用上对其实施规范化、信息化、智能化管理的要求, 封印产品上通常设置有激光打印的字符编码、条码等防伪特征, 而且每个封印产品在生产出厂前均须将防伪信息读取、录入封印管理系统中。为增强防伪性能, 某些型号的封印产品具有两种防伪特征 (如图1所示) , 在正面采用条码防伪特征, 在侧面采用字符编码防伪特征, 产品在包装盒中的情况如图2所示。以往对此产品两种防伪信息的识别、录入工作主要采用人工方式, 由工人目检包装盒中的产品侧面字符编码是否与封印管理系统中预设的数据相符;然后, 人工逐个拿出产品用手持条码扫描器识别条码信息输入管理系统中。由此可见, 该项检测、数据绑定录入工作的效率相当低下, 而市场上还没有这方面的自动化检测装置, 因此, 有必要研制封印产品字符编码与条码数据绑定系统。

本项目研究综合应用机械设计、机器视觉检测与自动化控制技术, 开发出一种封印产品字符编码与条码数据绑定系统。采用机器视觉检测技术对产品字符编码及条码进行自动识别, 开发了基于PLC控制的自动化检测夹具, 应用虚拟仪器开发平台Lab VIEW完成检测系统的软件开发。实践证明, 该系统的应用实现了封印产品两种防伪特征的自动化检测与数据绑定录入, 大大提高了此项检测工序的自动化水平和工作效率。

1 系统检测夹具设计

如图1所示, 封印产品的两种防伪特征位于不同位置上, 由图2可知, 产品在包装盒中只能呈现出所有侧面字符编码, 而正面的防伪条码由于产品之间的相互遮挡, 无法呈现。因此, 必须设计出一种新型的自动化检测夹具, 使产品放置于检测夹具上能在两个不同方向上自动呈现出两种防伪特征, 通过在两个方向上建立分布式机器视觉检测系统, 可以实现对产品字符编码和条码两种防伪特征的图像采集、检测。

本项目设计的自动化检测夹具应用情况如图3所示, 将产品放置于检测夹具上, 所有产品侧面呈平整状态 (如图3 (a) 所示) , 在产品垂直上方设置有机器视觉装置, 可以对产品侧面的所有字符编码进行图像采集。检测夹具可以在PLC控制下向上运动, 前后位置不同的封印产品运动上升的距离不同, 这样就使产品能够自动错开摆放, 从而使产品所有的条码特征同时呈现 (如图3 (b) 所示) , 在产品条码正前方设置有另一个机器视觉装置, 可以对产品正面的所有条码进行图像采集。两次检测采集的图像分别传输入软件系统中处理, 将检测结果进行数据绑定再自动录入封印管理系统中。

2 系统检测流程

系统检测流程如图4所示, 将封印产品放入检测夹具中, 利用光电检测技术探测到产品存在, 由PLC控制器产生视觉装置1的外触发信号, 触发相机采集到所有封印产品侧面编码的图像输入计算机中, 软件系统中的字符编码检测程序进行图像处理、分析, 得到字符编码识别结果, 并检验产品是否按照编码顺序排列。字符编码检测合格后, 计算机软件系统通过Mod Bus协议与PLC控制器通信, 在PLC控制下使检测夹具向上升起, 呈现所有产品防伪条码, 然后产生视觉装置2的外触发信号, 采集产品的正面条码图像输入计算机中, 软件系统的条码检测程序进行图像处理、分析, 得到所有条码的识别结果, 并检测产品是否按条码顺序排列。如果两次检测均合格, 则将产品上的字符编码与条码进行数据绑定, 采用UDP通信方式输入封印管理系统中, 然后PLC控制夹具下降, 检测系统复位到待机状态, 将合格品包装出货。在检测中, 如果出现字符编码、条码的识别错误, 或者产品顺序检验错误, 则系统产生报警信号, 并在操作界面上显示出错位置, 检测系统复位待机, 将不合品剔出处理。

3 系统检测原理

检测系统以虚拟仪器Lab VIEW为开发平台, 运用Ni Vision development module工具包辅助完成封印产品字符编码及条码的识别、数据绑定软件程序 (软件界面如图5所示) 。

3.1 字符编码检测

字符编码检测应用了机器视觉OCR技术, 其原理和主要流程如下:

1) 首先通过自学习训练建立封印产品字符编码模板库, 在项目中, 根据字符在图像分割时呈现的特征, 针对每个字符建立多模板[2], 以增强模板匹配识别的适应性。

2) 根据封印产品在检测夹具上的位置设定包含字符与背景的ROI (感兴趣区域) , 并保存于计算机硬盘中, 检测时由程序自动调用。

3) 对采集到的字符编码图像进行图像滤波、图像增强处理;软件程序按照设定的ROI顺序分别调用所有产品字符编码的ROI信息, 采用局部最大方差法进行字符图像二值化分割, 二值化后字符外存在孤立的噪声点, 图像的模糊也造成字符边缘产生噪声, 因此应用形态学腐蚀运算进行处理, 以消除孤立噪声点及边缘噪声。

4) 将二值化分割后的字符图像与模板库中的图像进行匹配运算, 根据运算结果, 待识别的字符被认为与相似度得分最高的模板一致;将各个字符编码识别结果存入字符识别数组中。

5) 检验字符识别数组中字符编码数据是否按顺序排列, 若是则合格, 进入下一步条码检测;反之, 则作为不合格品剔出, 系统复位等待下一个产品的检测。

3.2 条码检测

条码检测应用了机器视觉条码识别技术, 其原理和主要流程如下:

1) 根据产品在夹具上的位置设定所有待识别条码的ROI, 并保存在计算机硬盘中, 检测时由程序自动调用。

2) 检测前在软件中设定待检产品的条码类型, 有一维码 (code 128) 、二维码 (PDF417、QR code、Data Matrix) 等四种类型选择。

3) 对采集到的条码图像进行图像滤波、图像增强处理;软件程序按照设定的ROI顺序分别调用所有产品条码的ROI信息, 以及调用条码图像识别函数, 完成所有条码信息的读取, 结果存入条码识别数组中。

4) 检验条码识别数组中条码数据是否按顺序排列, 若是则合格, 进入下一步数据绑定录入环节;反之, 则属于不合格品, PLC控制夹具下降及将产品剔出, 系统复位等待下一个产品检测。

3.2 数据绑定录入

在Lab VIEW开发环境中完成数据绑定录入程序的编程, 源程序子VI如图6所示。字符编码与条码的识别结果分别存放在两个独立的数组中, 条码识别成功后, 将两个数组中相同位置的元素均提取出来, 组合成新的数组元素, 从而形成数据绑定数组。以UDP协议方式将绑定的字符编码和条码数据传输入封印管理系统, 按照系统输入数据的格式要求设置好正确的格式, 然后调用UDP通信函数发送数据, 并与封印管理系统中预设的数据进行比对校验。

4 系统检测实验

从封印产品的两种防伪特征来看, 其字符编码均是具有10位字符的相似印刷体, 而条码类型则有四种:一维码 (code 128) 、二维码 (PDF417、QR code、Data Matrix) , 根据条码类型的不同, 在生产过程中各抽取1000盒产品应用于检测系统进行数据绑定试验。结果如表1所示, 检测成功率达到99.8%以上, 而且该工序的工作效率比以往提升了超过200%。出现识别错误的情况均为将良品误判为不良品;由于字符编码及条码的识别结果均需进行顺序检验, 而且输入管理系统后还要进行二次校验, 因此, 出现将不良品误判为良品的可能性为零。实验证明, 该数据绑定系统达到了应用于大批量自动化生产的要求。

5 结束语

本文针对封印产品字符编码及条码防伪特征自动化绑定、录入的需求, 研究开发了基于机器视觉的封印产品字符编码与条码数据绑定系统。设计出一种新型的自动化检测夹具, 可以在PLC控制下自动呈现产品的两种防伪特征;应用机器视觉检测技术对产品字符编码及条码进行自动化识别和顺序检验, 并将识别数据绑定录入封印管理系统。该数据绑定系统适用于封印产品行业大批量生产时对产品防伪特征进行自动化检测与数据绑定, 改变了以往过多依赖人工操作的落后现状。目前, 该系统已在江门市大光明电力设备厂有限公司使用了超过1年时间, 促进企业实施了生产线技术升级、改造, 提高了生产的自动化水平及生产效率。

参考文献

[1]何志强, 徐二强, 丁涛, 等.关于实现电能表铅封自动化的研究[J].电测与仪表, 2011, 48 (12) :83.

[2]吴伟伟, 王小红, 周亚南.字符识别中两种改进的模板匹配算法[J].传感器世界, 2008, (6) :35-37.

上一篇:微电影品牌化突围下一篇:普采技术