7.2 理论基础
本案例选择的二维码编码类型是QR二维码,所以我们在设计之前首先对QR二维码进行简单介绍。
7.2.1 QR二维码简介
QR二维码(Quick Response Code)的全称为“快速响应矩阵码”,是由日本Denso公司于1994年开发的一种矩阵式二维码。QR二维码具有存储信息量大、稳定性高、表示的信息类型多样等优点,可用于存储汉字、图像、音频等多种数据类型的信息。QR二维码还具有以下特点。
1.解析效率高
QR二维码区别于其他二维条码的一个主要优点就是易于识别和读取,且运算效率较高。据统计,使用二维码识读设备解析条码时,一秒可顺利解析30个含有100个字符的QR二维码;而对于含有相同数据信息的PDF417条码,一秒只能解析3个;对于含有相同数据信息的Data Matrix,一秒最多也只能解析3个。
2.旋转不变性
QR二维码的另一个主要优点是可以360°全方位解析。根据QR二维码图像的特点,在解析QR二维码的过程中首先要根据其四条边界与坐标轴的关系来计算倾斜角度,然后将QR二维码做旋转处理,使其边界与坐标轴分别平行、垂直,最后根据QR二维码三个位置的探测图形对其进行识别。
3.有效表示汉字
在日文字典中本身存在着大量的汉字,因此QR二维码在其设计之初就充分考虑了对汉字的编解码支持,能够用特定的数据压缩编码来表示汉字和日文。QR二维码仅用13位二进制数据就足以表示一个汉字,而其他二维码只能用字节数据模式来表示汉字,需要用两个字节即16位二进制数据表示一个汉字,所以QR二维码对汉字的表示效率要超出其他二维码约20%。
7.2.1.1 QR二维码符号的结构
QR二维码符号的结构见图7-1,包括编码区域、空白区域和功能区域,其中功能区域主要包括探测图形、分割符、定位图形和校正图形,各部分的主要功能如下。
1.探测图形
探测图形分布在三个位置,如图7-1所示,分别位于QR二维码的左下角、左上角和右上角。每个位置的探测图形均由同心正方形组成,分别为3×3深色模块、5×5浅色模块、7×7深色模块。根据QR二维码的掩模作用,在内部其他地方几乎都不可能遇到类似的图形,所以探测图形可以用于识别QR二维码,并确定QR二维码的位置和方向。
图7-1 QR二维码的符号结构
2.分割符
分割符位于探测图形和编码区域之间,其宽度默认为1个模块,属于浅色模块。
3.定位图形
定位图形根据方向可以分为水平和垂直定位,其宽度均为1个模块,分别由深色与浅色模块交替组成,对应一行和一列图形。定位图形的位置分别位于第6行与第6列,用于确定QR二维码的密度和版本,也可用于辅助定位图形坐标。
4.校正图形
校正图形也由同心的正方形构成,分别由5×5深色模块、3×3浅色模块和中心深色模块组成,不同的版本可能对应不同的校正图形数量。
7.2.1.2 QR二维码的基本特性
随着智能手机等设备的普及,QR二维码被越来越广泛地应用于不同的领域,如常见的收付款码、电子票据、电子会员卡等,给我们的日常生活带来无数便利,深受广大年轻人群的推崇。QR二维码特点鲜明,其基本特性见表7-1。
表7-1 QR二维码的基本特性
7.2.2 QR二维码的编码和译码流程
为了促进QR二维码在我国形式标准化应用,中国物品编码中心制定了快速响应矩阵码的国家标准,该标准对ISO/IEC18004标准进行了合理取舍及补充、完善。
7.2.2.1 QR二维码的编码流程
QR二维码的编码流程如图7-2所示。
图7-2 QR的编码流程
1.数据输入及分析
指对输入的数据进行分析,确定数据编码对应的字符类型及所选择的纠错等级。如果没有输入相关参数,则选择默认的纠错等级,然后根据所确定的数据类型及纠错等级,选择与数据相适应的最小编码版本。
2.数据位流
在数据字符类型等参数确定后,QR二维码将按照所选模式的编码标准将其转换成位流。为了将得到的位流生成标准的码字,需要在数据位流前加上模式指示符,在数据位流后加上终止符,按每8位来得到一个码字。此外,如果指定版本所要求的数据字数未能填满,则可以加入填充字符进行完善。
3.纠错编码
将得到的码字序列按RS纠错标准进行分段,生成相应的纠错码字,并将其以尾部衔接的方式加入相应的数据码字序列。
4.排列信息
按标准数据排列方式构建最终的排列信息,如果出现位数不足的现象,则可以考虑加入剩余的位。
5.标识功能
不同的版本要求嵌入的校正图形数量也往往不同,进而对应不同的排列矩阵。因此,如果要在矩阵中加入功能图形,则需要标识功能图形的位置,并在对应的位置加入相关的探测图形、分割符、定位图形和校正图形。
6.数据模块
将数据模块布置在矩阵中,并按照排列标准将码字放入矩阵中的对应位置。
7.掩模寻优
选择8种掩模图形依次对QR二维码区域的位图进行掩模处理,并对所得到的8种结果进行分析,保留最优的一种。
8.版本格式
如果QR二维码的版本在7以上,则生成版本信息和格式信息,构成符号,加入矩阵对应的位置。
9.条码图形
根据编码步骤得到只包含0、1的矩阵,进而生成对应的黑白方块条码图形。
7.2.2.2 QR二维码的译码流程
QR二维码的译码模块可以选择两种方式读取文件:一种是直接读入包含条码的图像文件,定位条码图像区域,进行译码;另一种是读入包含条码信息的QR二维码文件,进行译码。本案例选择第1种方式,即通过读入图像文件进行区域定位,最后进行译码的操作流程。其中,在读取图像文件后,由于条码图像的采集过程容易受到倾斜、噪声等因素的干扰,所以需要在进行条码定位前对图像进行预处理,一般包括图像倾斜校正、平滑滤波、二值化和图像旋转等操作。QR二维码图像的识别流程如图7-3所示。
图7-3 QR二维码图像的识别流程
其中,译码的步骤和编码正好相反,步骤如下。
(1)提取格式信息、版本信息。
(2)消除掩模。
(3)提取数据信息和纠错信息。
(4)RS纠错。
(5)对纠错后的数据信息进行译码。
因此,通过纠错流程,图像的某些噪声污染也能得到正确的译码,在一定程度上提高了QR二维码的可识读性。
7.2.3 主成分分析方法
主成分分析方法(Principal Component Analysis,PCA)是由Turk和Pentlad于1991年提出的,以Karhunen-Loeve变换(即K-L变换)为基础,是一种常用的正交变换。下面对K-L变换做一个简单介绍,假设X为n维的随机变量,则其可以通过n个基向量的加权和来表示:
X=(φ1,φ2,…,φn)(α1,α2…,αn)=Φα
系数向量为:
α=φΤX
其中,αi是加权系数,φi是基向量,此式可以用矩阵化的形式表示为:
因此,K-L变换展开式的系数可用下列步骤求出。
1.自相关矩阵
计算随机向量X 的自相关矩阵,假设样本集合未经过分类,将μ记作其均值向量,则可以把样本数据的协方差矩阵作为K-L坐标系的自相关矩阵,其中,μ为样本集合的总体均值向量。
2.本征值和本征向量
对自相关矩阵或者协方差矩阵 R 计算其本征值λi、本征向量φi,将本征向量集合记为φ=(φ1,φ2,…,φn)。
3.计算系数
以本征向量集合作为基向量空间,计算方程式的系数,即α=φTX。
因此,K-L变换的实质是以自相关矩阵的本征向量为基础建立一个新的坐标系,如果将一个物体进行主轴沿特征矢量对齐的变换,则可以消除原数据向量各分量之间的相关性,进而在一定程度上消除某些包含较少信息的坐标分量,达到特征空间降维的目的。
主成分分析作为一种标准的人脸识别方法,具有简捷、高效的特点,已经得到了广泛的应用。传统主成分分析方法的基本原理是:首先,基于K-L变换抽取人脸的主要成分,构建特征脸空间;然后,将待识别图像投影到此空间,得到一组投影系数;最后,通过与各组人脸图像的投影系数的比较进行识别。这种方法可以有效减少压缩前后的均方误差,提高降维空间的分辨能力及识别准确率。