本文针对利用普通拍照设备在自然环境下抓拍到的含QR码的非标准图像,首先对其进行灰度化处理,其次采用中值滤波、全局阈值二值化、图像矫正等方法与过程完成图像的预处理工作,得到了比较标准的QR码图像。在图像矫正中,采用了Sobel算子边缘提取、Hough变换、图像旋转、平面投影转换及双线性插值法等方法。最后对于矫正后的图像,经过确定寻像图形、确定版本和格式信息、恢复掩膜、恢复码字并纠错、数据码字译码等一系列的处理,对其实现QR码译码。
QR 码是快速响应码Quick Response Code 的简称,可见快速识别是它最显著的特点,同时还能全方位对它识别。这种矩阵式二维码是日本Denso 公司为汽车制造业研制的,它不仅具有使用寿命长、印制和携带方便等优点,而且还具有一维条码及其他二维条码无法实现的信息密度大、防伪性好、能包含图片、指纹、签字、声音和汉字等多种数据及压缩处理中国汉字字符的特点[1]。自产生以来,二维条码就受到各个领域的密切关注, 目前二维码实际广泛使用主要在亚洲, 且已广泛应用于很多领域[2]-[4]。
比如用于身份证明、传媒行业、电子票务、物流行业、制造业等。
二维码的识读方式主要分为两类,一类是激光读取式,一类是图像读取式。激光读取式因为受限于条码的制式,其发展空间变得越来越小。图像读取式因其二维信号的获取优势和可脱离专用识读器的特点, 具有很大的发展空间。
目前主要采用以下算法对二维条码图像进行预处理:首先将灰度图像二值化, 采用适当的边缘提取算子提取边缘,接着利用Hough 变换或投影变换计算二维条码倾斜的角度,最后用双线性变换插值,防止失真[5]。使用通用设备采集的条码图像,很容易受到光照不均和采集装置位置导致的几何失真影响,这会给译码带来很大困难,使译码的准确率大大降低。因此,如何对图像进行正确的二值化和几何矫正已成为QR 码图像处理要解决的核心问题。
本文主要研究二维条码中QR 码图像的处理与矫正,不使用专用条码扫描识读器而是使用普通摄像设备在自然环境下抓拍含QR 码的图像, 然后对抓拍到的图像通过图像预处理分离出QR 码并进行译码。
2. 图像预处理 本文的应用背景为:从手机或电脑的摄像设备抓拍到的含有QR 码图形的图片中识别QR 码并提取出嵌入其中的信息。而使用手机或PC 摄像头拍摄到的图像往往存在散焦模糊、阴影、反光、图形旋转及几何失真等缺点,若不降低或消除这些干扰,我们的译码结果将存在很大的误差,或者译码失败,因此图像预处理是QR 码识别的关键[6]。如图1 所示为实际拍摄得到的图像,以后图像预处理过程均以此图为例。
具体说来, 图像预处理的目的是:通过对拍摄到的图像进行一系列处理从中准确地找到QR 码图形, 并通过图像矫正将其还原为标准的QR 码图形。而译码则是对第一步得到QR 符号进行解码,提取嵌在其中的信息。
图像预处理流程如图2 所示。