一种数据矩阵(dm)二维条形码识别的图像预处理方法

文档序号:6572248阅读:405来源:国知局
专利名称:一种数据矩阵(dm)二维条形码识别的图像预处理方法
技术领域
本发明涉及信息存储、定位和识别技术领域,尤其涉及一种数据矩 阵二维条形码(Data Matrix Barcode,以下简称"DM码")识别的图像预 处理方法。
背景技术
二维条形码是将存储的信息在水平和垂直的二维空间上扩展。它充 分利用了平面上的二维空间,可以大幅提升了信息密度,使得在小面积 上编码大量数据成为可能。其次,由于它本身具有的纠错能力,即使大 面积受损也能被准确识别。目前二维条形码应用于工业自动化、物流、 邮政、医疗、金融、交通运输、身份识别、海关及国防等领域。在我国, 二维条形码的应用尚属起步阶段。但是可以预见,它将以其独特的优势必将像一维条形码一样,在我国的各个领域被推广和应用。根据二维条形码的实现原理和结构形状的差异,可分为堆积式或层 排式二维条形码(Stacked Bar Code )和棋盘式或矩阵式二维条形码。目 前的二维条形码主要有快带响应(QuickResponse, QR)码、数据矩阵 (Data Matrix, DM )码和PDF417条形码等。其中,DM码是矩阵式二维 条形码之一,由于其尺寸小、保密性好、纠错能力强而广泛使用在工业、 数据安全及其他行业。如图1所示,其中a为DM码图像,b为其寻址图像,c为其数据区,d 为结构链接的DM码图像,DM码是一个由黑白两种颜色组成的点阵组 合,每一个相同大小的黑色或白色方格称为一个数据单位。矩阵中的0、 1就是在DM码的黑白两色小方格,即数据单位。条码的最外面边界的四 个边是有两个黑色线和由黑白点组合的两条铁路线组成,主要用于限定 符号的单元结构,但也能帮助确定物理尺寸及失真。已有的DM二维条形码识别图像预处理方法如图2所示,它主要由以 下步骤组成在完成二值化处理之后,使用中值滤波去除细小噪声对后 续处理的干扰。在粗定位时,对整幅图像使用Gaussian Laplace算子进行 边缘检测,可将得到的边缘图像(二值图像)在水平和垂直方向上投影, 分别统计第i行和第j列上的黑色像素,再进行几何裁剪。在进行精确定 位时,首先找到它的定位图形"L"形。它利用Hough变换4企测直线定位 顶点,获得"L"形的顶点坐标与两边的长度,然后进行几何旋转和剪裁, 得到近似标准的DM码图像取样后解码。上述已有的方法是通过寻找目标区域内的特定图形而实现定位的, 缺点在于过分依赖于基于GaussianLaplace的边缘检测和基于Hough变换 的直线检测,当图像存在比较严重的几何失真时,寻址图像L的两条直 接边将会出现弧度,从而难以检测并影响最终的识别率。另外,在复杂 背景下,背景图像的边缘也会对识别率有显著影响。发明内容本发明所要解决的技术问题是提供一种DM码识别的图像预处理 方法,可显著提高DM码的识别速度和精度。为解决上述技术问题,本发明的技术方案包括以下步骤
A、 二值化动态迭代法求取最佳阈值,利用该阈值对图像进行二 值化;B、 图像定位通过扫描十字区域,判别所在路径上的黑、白边缘 点是否在L铁路线上,来寻找L型线段,确定其三个端点坐标;C:几何校正根据上步获得的三点坐标,对图像进行仿射变换, 得到校正图形;D:取样对图像进行取样,输出码流。其中,步骤A中所述最佳阈值的求取方法为采用动态迭代法对输 入的灰度图数据进行直方图统计,迭代求取阈值。 其中,步骤B中定位方法为Bl、扫描十字区域,求取通过路径上的一边缘点最长的一条线段所在的角度及该线段两端点的坐标;B2、将两端点分别沿线段正负偏移45度方向游移到最远点;B3、以这两点重新确立一条线段,重新设定其角度;B4、判断该线段是否属于L型线的一条边,若不是则转入步骤B1判断下一边缘点,若是则继续步骤B5; B5、调整两端点到模块的中心位置;B6、以该两点为&出寻找另一条线段,得到另一端点的坐标; B7、调整点坐标的放置顺序并输出。其中,步骤B1中的求取最长线段角度及端点坐标的方法为 Bll、作一条直线水平穿过该边缘点,记录上面黑色点的个数及两 端点的坐标值,并记录其角度;B12、以2度的步进单位旋转该直线,并记录黑色点个数、角度及 两端点的坐标值,直到旋转l周;B13、取黑色点个数最多的一条线段,返回其角度及两端点的坐标。其中,步骤B4中判断方法为若线段长度小于30个像素宽度、线 段长度除以模块宽度得到的模块数目小于8、或者线段两端点朝垂直方 向移动1个模块宽度的距离后新形成的线段中包含至少1个模块宽度的 黑色象素,则该线段不是L型线的一边;否则,则是L型线的一边;所述步骤B5中调整两端点位置的方法为B51、分别过两端点垂直于线段作两条直线,形成两条垂直线段, 记录上面黑色连续点的个数,即垂直线段的长度;B52、取黑色连续点少的垂直线段,该线段的长度即为初步得到的 模块宽度;处于该垂直线段上的两端点即为L型的一个端点和顶点;B53、根据端点到三个边缘的距离相等,将把端点调整到模块中心 位置;B54、根据顶点到两最近边缘的距离等于半个模块宽度,将顶点调 整到模块中心位置;所述步骤B6中寻找另一条线段的方法为 B61、在垂直已知线段正负20度的范围内搜索一条最长的线段; B62、将该线段的两端点在该方向正负45度上移到最远点; B63、新形成的线段即为L型线的另一条线段,重新判定其角度。其中,所述步骤D进一步包括以下步骤 Dl、计算数据矩阵图像的版本号;D2、对于版本较高的图像,搜索校正铁路线; D3、按区域取样,得到取样位流,最后输出码流。其中,所述步骤D1进一步包括以下步骤 Dll、计算L型竖线上端点的横向模块宽度; D12、荻得水平探测铁路线的所有黑色模块的中心坐标; D13、计算L型线横线端点的纵向模块宽度; D14、获得纵向探测铁路线的所有黑色模块的中心坐标; D15、去除伪铁路线,根据两条铁路线作一条直线则必定相交于一 点,舍去两铁路线交点后面的所有点坐标;D16、根据得到的铁路线模块个数计算出版本号。其中,所述步骤D12进一步包括D121、由L型竖线端点出发向右搜索,搜索长度为L型横向线段 长度+ 3个才莫块宽度大小或者超出图像尺寸为止;D122、当碰到一个黑白交替点时,移动到该铁路线黑色模块的中心 位置,记录该点的坐标^f直;D123、继续向前搜索,重复D122;所述步骤D14进一步包括D141、由L型线横线端点出发向上搜索,搜索长度为L型纵向线 段长度+ 3个模块宽度大小或者超出图像尺寸为止;D142、当碰到一个白黑交替点时,移动到该铁路线黑色模块的中心 位置,记录该点的坐标值;D143、继续向前搜索,重复D142。
其中,所述步骤D2进一步包括以下步骤D21 、选择纵向探测铁路线与横向校正铁路线相交的白色模块的中 心坐标作为起始点,搜索长度为L型横向线段长度+ 3个模块宽度大小 或者超出图像尺寸为止;D22、当碰到一个黑白交替点时,移动到该铁路线白色模块的中心 位置,记录该点的坐标值;D23、继续向前搜索,重复D22;D24、选择横向探测铁路线与纵向校正铁路线相交的白色模块的中 心坐标作为起始点,搜索长度为L型纵向线段长度+ 3个模块宽度大小 或者超出图像尺寸为止;D25、当碰到一个黑白交替点时,移动到该铁路线白色模块的中心 位置,记录该点的坐标值;D26、继续向前搜索,重复D25。其中,所述步骤D3中每个区域的定义为一条L型线与黑白交替的 校正铁路线围成的闭合区域。本发明具有以下有益效果由于本发明没有使用边缘检测和直线检 测手段,因此受背景噪声、几何失真的影响较小;使用了校正铁路线坐 标,并按区域取样生成码流,有助于提高识别率;算法中没有复杂的计 算,具有很强的实时性,通常在PC平台上不超过5ms,每秒钟可以解 码200张以上的DM图片。


图1是标准的DM码图像,其中a为DM码图像,b为其寻址图像, c为其数据区,d为结构链接的DM码图像; 图2是现有技术中DM码图形识别流程; 图3是本发明的DM码识别图像预处理流程; 图4是图像二值化处理,其中a和b分别为处理前后的图像; 图5是本发明中L型铁路线搜索路径示意图; 图6是搜索到的L型线段示意图;图7是仿射变换示意图,其中a和b分别是变换前后的图像; 图8是搜索校正铁路线的黑色模块中心坐标过程示意图; 图9是对每个分区域进行取样的过程示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细的描述 请参阅图3所示,本发明的DM码识别图像预处理方法包括以下步骤301、 二值化采用动态迭代法对输入的灰度图数据进行直方图统计,并迭代求取其最佳阔值,然后利用该阈值对图像进行二值化,得到二 值DM码图像。302、 定位即寻找L型线段。扫描十字区域,对所在路径上的黑-> 白边缘点进行判别,判别是否在L铁路线上。303、 仿射变换4艮据已知的三点坐标,利用6参数的仿射变换公 式,对图像进行几何校正,得到新的图像数据。304、 计算数据矩阵图像的版本号。305、 搜索校正铁路线坐标考虑到实际存在的失真情况,本发明
对较高版本号的DM图像使用了校正铁路线。通过搜索校正铁路线可以 为下一步自适应取样提供参考,有助于提高识别率。306、 取样借助定位图形和校正铁路线,将DM码图像划分为小 的区间。尽管通过了几何矫正,仍然可能存在失真。因此,取样过程按 照DM码相应版本的宽度和高度,自适应地将DM码图形划分为小的区 间。通过判断这些区间内黑色和白色像素的比例,将此小区判别为'T' 或"0"。307、 输出码流即可解码。下面对该方法的各步骤进行详细描述A. 二值化采用动态迭代法对输入的灰度图数据进行直方图统计,并迭代求取 其最佳阈值。然后,利用该阈值对图像进行二值化处理。假设T(i)为新的分割阈值,vl(i)为灰度值小于T(i)的像素的灰度平 均值,v2(i)为灰度值大于T(i)的像素的灰度平均值,则迭代法取阀值算 法如下T(0)=128T(i+l)=(V2(T(i))+vl(T(i)))/2;当条件满足T(i+l)-(v2(T(i))+vl(T(i)))/2时退出迭代,T(i)即为最佳 阈值。如图4所示,通过二值化算法,可以把一幅RGB的灰度图像转换 为二值图像。B. 图j象定位通过扫描十字区域,判别所在路径上的黑、白边缘
点是否在L铁路线上,来寻找L型线段,确定其三个端点坐标。扫描路 径如图5所示。其中,判断某个边缘点是否处于L型线上的方法为 Bl.求取通过该点最长的一条线段所在的角度及该线段两端点的 坐标,方法3p下(B11)作一条直线水平穿过该点,记录上面过该点连续黑色点的 个数及两端点的坐标值,并记录下其角度。(B12)以每2度的步进单位旋转该直线,并记录黑色点个数、角 度及两端点的坐标值,直到旋转1周。(B13)取黑色点个数最多的一条线段,返回其角度及两端点的坐标。B2. "te两端点沿线—歐正负偏移45度方向游移到最远点,方法如下 判断线段的角度落在的区域,角度区域与游动方向关系为158°~179°,0° -22。------左右方向游动23°~67° -----左上右下方向游动68° ~112° -----上下方向游动113° ~ 157° -----左下右上方向游动左右方向的点移动的规则为点向线段外方向每左移动 一个象素, 都需要判断该点是否为黑色象素,如果不是,则取其上下方向上其中的 一个黑色点作为新的点坐标,游移直到超出图片或者下一个点及其上下 方向的点都为白色止。其它方向的^L则可类推。B3.以这两点重新确立一条线段,重新设定其角度。 B4.判断线段是否属于L型线的一条边,判断方法如下若线段长 度小于30个像素宽度、线段长度除以模块宽度得到的模块数目小于8、 或者线段两端点朝垂直方向移动1个模块宽度的距离后新形成的线段中 包含至少1个模块宽度的黑色象素,则该线段不是L型线的一边;否贝'J, 则是L型线的一边。B5.调整两个端点到模块的中心位置,调整方法如下 (B51)分别过两端点垂直于线段作两条直线,形成两条垂直线段, 记录上面黑色连续点的个数,即垂直线段的长度;(B52)取黑色连续点少的垂直线段,该线段的长度即为初步得到 的模块宽度;处于该垂直线段上的两端点即为L型的一个端点和顶点;(B53)根据端点到三个边缘的距离相等,将把端点调整到模块中 心位置;(B54)根据顶点到两最近边缘的距离等于半个模块宽度,将顶点 调整到模块中心位置。B6.以该两点为基础寻找另 一条线段,寻找方法如下 (B61)在垂直已知线段正负20度的范围内搜索一条最长的线段; (B62)将该线段的两端点在该方向正负45度上移到最远点; (B63)新形成的线段即为L型线的另一条线段,重新判定其角度。B7.调整点坐标的放置顺序输出。找到了L型线段后返回l,并输出三个点坐标,否则返回O。 如图6所示,该图显示了一种复杂条件下DM码识别过程中,定位 找到的L铁路线的结果。C.几何矫正根据已知的三点坐标,利用6参数的仿射变换公式, 对图像进行几何校正,得到新的图像数据。有ii殳(u0, v0)、 (ul, vl)和(u2, v2)为几何头斧正前的3个顶点坐标,(xO, y0)、 (xl, yl)和(x2, y2)为几何矫正后期望的坐标。6参数仿射变换公 式如下u = a*x + b*y + c;v = d*x + e*y + f;三个坐标值,刚好解6个参数,则各个参数的解如下b = [x2求(ul隱u0) + xl*(u0 - u2) + x0*(u2 - ul)]/ [x2*(yl-y0) + xl*(y0 -y2) + x0*(y2-yl)]a = [y2*(ul-u0) + yl*(u0 - u2) + y0*(u2 - ul)]/ [y2*(xl-x0) + yl*(x0 -x2) + y0*(x2-xl)]或者a = [(ul-uO) -b*(yl- y0)]/(xl-x0)c = u0 -a*x0 - b*y0e = [x2*(vl-v0) + xl*(v0 - v2) + x0承(v2 - vl)]/ [x2承(yl-v0) + xl承(yO -y2) + x0*(y2-yl)]d= [y2*(vl-v0) + yl*(vO - v2) + y0承(v2 - vl)]/ [y2承(xl-x0) + yl承(xO -x2) + y0*(x2-xl)]或者d = [(vl-vO) -e*(yl- yO)]/(xl-xO)f= vO -d*xO - e*yO经过仿射变换后,得到的QR码校正图形,如图7所示,(a)和(b) 分别为变换前后的图形。注如果是平行四边形失真,则校正后的图形
就是正方形,如果是梯形失真,则经过校正左上角是失真最少的,右下 角是失真最大的。D.取样取样过程是DM码识别的另一个关键。特别对于版本较 高的DM图像,需要利用校正图形帮助识别过程。其主要步骤如下 Dl.计算数据矩阵图像的版本号。具体包括以下步骤(D11)计算L型竖线上端点的横向模块宽度。(D12)获得水平探测铁路线的所有黑色模块的中心坐标。方法为 由L型竖线端点出发向右搜索,搜索长度为L型横向线段长度+ 3个模 块宽度大小或者超出图像尺寸为止;当碰到一个黑白交替点时,移动到 该铁路线黑色模块的中心位置,记录该点的坐标值;继续向前搜索。(D13)计算L型线横线端点的纵向模块宽度。(D14)获得纵向探测铁路线的所有黑色模块的中心坐标。方法为 由L型线横线端点出发向上搜索,搜索长度为L型纵向线段长度+ 3个 模块宽度大小或者超出图像尺寸为止。当碰到一个白黑交替点时,移动 到该铁路线黑色模块的中心位置,记录该点的坐标值,继续向前搜索。(D15)去除伪铁路线,根据两条铁路线作一条直线则必定相交于 一点,舍去两4失路线交点后面的所有点坐标。(D16)根据得到的铁路线模块个数计算出版本号。 D2.对于版本较高的图像,搜索校正铁路线。计算所有校正铁图线 的中心点位置,获取校正信息,取样按照校正铁路线的种类分三种情况 考虑版本1 - 9:没有校正图形的情况;
版本2 - 15:只有一条校正图形的情况; 版本16-21:有三条校正图形的情况。考虑到实际失真情况,本发明只对于版本号16-21利用了校正铁 路线。如图8所示,搜索校正铁路线的黑色模块中心坐标过程,方法为(D21)选择纵向探测铁路线与横向校正铁路线相交的白色模块的 中心坐标作为起始点,搜索长度为L型横向线段长度+ 3个模块宽度大 小或者超出图像尺寸为止;(D22)当碰到一个黑白交替点时,移动到该铁路线白色模块的中 心位置,记录该点的坐标值;(D23)继续向前搜索,重复(D22);(D24 )选择横向探测铁路线与纵向校正铁路线相交的白色模块的 中心坐标作为起始点,搜索长度为L型纵向线段长度+ 3个模块宽度大 小或者超出图像尺寸为止;(D25)当碰到一个黑白交替点时,移动到该铁路线白色模块的中 心位置,记录该点的坐标值;(D26)继续向前搜索,重复(D25)。 D3.如图9所示的对每个分区域进行取样的过程示意图,按区域取 样,得到取样位流,最后输出码流。每个区域的定义为一条L型线与黑 白交替的校正铁路线围成的闭合区域。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡 在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应 包含在本发明的保护范围之内。
权利要求
1、一种数据矩阵(DM)二维条形码识别的图像预处理方法。DM二维条形码以下简称“DM码”。其特征在于,包括以下步骤A、二值化动态迭代法求取最佳阈值,利用该阈值对图像进行二值化处理;B、图像定位通过扫描十字区域,判别所在路径上的黑、白边缘点是否在L型铁路线上,来寻找L型线段,确定其三个端点坐标;C几何校正根据上步获得的三点坐标,对图像进行仿射变换,得到校正图形;D取样对图像进行取样,输出码流。
2、 如权利要求1所述的DM码识别图像预处理方法,其特征在 于,步骤A中所述最佳阈值的求取方法为采用动态迭代法对输入 的灰度图数据进行直方图统计,迭代求取阈值。
3、 如权利要求1所述的DM码识别图像预处理方法,其特征在 于,步骤B中定位方法为Bl、扫描十字区域,求取通过路径上的一边缘点最长的一条线段所在的角度及该线段两端点的坐标;B2、将两端点分别沿线段正负偏移45度方向游移到最远点;B3、以这两点重新确立一条线段,重新设定其角度;B4、判断该线段是否属于L型线的一条边,若不是则转入步骤Bl判断下一边缘点,若是则继续步骤B5; B5、调整两端点到模块的中心位置;B6、以该两点为基础寻找另一条线段,得到另一端点的坐标; B7、调整点坐标的放置顺序并输出。
4、 如权利要求3所述的DM码识别图像预处理方法,其特征在 于,步骤B1中的求取最长线段角度及端点坐标的方法为Bll、作一条直线水平穿过该边缘点,记录上面黑色点的个数及 两端点的坐标值,并记录其角度;B12、以2度的步进单位旋转该直线,并记录黑色点个数、角度 及两端点的坐标值,直到旋转l周;B13、取黑色点个数最多的一条线段,返回其角度及两端点的坐标。
5、 如权利要求3所述的DM码识别图像预处理方法,其特征在 于,步骤B4中判断方法为若线段长度小于30个像素宽度、线段 长度除以模块宽度得到的模块数目小于8、或者线段两端点朝垂直方 向移动1个模块宽度的距离后新形成的线段中包含至少1个模块宽度 的黑色象素,则该线段不是L型线的一边;否则,则是L型线的一边;所述步骤B5中调整两端点位置的方法为B51、分别过两端点垂直于线段作两条直线,形成两条垂直线段, 记录上面黑色连续点的个数,即垂直线段的长度;B52、取黑色连续点少的垂直线段,该线段的长度即为初步得到 的模块宽度;处于该垂直线段上的两端点即为L型的一个端点和顶点;B53、根据端点到三个边缘的距离相等,将把端点调整到模块中 心位置5B54、根据顶点到两最近边缘的距离等于半个模块宽度,将顶点 调整到模块中心位置;所述步骤B6中寻找另一条线段的方法为 B61、在垂直已知线段正负20度的范围内搜索一条最长的线段; B62、将该线^殳的两端点在该方向正负45度上移到最远点; B63、新形成的线段即为L型线的另一条线段,重新判定其角度。
6、 如权力要求1所述的DM码识别图像预处理方法,其特征在 于,所述步骤D进一步包括以下步骤Dl、计算数据矩阵图像的版本号;D2、对于版本较高的图像,搜索校正铁路线;D3、按区域取才羊,得到耳又样位流,最后输出码流。
7、 如权力要求6所述的DM码识别图像预处理方法,其特征在 于,所述步骤D1进一步包括以下步骤Dll、计算L型竖线上端点的横向模块宽度; D12、获得水平探测铁路线的所有黑色模块的中心坐标; D13、计算L型线横线端点的纵向模块宽度; D14、获得纵向探测铁路线的所有黑色模块的中心坐标; D15、去除伪铁路线,根据两条铁路线作一条直线则必定相交于 一点,舍去两4fe洛线交点后面的所有点坐标;D16、根据得到的铁路线模块个数计算出版本号。
8、 如权力要求7所述的DM码识别图像预处理方法,其特征在 于,所述步骤D12进一步包括D121、由L型竖线端点出发向右搜索,搜索长度为L型横向线 段长度+ 3个模块宽度大小或者超出图像尺寸为止;D122、当碰到一个黑白交替点时,移动到该铁路线黑色模块的 中心位置,记录该点的坐标值;D123、继续向前搜索,重复D122;所述步骤D14进一步包括D141、由L型线横线端点出发向上搜索,搜索长度为L型纵向 线段长度+ 3个模块宽度大小或者超出图像尺寸为止;D142、当碰到一个白黑交替点时,移动到该铁^各线黑色模块的 中心位置,记录该点的坐标值;D143、继续向前搜索,重复D142。
9、 如权力要求6所述的DM码识别图像预处理方法,其特征在 于,所述步骤D2进一步包括以下步骤D21、选择纵向探测铁路线与横向校正铁路线相交的白色模块的 中心坐标作为起始点,搜索长度为L型横向线段长度+ 3个模块宽度 大小或者超出图像尺寸为止;D22、当碰到一个黑白交替点时,移动到该铁路线白色模块的中 心位置,i己录该点的坐标^L;D23、继续向前搜索,重复D22;D24、选择横向探测铁路线与纵向校正铁路线相交的白色模块的 中心坐标作为起始点,搜索长度为L型纵向线段长度+ 3个模块宽度 大小或者超出图像尺寸为止;D25、当碰到一个黑白交替点时,移动到该铁路线白色模块的中 心位置,记录该点的坐标值;D26、继续向前搜索,重复D25。
10、如4又力要求6所述的DM码识别图#_预处理方法,其特征在 于,所述步骤D3中每个区域的定义为一条L型线与黑白交替的校正 铁路线围成的闭合区域。
全文摘要
本发明公开了一种数据矩阵(DM)二维条形码识别的图像预处理方法,该方法包括以下步骤A.二值化求取最佳阈值,利用该阈值对图像进行二值化处理;B.图像定位通过扫描十字区域,判别所在路径上的黑、白边缘点是否在L型铁路线上,来寻找L型线段,确定其三个端点坐标;C.几何校正根据步骤B获得的三点坐标,对图像进行仿射变换,得到校正图形;D.取样对图像进行取样,输出码流。由于本发明没有使用边缘检测和直线检测手段,因此受背景噪声、几何失真的影响较小;使用了校正铁路线坐标,并按区域取样生成码流,有助于提高在几何失真等情况下的识别率;算法中没有复杂的计算,具有很强的实时性。测试结果表明在CPU为2.4GHz,内存为512M的计算机上识别一幅存在明显失真的DM码图像,耗时不超过5ms,即每秒钟可以解码200张以上的DM图片。
文档编号G06K9/46GK101398895SQ200710035808
公开日2009年4月1日 申请日期2007年9月26日 优先权日2007年9月26日
发明者杨高波 申请人:杨高波
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1