食品溯源系统编码的自动生成(5)

2019-05-18 14:21

图3-3 向上或向下的规格自付的位的布置

③ 在布置符号字符过程中,若两个模块纵列同时遇到校正图形或定位图形的水平边界,则可在图形的上面或下面继续布置,此时视编码区域是连续的。

④ 如果遇到符号字符区域的上边界或下边界(即符号的边缘,格式信息,版本信息或分隔符),应改变方向将码字在左侧的纵列或分隔符。

图3-4 布置方向改变的符号字符位步置示例

⑤ 如果符号字符的右侧模块纵列遇到校正图形或版本信息占用的区域,位的布置形成不规则排列符号字符,在相邻校正图形或版本信息的单个纵列继续延伸。如果字符在可用于下一个字符的两列纵列之前结束,则下一个符号字符的首位放在单个纵列中。

另一种可供选择的符号字符布置方法,可得到与以上方法相同的结果:将整个码字序列视为一个单独的位流,从最高位开始自右向左,分别按向上和向下的方向交替布置于两个模块宽的纵列中,并跳过功能图形占用的区域,在纵列的顶部或底部改变方向,每一位放在第一个可用的位置上。如版本1中符号的布置方法。

17

图3-5 版本1符号的符号布置

3.2.6 掩模

在QR码符号中加入掩膜信息是为了提高QR码识读的可靠性,并尽可能地避免位置探测图形出现在符号的其它区域。掩模不用于功能图形,只对编码区域进行掩膜。

掩膜的实现过程为:先用多个矩阵图形(掩膜图形)连续地对编码区域模块图形(格式信息和版本信息除外)进行XOR操作。XOR操作将模块图形依次放在每个掩模图形上,并将对应于掩模图形的深色模块的模块取反(浅色变成深色,或相反);接着评价各个掩膜的结果,选择得分最低的图形。

QR码提供8种掩模图形,通过将编码区域(除格式信息和版本信息之外)内条件为真的模块定义为深色而产生。如果用户选定其中一种,则按用户选择的进行掩模添加;如果用户不特定选择掩模,则需要自动选择合适的掩模。表3.4为掩模图形参考和相应的掩模图形的生成条件,其中i代表模块的行位置,j代表模块的列位置, (i,j)=(0,0)代表符号中左上角的位置。

对8种掩模添加后的结果图形进行评价的原则是选择得分最低的图形,即评分标准认为的深浅色模块最均衡图形。掩模结果的评估详见QR码国家标准GB/T l 8284-2000。

表3.4 掩模图形生成条件

掩模图形选择 000 001 010 011 18

条件 (i+ j)mod 2=0 i mod 2=0 j mod 3=0 (i+ j) mod 3=0 100 101 110 111 3.2.7 格式信息

(i div 2)+(j div 3) mod 2=0 (i+ j)mod 2+ (i+ j)mod 3=0 ((i+ j)mod 2+ (i+ j)mod 3)=0 ((i + j) mod 3+(i + j) mod 2) mod 2=0 QR码格式信息共15位,包含5个数据位,其中前2位为纠错等级,后3位为掩模图形号码,剩余10位是用BCH(15,5)编码计算得到的纠错位。将得到的15位格式信息与掩模图形101010000010010进行异或运算,以确保纠错等级和掩模图形合在一起出现全是0的情况。

QR码版本信息共18位,包含6位数据位,为版本信息,通过BCH(18,6)编码计算出12个纠错位放在数据位之后。

因为格式信息和版本信息的正确译码是整个符号正确译码的关键,因此QR码提供了格式信息和版本信息的冗余,它们在符号中均出现两次。

3.3 编码程序介绍

QRCodeEncoder类主要的数据成员及成员函数: public Class QRCodeEncoder//编码类

{public enum ENCODE-MODE{ALPHA-NUMERIC,NUMERIC,BYTE,CHINA};//四种模式数字、字母数字、字节、汉字

public enum ERROR-CORRECTION{L,M,Q,H};//四种纠错等级 internal ERROR-CORRECTION qrcodeErrorCorrect;//纠错变量 internal ENCODE-MODE qrcodeEncodeMode;//编码模式变量 internal int qrcodeVersion;//版本号

internal int qrcodeStructureappendN;//参数N internal int qrcodeStructureappendM;//参数M

internal int qrcodeStructureappendParity;//奇偶校验位 internal Color qrCodeBackgroundColor;//背景颜色 internal Color qrCodeForegroundColor;//前景颜色

internal int qrCodeScale;//矩阵码符号每个模块的像素大小

internal String qrcodeStructureappendOriginaldata;//要进行原始数据流 public QRCodeEncoder(){??} //编码类的构造函数

public virtual void setStructureappend(int m,int n,int p){??} //设置编码的扩充解释模式

public virtual int calStructureappendParity(sbyte [] originaldata) {??}//编码的扩充解释模式中的奇偶校验位产生函数

public virtual bool[][]calQrcode(byte[] qrcodeData ) {??} //根据要编码的数据得到布尔型二维矩阵

private static sbyte[]divideDataBy8Bits(int[] data,sbyte[]bits, int maxDataCodewords) //把位流按码字分组

19

private static sbyte [] calculateRSECC(sbyte[]codewords,sbyte rsEccCodewords,sbyte[]rsBlocdorder,int maxdataCdewords maxcodewords){??}//计算数据的纠错

码函数,codewords为要纠错的码字,resEccCodewords为纠错码字,rsBlockorder纠错码字块,maxDataCodewords最大信息数据码字.最大数据码字 prirate static sbyte selectMask( sbyte[][]matrixContent int maxCodewordsBitWithRemain)//选择掩模图像函数

public virtual Bitmap Encode(String content, Encoding encoding) //把要编码的数据以及根据它的编码模式的类别来生成图像 public virtual Bitmap Encode(String content)

//根据给定的原始数据函数未构造QR码的符号图像 private String GB2312(string str)

{Encoding gb=Encoding.Get Encoding(“gb2312”); byte[]bytes=gb.GetByte(str);

string low ode=System.Convert.ToString(bytes[0],16); //取出元素1编码内容(两位16进制)

string hightCode=System.Convert.ToString(bytes[1],16); //取出元素2编码内容(两位16进制) string encode=lowCode+hightCode return encode;

//函数返回汉字的GB2312值内码(四位16进制) } }

20

第4章 QR码的译码设计

4.1 QR码译码原理

QR的译码是从识读一个QR码符号到输出数据字符的过程,是编码的逆过程。这个过程主要分为三部分:图像预处理和QR码识别、QR码纠错、QR码译码。

图像预处理过程主要是在采集的图像中定位QR码图像,QR码识别过程主要是通过图像识别得到单元模块的条码符号矩阵,并将符号矩阵转化成一维字节流的形式,纠错是应用检测和纠错译码程序来纠正替代错误与拒读错误,直到规定的纠错容量。然后通过QR码解码操作,得到存储在QR码符号矩阵中的信息数据。

从识读一个QR码符号到输出数据字符的译码步骤是编码程序的逆过程,图4-1为该过程的流程:

(1) 定位并获取符号图像。深色和浅色模块识别为由“0”与“1”组成的阵列。

(2) 识读格式信息(按需要去除掩模图形并完成对格式信息模块的纠错,识别纠错等级与掩模图形参考)。

(3) 识别版本信息(如果应用),确定符号的版本。

(4) 用掩模图形(掩模图形参考己经从格式信息中得到)对编码区域的位图进行异或处理,消除掩模。

(5) 根据模块排列规则,识读符号字符,恢复信息的数据与纠错码字。

(6) 用与纠错等级信息相对应的纠错码字检测错误,如果发现错误,则进行纠错。 (7) 根据模式指示符和字符指示符将数据码字划分成多个部分。 (8) 最后,按照使用的模式进行译码,得出数据字符并输出结果。

21


食品溯源系统编码的自动生成(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:广州市轨道交通三号线盾构工程项目部 QC小组活动成果--控制广深

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: