基于DSP的PDF417快速解码终端的设计与实现

[10-10 20:38:44]   来源:http://www.88dzw.com  单片机学习   阅读:8842

文章摘要: (2)对发生光照不均匀最严重的区域,即落在区间T-a<f(x,y)<T+a的点进行处理,取w为阈值计算窗口,计算方法如下: 如果T3>a,则取T2为阈值;否则,取T4为阈值,对区间内的点进行二值化。 Bernsen算法只用T2作为阈值对区间内点进行二值化,忽略了全局阈值的作用,而改进的算法采用双阈值对不均匀光照的区域进行二值化处理,减少了伪影现象。该算法是全局阈值算法和局部阈值算法的结合,同时兼顾了处理效果和时间复杂度。3.2 条码的区域定位 条码的区域定位计算较为复杂,因此算法的选择需要兼顾处理速度和处理效果。本文采用了基于连通域的区域定位

基于DSP的PDF417快速解码终端的设计与实现,标签:单片机开发,单片机原理,http://www.88dzw.com
    (2)对发生光照不均匀最严重的区域,即落在区间T-a<f(x,y)<T+a的点进行处理,取w为阈值计算窗口,计算方法如下:
    

    如果T3>a,则取T2为阈值;否则,取T4为阈值,对区间内的点进行二值化。
    Bernsen算法只用T2作为阈值对区间内点进行二值化,忽略了全局阈值的作用,而改进的算法采用双阈值对不均匀光照的区域进行二值化处理,减少了伪影现象。该算法是全局阈值算法和局部阈值算法的结合,同时兼顾了处理效果和时间复杂度。
3.2 条码的区域定位
    条码的区域定位计算较为复杂,因此算法的选择需要兼顾处理速度和处理效果。本文采用了基于连通域的区域定位算法[2],算法包括条码方向提取、条码区域连接和连通域标记3个步骤。图4给出了区域定位算法框图。

www.88dzw.com

    条码方向的提取决定了膨胀运算所使用的结构体。由于对图像直接进行膨胀运算很容易受噪声的影响,算法首先将图像区域分为水平、垂直、45°和135° 4种大致方向,而后提取条码的方向并根据条码不同的方向使用4种不同的膨胀结构体。这样有效防止了与条码接近的其他文字等背景由于使用各向同性的结构体进行膨胀运算而连接到条码中。方向提取先得到图像横向和纵向的梯度信息,而后以适当的阈值对得到的梯度图二值化并进行比较。认为含有较多边界信息的图指示的方向为条码的走向。如果两图边界的差值在一定范围内,则用同样的方法检测45°和135°两个方向。
    膨胀算法将条码连成一个紧密的连通区域,之后要进行连通域的标记以定位条码区域。算法包含3个步骤:
    (1)如果当前点A是前景点并且其前一点未被标记,则认为A是一个连通域的外轮廓点;跟踪这个外轮廓,并将所有外轮廓点都标记为与A属于相同的连通域。
    (2)如果当前点A下方的点是背景点且A的前一点已被标记,则认为A是连通域内轮廓点;跟踪这个内轮廓,并将所有内轮廓点都标记为与A属于相同的连通域。
    (3)如果前景点A的前一点已被标记且不属于情况1和2,则将A标记为与其前一点属于相同的连通域。
    边界的跟踪是通过搜索像素点8临域实现的,用顺时针排布的1~7分别代表8临域点,搜索方向更新公式为:
   
    系统采用的连通域标记法舍弃了传统的二次标记方式,而采用跟踪连通域外轮廓的方法,只需要对图像进行一次扫描,因此具有更快的速度。
3.3 条码的精确定位
    本文提出时间复杂度较低的边缘跟踪算法,精确定位了条码的4个顶点,为条码倾斜和几何形变的校正提供条件。图5给出了精确定位算法流程图。


    以搜索左上角顶点为例。系统用参考点数组记录搜索到的条码起始符或结束符的边缘走向,步进点数组沿起始结束符黑色边界方向逐点步进。若步进过程中某一时刻,步进点数组与参考点数组夹角超过45°,说明步进点数组已步进到条码边缘,则将步进点数组中心点位置确定为条码的左上顶点。用类似的方法搜索,可得到条码的其他3个顶点。

上一页  [1] [2] [3]  下一页


Tag:单片机学习单片机开发,单片机原理维修教程知识 - 单片机学习