首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于SoPC的嵌入式二维条码识读系统(2)

基于SoPC的嵌入式二维条码识读系统(2)

二维条码扫描器开始工作时,首先采集二维条码图像数据。由于实际工作中条码图像会出现污损等情况,所以必须对采集到的图像进行降噪、校正等处理。条码图像为灰度图像,必须对其进行二值化处理才能进行码字识别。在将PDF417码的所有码字正确分割后,还要以查表方式在码本中查找与码字相对应的值。为确认扫描的有效性,还要进行校验。如出错,则进行纠错。最后,传输译码的数据到LCD显示。条码图像译码算法的流程如图5所示。 译码流程说明如下: %26;#183;降噪处理 这里采用多帧图像平均降噪方法。图像采集芯片OV7649成像速度为30帧/秒,为消除在实际操作过程中由于人手抖动、条码图像移动等而产生的误差,每一次扫描只取六帧图像,所有时间为0.2s,可以忽略抖动的影响。 %26;#183;背景分离 背景分离是将条码区与背景分离,从而避免在没有有效信息的区域进行特征提取,加速后续处理的速度。背景分离采用标准差阈值跟踪法实现,图像条码部分由黑白相间的条块组成,灰度变化大,因而标准差较大;而背景部分灰度分布较为平坦,标准差较小。将条码图像分块,每个小块的标准差若大于某一阈值。则该小块中的像素点为有效;否则为背景。 %26;#183;图像校正 由于扫描进来的图像总会出现一定的倾斜和偏移,给快速、正确地识别条码带来困难。利用行差运算与Hough变换相结合的方法,能快速、准确地找到检测二维条码图像边界线,估计出倾斜角度,从而对图像进行矫正。 %26;#183;图像二值化 通过统计整个条码的边界强度,得出图像的边界强度直方图。直方图中边界强度较小的部分对应着噪声边界,边界强度较大的部分对应着条码的条、空边界。由于边界强度直方图具有明显的双峰结构,可以采用基于阈值选取的方法寻找最佳阈值。因为每次的光照等外界条件是不同的,此二值化门限电平必须是动态调整的。根据这个阈值分离出噪声边界和条、空边界。 图5 %26;#183;码字识别 在码字割完成之后,要把数据码字转换成PDF417码的符号字符。首先检测起始符位置,然后开始分割码字,每17个模块就确定为一个码字,直到检测完所有码字,码字分割即完成。这一过程可以通过采用模板匹配方式在固定的码本中查找与码字相对应的值来实现。也就是利用Query语句查询数据库查出相应的 PDF417符号字符。
%26;#183;信号纠错 PDF417码在识读过程中,由于条码图案的损坏,或扫描数据传输出错,会出现袱发错误。Reed_Solomon错误控制码适合纠正突发错误,一般情况下使用R-S错误控制码对码字进行检错和纠错。但在有严重污损的情况下,R-S码已经不能达到要求。可以利用简单的堆积式二维条形码图像处理算法——“边缘规整”算法,虽然不能从根本上解决污染的清除问题,但可以大大降低译码错误率。 整个系统软件部分大致分为设备初始化、条码图像采集、译码、条码内容显示、数据输出等几部分。软件流程图见图6。 4 自定义指令的应用 在条码识别算法中,对条码图像的处理,数据运算量大,循环数目多。如在对条码图像校正的过程中,需要频繁地用到坐标转换。为了达到系统的实时性要求,对于算法的硬件加速是必不可少的。采用Nios处理器的定制指令,把用户自定义的功能直接添加到Nios的ALU中去,用一组易于通过硬件实现的位移和加法运算替代乘加运算,完成坐标的转换和许多循环的数据处理,加快专项任务的执行。用户逻辑和用户指令是NiosII系统最闪亮的特点之一。同时,充分利用了可编程逻辑器件硬件执行运算速度快的优点,这一点和用于控制NiosCPU的特点相得益彰。定制指令逻辑的NiosII的连接 在SoPC Builder中完成。NiosII 配置向导提供了一个可添加256条定制指令的图形用户界面,在该界面中导入设计文件,设置定制指令名,并分配定制指令所需的CPU时钟周期数目。系统生成时,Nios II IDE为每条用户指令产生一个在系统头文件中定义的宏,可以在C应用程序中像调用函数一样方便地直接调用这个宏。 本文提出了一种基于Nios II嵌入式软核处理器的便携式二维条码识别系统的实现方法。使用Altera公司的Cyclone FPGA实现,具有开发周期短、成本低等特点;同时采用NiosII 的定制指令提高系统性能,利用硬件执行运算速度快的优点,使以NiosII处理器为核心的系统能够快速地完成大量数据的处理。随着二维条码越来越广泛的应用,此方案会有更广阔的前景。
返回列表