《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 一种基于ADI低成本DSP实现的QR码识别系统
一种基于ADI低成本DSP实现的QR码识别系统
来源:电子技术应用2013年第4期
余维克,黎福海
湖南大学 电气与信息工程学院,湖南 长沙410082
摘要: 设计了一种可在ADI低成本DSP(小内存平台)上实现的QR码识别系统,并在以BF592为核心的硬件平台上实现。系统基于图像处理方法,在32 KB的数据空间内实现了二值化压缩并行的图像采集时序、多个方向扫描对QR码进行定位、采样解码等功能。经测试,该系统取得了良好的识别效果。
中图分类号: TP368.2
文献标识码: A
文章编号: 0258-7998(2013)04-0042-03
QR code decoding system based on ADI low-cost DSP
Yu Weike,Li Fuhai
College of Electrical and Information Engineering, Hunan University,Changsha 410082,China
Abstract: A QR code decoding system which can be implemented on ADI low-cost DSP is designed. The system is based on image processing and implemented on the hardware platform with center processor BF592. The whole system is running within 32 KB data memory, including image capturing and displaying, image storing and thresholding using paralleled timing, QR code detection with multi-direction scanning, sampling and decoding and so on. The experimental result shows the good performance of the system.
Key words : QR decode;image processing;small-memory;BF592

    近年来,随着数字图像处理技术的发展,二维码技术获得了广泛应用。QR(Quick Response)码是常见二维码中的一类,于1994年由日本DENSO WAVE公司发明,目前在火车票、门票、网站、广告等多种信息传播媒介中得到普及。与常见的条形码相比,同等面积的QR码具有更大的信息容量。

    QR码识别设备一般为嵌入式设备,与个人电脑相比,嵌入式设备对成本和功耗等方面有较高的要求,因此其内部存储空间通常较小。本文针对这种情况,在以ADSP-BF592为核心处理器的硬件平台上设计并实现了一种QR码识别系统。该系统通过采集与二值化并行的方法采入二值图像以提高内存对图像的容纳力,识别过程中避免了常规图像处理算法中大量的内存分配,成功地在小内存平台上实现了QR码识别功能。
1 系统硬件平台
    系统以ADSP-BF592为核心处理单元,采用一个CMOS单板摄像头拍摄QR码图像信息,在DSP内部存储空间运行QR码识别算法,并将识别结果显示在LCD屏上。系统硬件平台框图如图1所示。

    ADSP-BF592是ADI公司Blackfin系列处理器产品系列中的一款DSP,低成本、低功耗的特点使其通常用于嵌入式产品中。BF592提供200 MHz和400 MHz内核时钟速度,具有丰富的外设,包括2个SPORT口、1个PPI、2个SPI、4个通用计数器以及1个包含VDK RTOS和C运行库的工厂编程指令ROM块[1-2]。但是BF592的内部仅有32 KB的代码空间和32 KB数据空间,且没有外部总线,这在一定程度上限制了其实现常见的图像处理算法。
    CMOS摄像头通过PPI和TWI接口与DSP连接,分别用于采集图像和配置摄像头;显示拍摄到的灰度图像的TFT屏通过SPORT接口与DSP连接;显示QR码识别结果的LCD屏通过SPI接口与DSP连接。

 


2 图像采集与二值化
2.1 二值化

    QR码存储的信息均为二值信息,所以二值化是QR码识别中必要的一步。本文采用最大类间方差法对图像进行全局二值化[3]。该方法是一种自适应的阈值确定的方法,又叫大津法,简称OTSU。二值化即依据灰度特征将图像分割为前景和背景两类,OTSU法通过最大化前景与背景之间的方差选取最佳阈值。类间方差?滓b2(t)可表示为:

    为简化描述,假设采集的二值图像的宽和高均为448像素,具体时序可描述如下:
    (1)采集一幅158×158像素的低分辨率灰度图像。利用OTSU法算出其阈值t*;
    (2)释放低分辨率灰度图像,分配大小为25 088 B的二值图像内存,并开辟两块临时内存A、B,大小均为448 B,分别用于临时存储灰度图像中的一行;
    (3)将内存A中的每个字节与阈值t*进行比较,并将每8个像素拼成1 B存入二值图像内存。与此同时,用DMA方式将一行图像的448个像素点存入内存B;
    (4)与步骤(3)类似,将内存A中的字节二值化压缩存入二值图像中,同时将一行图像的448个像素点存入内存B;
    (5)重复步骤(3)与步骤(4),直到图像传输完毕;
    (6)释放内存A、B。
    基于以上方法,本文设计的系统可采集448×448像素的二值图像,图像分辨率显著提高,降低了QR码的识别难度。
3 QR码的定位与识别
3.1 定位

    QR码定位通常使用传统的图像处理方法,如边沿检测、Hough变换、离散余弦变换[4]等,然而这些方法都需要较大的内存,无法适应小内存的场景。本文针对小内存平台,利用QR码位置探测图形(Finder Pattern)的比例关系对QR码进行搜索定位。QR码的结构如图3所示,在QR码有3个相同的位置探测图形,分别位于其左上角、右上角和左下角。每个位置探测图形可以看作3个重叠的同心正方形组成,它们分别为7×7个深色模块、5×5个浅色模块、3×3个深色模块。

    位置探测图形的特征如图4所示,其模块的宽度比为1:1:3:1:1,且此特征具有缩放和旋转不变性。符号中其他地方遇到类似图形的可能性极小,因此可以在视场中迅速识别可能的QR码符号[5]。通过识别QR码的3个位置探测图形,可以明确地确定视场中QR码的位置和方向。具体过程可描述为:
    (1)对图像进行多个方向的扫描,对于每个方向,都标记出模块宽度比接近1:1:3:1:1的位置;
    (2)寻找在每个方向上都有标记的特征位置并求其交点。所求交点即可作为位置探测图形的中心。
    该方法同样可应用于定位QR码的校正图形(Alignment Pattern)。

位置探测图形定位结果,其他网格线为采样网格。
    对于位置探测图形受到严重污染的情况,由于内存对于算法的限制,本文并没有做相应处理,可能造成识别失败。这种情况可通过适当增加系统内存解决,如采用BF52x系列处理器[8-9]。
    本文主要针对小内存平台上的图像处理情形,主要设计了图像采集、QR码定位算法。本文介绍的图像采集方法也可运用在其他小内存的图像处理系统中。实验结果表明,本算法占用内存小,速度快,适应性较强,能适用于实际系统。
参考文献
[1] ADSP-BF59x blackfin processor hardware reference(Revision 1.0)[Z].Analog Devices Inc,2011.
[2] ADSP-BF592 blackfin embedded processor data sheet(Rev A)[Z].Analog Devices Inc,2011.
[3] OTSU N.A threshold selecti on method from gray-level histograms[J].IEEE Trans.on Systems Man and Cybernetics,1979,9(1):62-66.
[4] 李璐.面向手机的二维条码定位识别算法的研究[D].合肥:合肥工业大学,2007.
[5] 张民,郑建立.基于符号特征的QR码识别算法[J].计算机工程,2011,37(4):278-280.
[6] FALAS T,HOSSEIN K.Two-dimensional bar-code decoding with camera-equipped mobile phones[C].Fifth Annual IEEE  International Conference,White Plains,NY,2007.
[7] 国家质量技术监督局.GB/T18284-2000快速响应矩阵码[S].2000.
[8] ADSP-BF52x blackfin processor hardware reference(Revision 1.0)[Z].Analog Devices Inc,2010.
[9] ADSP-BF522/ADSP-BF523/ADSP-BF524/ADSP-BF525/ADSP-BF526/ADSP-BF527 blackfin embedded processor data sheet(Rev C)[Z].Analog Devices Inc,2012.

此内容为AET网站原创,未经授权禁止转载。