条码采用文本、字节和数字三种数据压缩模式将原始数据转换为0~928的码字。三种压缩模式分别对不用类型的数据具有较高的压缩率,三者之间用模式转换与模式锁存进行灵活的转换。
PDF417采用Reed-Solomon码对条码数据进行检错与纠错,最高级别含有512个纠错码字,可复原条码50%的码字。
2 硬件平台
系统的硬件架构如图2所示。系统硬件主要包含图像处理和图像采集两个模块。
2.1 图像处理模块
系统的图像处理模块采用DSP外配SDRAM的方式实现图像的快速处理。DSP芯片选取TI公司的高性能32位浮点处理芯片TMS320C6713B;SDRAM芯片为Micron公司的MT48LC32M8A2,其存储空间为256 MB。C6713芯片的高速浮点处理能力保证了条空宽度确定的速度与准确性。系统工作过程中,SDRAM的作用为:缓存图像数据;存放图像运算的中间变量;作为系统的堆栈空间和常量及表的存放空间。
2.2 图像采集模块
视频数据采集模块由条码采集摄像头、FPGA和乒乓RAM 3个部分组成。摄像头采用Microscan公司的条码图像采集专用激光摄像头QUADRUS MINI Imager。由于TMS320C6713B芯片无video port接口,不能直接和摄像头进行逻辑连接,因而采用ALTERA公司的EP1C6作为控制核心,将Camera采集的视频信号流以帧为单位保存到高速SRAM中,并在合适的时机将SRAM总线切换给DSP以供运算处理。乒乓RAM以FPGA和DSP之间的通信接口RAM而存在,解决了DSP和摄像头连接的问题。另外,该模块还为摄像头配备LED补光系统以改善采集图像的质量。
3 软件设计
解码终端软件的设计强调提升条码识别率、解码正确率和系统实时性3个指标,主要包含二值化、区域定位、精确定位、条码分层等模块。图3为系统软件架构。
3.1 不均匀光照条件下的图像二值化
条码图像二值化要考虑不均匀光照的影响以及系统实时性解码的要求。本文改进了Bernsen算法[3],成功地去除了不均匀光照的影响。该算法处理步骤如下:
(1)用大津法取得粗阈值为T。扫描整个f(x,y)灰度图像,如果f(x,y)>T+a,则b(x,y)=255;如果f(x,y)<T+a,则b(x,y)=0。其中a为Bernsen算法的处理区间宽度,取值范围15~30,b(x,y)为二值化后图像。
(2)对发生光照不均匀最严重的区域,即落在区间T-a<f(x,y)<T+a的点进行处理,取w为阈值计算窗口,计算方法如下:
如果T3>a,则取T2为阈值;否则,取T4为阈值,对区间内的点进行二值化。
Bernsen算法只用T2作为阈值对区间内点进行二值化,忽略了全局阈值的作用,而改进的算法采用双阈值对不均匀光照的区域进行二值化处理,减少了伪影现象。该算法是全局阈值算法和局部阈值算法的结合,同时兼顾了处理效果和时间复杂度。
3.2 条码的区域定位
条码的区域定位计算较为复杂,因此算法的选择需要兼顾处理速度和处理效果。本文采用了基于连通域的区域定位算法[2],算法包括条码方向提取、条码区域连接和连通域标记3个步骤。图4给出了区域定位算法框图。