首页 / 专利库 / 资料储存系统 / 自动识别与数据采集技术 / 条形码 / 二维条码 / 一种PDF417标准二维条码图像切割的办法

一种PDF417标准二维条码图像切割的办法

阅读:516发布:2020-05-14

专利汇可以提供一种PDF417标准二维条码图像切割的办法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种利用图像轮廓信息基于投影方式的PDF417标准 二维条码 图像切割的方法。它包括输入正常的PDF417标准二维条码图像并进行灰度处理采用自适应全局 阈值 对灰度图像进行二值化,得到二维码二值图像;对上述处理后的图像进行二维码码区切割,得到只有码区的图像;将得到的二维码图像进行行识别,检测出各行的分割线坐标和计算行高;检测二维码图像是否倒置;根据检测到的行分割线坐标,行高,列分割线坐标,列宽从下到上,从右到左依次切割出每个码字图像,并逆向即从右到左进行码字识别将它转换成相应的码字序列。本发明在图像有部分污损或缺失甚至微小倾斜(小于0.1度)的情况下仍能正确切割出每个码字,鲁棒性强、可靠性高。,下面是一种PDF417标准二维条码图像切割的办法专利的具体信息内容。

1.一种PDF417标准二维条码图像切割的办法,其特征在于,它的步骤包括:
a)输入正常的PDF417标准二维条码图像并进行灰度处理:若图像为灰度图像,则不处理,如果图像为彩色图像,对二维码原始图像进行灰度转换得到一幅包含PDF417标准二维条码的灰度图像;
b)图像自适应阈值二值化:对步骤a)得到的二维码图像计算全局阈值并根据阈值进行二值化,得二维码二值化图像;
c)切割码区图像:利用投影算法对步骤b)得到的图像进行码区边界检测,然后根据边界坐标对原图像进行切割,得到只包含PDF417标准二维条码码区的图像;
d)检测各行的分割线坐标和计算行高:将步骤c)所得到的码区图像进行行识别,利用Sobel边缘检测算法和投影算法检测出各行的分割线坐标和计算行高;
e)检测二维码图像是否倒置:将步骤c)所得到的码区图像,根据PDF417标准二维条码图像起始符和终止符的特征检测二维码图像是否倒置;
若图像不倒置:
f)顺序检测各列的分割线坐标和计算列宽:将步骤d)得到的码区图像进行顺向列识别,即从左到右进行检测,根据列分割线的特征使用投影算法检测出各列的分割线坐标和计算列宽;
g)顺序切割码字并翻译成码字序列:对步骤d)所得到的码区图像,根据步骤e)和步骤f)到的各行分割线坐标,行高,各列分割线坐标,列宽从上到下从左到右依次切割出每个码字图像,并顺向从左到右进行码字识别将它转换成相应的码字序列;
若图像倒置:
h)逆向检测各列的分割线坐标和计算列宽:将步骤d)得到的码区图像进行逆向列识别,即从右到左进行检测,根据列分割线的特征使用投影算法检测出各列的分割线坐标和计算列宽;
i)逆向切割码字并翻译成码字序列:对步骤d)所得到的码区图像,根据步骤e)和步骤f)到的各行分割线坐标,行高,各列分割线坐标,列宽从下到上从右到左依次切割出每个码字图像,并逆向即从右到左进行码字识别将它转换成相应的码字序列。
2.根据权利要求1所述的PDF417标准二维条码图像切割的办法,其特征在于,所述步骤a)中将彩色图像转换成灰度图像的计算公式为:
其中Y为证件图像的亮度值,Cr表示图像的色调,Cb表示图像的饱和度来表示,R、G、B分别表示红绿蓝。
3.根据权利要求1所述的PDF417标准二维条码图像切割的办法,其特征在于,所述步骤b)图像自适应阈值二值化的具体过程为:
b1)遍历二维码图像,统计所以像素点的像素值总和,然后将其除以图像像素的总数,得到图像的平均像素值;
b2)取二维码图像的平均像素值的一半作为阈值,对每个像素进行判断,若其像素值大于或等于阈值,则将其像素值置为255;否则,将其像素值置为0。
4.根据权利要求1所述的PDF417标准二维条码图像切割的办法,其特征在于,所述步骤c)切割二维码图像的码区图像的具体过程为:
c1)对二维码图像进行平投影,即统计每一行的像素值总和,取一阈值搜索判断投影图的上升和下降边缘坐标,并取最小值作为码区上边界,取最大值作为码区下边界。如第i行的投影值为H(i),第(i-1)行的投影值为H(i-1),若H(i-1)小于阈值且H(i)大于等于阈值,则坐标i为上升边缘;若H(i-1)大于等于阈值且H(i)小于阈值,则坐标(i-1)为下降边缘;
c2)对二维码图像进行垂直投影,即统计每一列的像素值总和,取一阈值搜索判断投影图的上升和下降边缘坐标,并取最小值作为码区左边界,取最大值作为码区右边界,如第i行的投影值为V(i),第(i-1)行的投影值为V(i-1),若V(i-1)小于阈值且V(i)大于等于阈值,则坐标i为上升边缘;若V(i-1)大于等于阈值且V(i)小于阈值,则坐标(i-1)为下降边缘;
c3)根据步骤c1)和步骤c2)中得到的码区的上下左右边界坐标从原图中切割出码区图像。
5.根据权利要求1所述的PDF417标准二维条码图像切割的办法,其特征在于,所述步骤d)对步骤c)中得到的码区图像,检测各行的分割线坐标和计算行高的具体过程为:
d1)用图像Sobel算子对图像进行水平边缘检测,具体过程为:
d1.1)定义图像的亮度函数f(x,y)在位置(x,y)处的梯度向量为:
Gx——
x坐标的一阶导数
Gy——y坐标的一阶导数
d1.2)梯度向量指向坐标(x,y)点处f的最大变化速率方向,在边缘检测中,一个重要的量是这个向量的模,即:
d1.3)根据每个像素点求得的向量模值的大小经过限操作得到粗糙的轮廓图像;
d2)对步骤d1)得到的Sobel边缘检测图进行水平投影,即统计每像素行的像素值之和,检测投影图各峰值坐标设定较大阈值,搜索记录投影值大于阈值的的峰值坐标作为分割点坐标,如第i行的投影值为H(i),第i-1行的投影值为H(i-1),第i+1行的投影值为H(i+1)。若H(i)-H(i-1)的值大于0且H(i+1)-H(i)的值小于等于0,则坐标i为峰值坐标;
d3)根据步骤d2)得到的坐标计算相邻坐标的差分值,并将出现概率最大的差分值作为基准行高;
d4)根据步骤d1)和步骤d2),从第一个分割点坐标开始,在允许一个像素误差范围的情况下,依次判定行分割线坐标中连续两条分割线的距离,若是等于基准行高表示未丢失记录该坐标,否则若是倍数关系则,按倍数关系扩充分割线,即在与前一坐标相距基准行高宽度的位置补充一坐标,直到搜索完所有分割点坐标;
d5)步骤d4)中得到所有行的分割点坐标后,依次计算并记录相邻分割点坐标的差分值,即是每行的行高。
6.根据权利要求1述的PDF417标准二维条码图像切割的办法,其特征在于,所述步骤e)检测二维码图像是否倒置的具体过程为:
e1)根据步骤c)得到的图像垂直方向上升和下降边缘坐标计算第一条条bar1,第一条空blank1和最后一条条的宽度barlast,若bar1大于等于3*blank1或者bar1大于等于
3*barlast,则判断图像不倒置,否则判断图像倒置;
若图像不倒置:
7.根据权利要求1所述的PDF417标准二维条码图像切割的办法,其特征在于,所述步骤f)对步骤c)中得到的码区图像,顺序检测各列的分割线坐标和计算列宽的具体过程为:
f1)对步骤c)中得到的码区图像进行垂直投影,即统计每像素列的像素值总和,设定较大阈值,从左向右搜索记录下降边缘坐标中投影值大于或等于阈值的的分割点坐标,如第i行的投影值为V(i),第(i-1)行的投影值为V(i-1),若V(i-1)大于等于阈值且V(i)小于阈值,则坐标(i)为下降边缘坐标;
f2)遍历码区图像统计每像素列的像素值变化频率,如010是变化频率为两次,设定阈值,筛选记录步骤f1)中的分割点坐标,如第i列的变化频率为f(i),第(i-1)列的变化频率为f(i-1),投影值为V(i-1)如果f(i)和f(i-1)都小于变化频率阈值,且V(i-1)大于或者等于设定的投影阈值,则记录该分割点坐标i;
f3)搜索二维码数据区的起始分割线和终止分割线坐标,若搜索成功则计算数据区内相邻分割点坐标的差分值;否则,计算所有分割点坐标中相邻坐标的差分值。并将出现概率最大的差分值作为基准列宽;
f4)根据步骤f2)和步骤f3),从左向右从第一个分割点坐标开始,在允许一个像素误差范围的情况下,依次判定列分割线坐标中连续两条分割线的距离,若是等于基准列宽表示未丢失记录该坐标,否则若是倍数关系则,按倍数关系扩充分割线,即在与前一坐标相距基准列宽宽度的位置补充一坐标,直到搜索完所有分割点坐标;
f5)步骤f4)中得到所有列的分割点坐标后,依次计算并记录相邻分割点坐标的差分值,即是每列的列宽。
8.根据权利要求1所述的PDF417标准二维条码图像切割的办法,其特征在于,所述步骤g)顺序切割码字并翻译成码字序列的具体过程为:
g1)根据步骤d)和步骤f)中得到的各行分割点坐标,行高和各列分割点坐标,列宽,从上到下从左到右依次从码区图像中切割出每个码字的图像;
g2)对g1)得到的码字图像进行垂直投影,并设定码字图像高度的一半作为阈值,对投影值进行归一化。如第i列投影值为V(i),若V(i)大于或者等于阈值,则V(i)=1;否则,V(i)=0;
g3)根据g2)中的投影值从左向右预搜索码字的条起始坐标和空起始坐标,若V(i)=
1且V(i-1)=0,则坐标i为空的起始坐标;若V(i)=0且V(i-1)=1,则坐标i为条的起始坐标;
g4)根据步骤f)得到的基准列宽计算码字单位模宽度,计算公式如下:
单位模块宽度=基准列宽/17
g5)对步骤g3)得到的条空起始坐标进行确定。检测每个条(空)起始坐标后一个单位模块宽度范围内的像素列是否有一半及以上为条(空),以排除伪边缘的影响。若是,则确定该坐标为条(空)起始坐标;若不是,则排除该坐标;
g6)对步骤g5)得到的条空起始坐标,统计每个码字区域内条空起始坐标数。标准码字边界数目为9,终止符为10。若该数目大于10或者小于2,说明该码字有污损或缺失,将该码字的码字序列置为0;否则,计算相邻起始坐标的差分值,得到条(空)的宽度。再计算条(空)的模块数,公式如下:
条(空)模块数=条(空)宽度/单位模块宽度
从左向右每个条空模块数依次排列组成码字的码字序列,如81111113;
g7)对步骤g6)得码字序列进行检错纠正。依次统计码字所有条空模块总数,标准码字模块总数为17,终止符为18。若标准码字的模块总数为16,则将最一个空的模块数加1,如81111112改为81111113。若标准码字的模块总数为18,则将最一个空的模块数减1,如
81111114改为81111113;
若图像倒置:
9.根据权利要求1所述的PDF417标准二维条码图像切割的办法,其特征在于,所述步骤h)对步骤c)中得到的码区图像,逆向检测各列的分割线坐标和计算列宽的具体过程为:
h1)对步骤c)中得到的码区图像进行垂直投影,即统计每像素列的像素值总和,设定较大阈值,从右向左搜索记录下降边缘坐标,如第i行的投影值为V(i),第(i+1)行的投影值为V(i+1),若V(i+1)大于等于阈值且V(i)小于阈值,则坐标(i)为下降边缘;
h2)遍历码区图像统计每像素列的像素值变化频率,如010是变化频率为两次。设定阈值,筛选记录步骤h1)中的分割点坐标,如第i列的变化频率为f(i),第(i+1)列的变化频率为f(i+1),投影值为V(i+1)如果f(i)和f(i+1)都小于变化频率阈值,且V(i+1)大于或者等于设定的投影阈值,则记录该分割点坐标i;
h3)搜索二维码数据区的起始分割线和终止分割线坐标,若搜索成功则计算数据区内相邻分割点坐标的差分值;否则,计算所有分割点坐标中相邻坐标的差分值,并将出现概率最大的差分值作为基准列宽;
h4)根据步骤h2)和步骤h3),从右往左方向从第一个分割点坐标开始,在允许一个像素误差范围的情况下,依次判定列分割线坐标中连续两条分割线的距离,若是等于基准列宽表示未丢失记录该坐标,否则若是倍数关系则,按倍数关系扩充分割线,即在与前一坐标相距基准行高宽度的位置补充一坐标,直到搜索完所有分割点坐标;
h5)步骤h4)中得到所有列的分割点坐标后,依次计算并记录相邻分割点坐标的差分值,即是每列的列宽。
10.根据权利要求1所述的PDF417标准二维条码图像切割的办法,其特征在于,所述步骤i)逆向切割码字并翻译成码字序列的具体过程为:
i1)根据步骤d)和步骤h)中得到的各行分割点坐标,行高和各列分割点坐标,列宽,从下到上从右到左依次从码区图像中切割出每个码字的图像;
i2)对i1)得到的码字图像进行垂直投影,并设定码字图像高度的一半作为阈值,对投影值进行归一化。如第i列投影值为V(i),若V(i)大于或者等于阈值,则V(i)=1;否则,V(i)=0;
i3)根据i2)中的投影值从右向左预搜索码字的条起始坐标和空起始坐标。若V(i)=
1且V(i+1)=0,则坐标i为空的起始坐标;若V(i)=0且V(i+1)=1,则坐标i为条的起始坐标。
i4)根据步骤h)得到的基准列宽计算码字单位模块宽度,计算公式如下:
单位模块宽度=基准列宽/17
i5)对步骤i3)得到的条空起始坐标进行确定。检测每个条(空)起始坐标后一个单位模块宽度范围内的像素列是否有一半及以上为条(空),以排除伪边缘的影响。若是,则确定该坐标为条(空)起始坐标;若不是,则排除该坐标;
i6)对步骤i5)得到的条空起始坐标,统计每个码字区域内条空起始坐标数,标准码字边界数目为9,终止符为10,若该数目大于10或者小于2,说明该码字有污损或缺失,将该码字的码字序列置为0;否则,计算相邻起始坐标的差分值,得到条(空)的宽度,再计算条(空)的模块数,公式如下:
条(空)模块数=条(空)宽度/单位模块宽度
从右向左每个条空模块数依次排列组成码字的码字序列,如81111113;
i7)对步骤i6)得码字序列进行检错纠正,依次统计码字所有条空模块总数,标准码字模块总数为17,终止符为18,若标准码字的模块总数为16,则将最一个空的模块数加1,如81111112改为81111113,若标准码字的模块总数为18,则将最一个空的模块数减1,如
81111114改为81111113。

说明书全文

一种PDF417标准二维条码图像切割的办法

技术领域

[0001] 本发明公开了一种应用于PDF417标准二维条码图像切割的方法,具体来说,它设计一种利用图像轮廓信息并结合投影算法和Sobel边缘检测算法来检测各行列分割线并切割翻译码字的方法,属于数字图像处理技术领域。

背景技术

[0002] 二维条码是一种基于光学识读图像的编码技术,具有存储量大、性价比高、数据采集与识读方便等优点,该技术涉及光、机电,以及印刷、信息安全、标识等技术领域。PDF417二维条码作为一种新的信息存储和传递技术,从诞生开始就受到了国际社会的广泛关注。经过几年的努,现已广泛地应用在国防、公共安全、交通运输、医疗保健、工业、商业、金融、海关及政府管理等领域,具有相当广阔的应用前景。
[0003] 现有的PDF417标准二维条码识别系统广泛采用拍摄或扫描方式进行设计,其任务是处理、分析采集得到的二维码图像、自动识别二维码中的内容。PDF417标准二维条码识别系统可分为图像采集、图像预处理、图像切割、译码四个主要步骤。图像切割是二维码识别过程一个关键步骤。经图像切割步骤得到的图像码字序列是译码步骤进行译码的前提,所以图像切割的正确与否将直接影响到译码后的结果是否准确。
[0004] 图像切割是PDF417标准二维条码识别系统中一个重要的课题。一般商品上的PDF417标准二维条码都有少量的污损或缺失,如果不能有效检测出每个码字的边界,有可能会导致码字的丢失,甚至会影响其它码字的识别。为了保证后译码模的码字纠错正确纠正丢失或者错误的码字,图像切割模块应尽可能保证切割结果的准确性。
[0005] PDF417标准二维条码的图像是矩形的,码区图像有四条边界,且每行每列都有明显的分割线,每个码字的条空边界也是十分明显的。这为PDF417标准二维条码图像切割提供了良好的基础:(1)利用行列分割线的特点,可以检测每行每列的分割线,并可计算出各行各列的宽度;(2)利用码字条空边界的特点,可以检测每个条(空)的边界,并可计算出每个条(空)的宽度,从而容易得到每个码字的码字序列。
[0006] PDF417图像切割的方法有好多种。一种是先对行进行平边缘检测,再投影得到投影峰值图,然后根据峰值计算出行数,图像高度除以行数就得到行高。然后根据行高切割出单行条码,再对单行条码识别字符条空序列。这种方法容易受拍撮图像产生的畸变不均匀,污损,缺失等影响。对不均匀的图像根据行数计算行高进行切割容易产生累积误差,对有污损或缺失的行进行字符条空序列识别也有可能导致后面的字符检测错误。
[0007] 还有一种是对上一种方法得到行数和行高后,再检测列数并计算列宽。然后依次切割出每一列条码,再对该列进行逐行切割,得到每个码字后进行字符条空识别。这种方法有效去除了污损或缺失对后面码字切割产生的影响,但它依然有可能产生切割累积误差,鲁棒性不够强,抗干扰能力差。
[0008] 此外,对于倒置的图像的识别,传统方法是先将其旋转180度后再进行识别的。这样会增加识别运算时间,降低算法的效率。
[0009] 在PDF417标准二维条码图像进行识别的具体应用中,利用图像边缘轮廓信息和PDF417标准二维条码图像自身的特点,必须设计一种高效、可靠的对倒置图像无需旋转校正就能正确识别的PDF417标准二维条码图像切割算法。

发明内容

[0010] 针对以上的不足,本发明提供了一种利用PDF417标准二维条码图像的图像轮廓信息,结合使用投影算法,Sobel边缘检测算法等进行识别,且可以在不增加时间和空间上的开销情况下识别倒置图像的图像切割方法。
[0011] PDF417标准二维条码图像切割办法的步骤包括:
[0012] a)输入正常的PDF417标准二维条码图像并进行灰度处理:若图像为灰度图像,则不处理,如果图像为彩色图像,对二维码原始图像进行灰度转换得到一幅包含PDF417标准二维条码的灰度图像;
[0013] b)图像自适应阈值二值化:对步骤a)得到的二维码图像计算全局阈值并根据阈值进行二值化,得二维码二值化图像;
[0014] c)切割码区图像:利用投影算法对步骤b)得到的图像进行码区边界检测,然后根据边界坐标对原图像进行切割,得到只包含PDF417标准二维条码码区的图像;
[0015] d)检测各行的分割线坐标和计算行高:将步骤c)所得到的码区图像进行行识别,利用Sobel边缘检测算法和投影算法检测出各行的分割线坐标和计算行高;
[0016] e)检测二维码图像是否倒置:将步骤c)所得到的码区图像,根据PDF417标准二维条码图像起始符和终止符的特征检测二维码图像是否倒置;
[0017] 若图像不倒置:
[0018] f)顺序检测各列的分割线坐标和计算列宽:将步骤d)得到的码区图像进行顺向列识别,即从左到右进行检测,根据列分割线的特征使用投影算法检测出各列的分割线坐标和计算列宽。
[0019] g)顺序切割码字并翻译成码字序列:对步骤d)所得到的码区图像,根据步骤e)和步骤f)到的各行分割线坐标,行高,各列分割线坐标,列宽从上到下从左到右依次切割出每个码字图像,并顺向从左到右进行码字识别将它转换成相应的码字序列;
[0020] 若图像倒置:
[0021] h)逆向检测各列的分割线坐标和计算列宽:将步骤d)得到的码区图像进行逆向列识别,即从右到左进行检测,根据列分割线的特征使用投影算法检测出各列的分割线坐标和计算列宽。
[0022] i)逆向切割码字并翻译成码字序列:对步骤d)所得到的码区图像,根据步骤e)和步骤f)到的各行分割线坐标,行高,各列分割线坐标,列宽从下到上从右到左依次切割出每个码字图像,并逆向即从右到左进行码字识别将它转换成相应的码字序列。
[0023] 所述步骤a)中将彩色图像转换成灰度图像的计算公式为:
[0024]
[0025] 其中Y为证件图像的亮度值,Cr表示图像的色调,Cb表示图像的饱和度来表示,R、G、B分别表示红绿蓝。
[0026] 所述步骤b)图像自适应阈值二值化的具体过程为:
[0027] b1)遍历二维码图像,统计所以像素点的像素值总和,然后将其除以图像像素的总数,得到图像的平均像素值;
[0028] b2)取二维码图像的平均像素值的一半作为阈值,对每个像素进行判断,若其像素值大于或等于阈值,则将其像素值置为255;否则,将其像素值置为0;
[0029] 所述步骤c)切割二维码图像的码区图像的具体过程为:
[0030] c1)对二维码图像进行水平投影,即统计每一行的像素值总和,取一阈值搜索判断投影图的上升和下降边缘坐标,并取最小值作为码区上边界,取最大值作为码区下边界。如第i行的投影值为H(i),第(i-1)行的投影值为H(i-1),若H(i-1)小于阈值且H(i)大于等于阈值,则坐标i为上升边缘;若H(i-1)大于等于阈值且H(i)小于阈值,则坐标(i-1)为下降边缘;
[0031] c2)对二维码图像进行垂直投影,即统计每一列的像素值总和,取一阈值搜索判断投影图的上升和下降边缘坐标,并取最小值作为码区左边界,取最大值作为码区右边界。如第i行的投影值为V(i),第(i-1)行的投影值为V(i-1),若V(i-1)小于阈值且V(i)大于等于阈值,则坐标i为上升边缘;若V(i-1)大于等于阈值且V(i)小于阈值,则坐标(i-1)为下降边缘;
[0032] c3)根据步骤c1)和步骤c2)中得到的码区的上下左右边界坐标从原图中切割出码区图像。
[0033] 所述步骤d)对步骤c)中得到的码区图像,检测各行的分割线坐标和计算行高的具体过程为:
[0034] d1)用图像Sobel算子对图像进行水平边缘检测,具体过程为:
[0035] d1.1)定义图像的亮度函数f(x,y)在位置(x,y)处的梯度向量为:
[0036] Gx——x坐标的一阶导数
[0037] Gy——y坐标的一阶导数
[0038] d1.2)梯度向量指向坐标(x,y)点处f的最大变化速率方向,在边缘检测中,一个重要的量是这个向量的模,即:
[0039]
[0040] d1.3)根据每个像素点求得的向量模值的大小经过限操作得到轮廓图像;
[0041] d2)对步骤d1)得到的Sobel边缘检测图进行水平投影,即统计每像素行的像素值之和。检测投影图各峰值坐标设定较大阈值,搜索记录投影值大于阈值的的峰值坐标作为分割点坐标。如第i行的投影值为H(i),第i-1行的投影值为H(i-1),第i+1行的投影值为H(i+1)。若H(i)-H(i-1)的值大于0且H(i+1)-H(i)的值小于等于0,则坐标i为峰值坐标;
[0042] d3)根据步骤d2)得到的坐标计算相邻坐标的差分值,并将出现概率最大的差分值作为基准行高;
[0043] d4)根据步骤d1)和步骤d2),从第一个分割点坐标开始,在允许一个像素误差范围的情况下,依次判定行分割线坐标中连续两条分割线的距离,若是等于基准行高表示未丢失记录该坐标,否则若是倍数关系则,按倍数关系扩充分割线,即在与前一坐标相距基准行高宽度的位置补充一坐标,直到搜索完所有分割点坐标;
[0044] d5)步骤d4)中得到所有行的分割点坐标后,依次计算并记录相邻分割点坐标的差分值,即是每行的行高。
[0045] 所述步骤e)检测二维码图像是否倒置的具体过程为:
[0046] e1)根据步骤c)得到的图像垂直方向上升和下降边缘坐标计算第一条条bar1,第一条空blank1和最后一条条的宽度barlast。若bar1大于等于3*blank1或者bar1大于等于3*barlast,则判断图像不倒置,否则判断图像倒置。
[0047] 若图像不倒置:
[0048] 所述步骤f)对步骤c)中得到的码区图像,顺序检测各列的分割线坐标和计算列宽的具体过程为:
[0049] f1)对步骤c)中得到的码区图像进行垂直投影,即统计每像素列的像素值总和,设定较大阈值,从左向右搜索记录下降边缘坐标中投影值大于或等于阈值的的分割点坐标。如第i行的投影值为V(i),第(i-1)行的投影值为V(i-1),若V(i-1)大于等于阈值且V(i)小于阈值,则坐标(i)为下降边缘坐标;
[0050] f2)遍历码区图像统计每像素列的像素值变化频率,如010是变化频率为两次。设定阈值,筛选记录步骤f1)中的分割点坐标。如第i列的变化频率为f(i),第(i-1)列的变化频率为f(i-1),投影值为V(i-1)如果f(i)和f(i-1)都小于变化频率阈值,且V(i-1)大于或者等于设定的投影阈值,则记录该分割点坐标i;
[0051] f3)搜索二维码数据区的起始分割线和终止分割线坐标,若搜索成功则计算数据区内相邻分割点坐标的差分值;否则,计算所有分割点坐标中相邻坐标的差分值。并将出现概率最大的差分值作为基准列宽;
[0052] f4)根据步骤f2)和步骤f3),从左向右从第一个分割点坐标开始,在允许一个像素误差范围的情况下,依次判定列分割线坐标中连续两条分割线的距离,若是等于基准列宽表示未丢失记录该坐标,否则若是倍数关系则,按倍数关系扩充分割线,即在与前一坐标相距基准列宽宽度的位置补充一坐标,直到搜索完所有分割点坐标;
[0053] f5)步骤f4)中得到所有列的分割点坐标后,依次计算并记录相邻分割点坐标的差分值,即是每列的列宽;
[0054] 所述步骤g)顺序切割码字并翻译成码字序列的具体过程为:
[0055] g1)根据步骤d)和步骤f)中得到的各行分割点坐标,行高和各列分割点坐标,列宽,从上到下从左到右依次从码区图像中切割出每个码字的图像;
[0056] g2)对g1)得到的码字图像进行垂直投影,并设定码字图像高度的一半作为阈值,对投影值进行归一化。如第i列投影值为V(i),若V(i)大于或者等于阈值,则V(i)=1;否则,V(i)=0;
[0057] g3)根据g2)中的投影值从左向右预搜索码字的条起始坐标和空起始坐标。若V(i)=1且V(i-1)=0,则坐标i为空的起始坐标;若V(i)=0且V(i-1)=1,则坐标i为条的起始坐标。
[0058] g4)根据步骤f)得到的基准列宽计算码字单位模块宽度,计算公式如下:
[0059] 单位模块宽度=基准列宽/17
[0060] g5)对步骤g3)得到的条空起始坐标进行确定。检测每个条(空)起始坐标后一个单位模块宽度范围内的像素列是否有一半及以上为条(空),以排除伪边缘的影响。若是,则确定该坐标为条(空)起始坐标;若不是,则排除该坐标;
[0061] g6)对步骤g5)得到的条空起始坐标,统计每个码字区域内条空起始坐标数。标准码字边界数目为9,终止符为10。若该数目大于10或者小于2,说明该码字有污损或缺失,将该码字的码字序列置为0;否则,计算相邻起始坐标的差分值,得到条(空)的宽度。再计算条(空)的模块数,公式如下:
[0062] 条(空)模块数=条(空)宽度/单位模块宽度
[0063] 从左向右每个条空模块数依次排列组成码字的码字序列,如81111113;
[0064] g7)对步骤g6)得码字序列进行检错纠正。依次统计码字所有条空模块总数,标准码字模块总数为17,终止符为18。若标准码字的模块总数为16,则将最一个空的模块数加1,如81111112改为81111113。若标准码字的模块总数为18,则将最一个空的模块数减1,如81111114改为81111113;
[0065] 若图像倒置:
[0066] 所述步骤h)对步骤c)中得到的码区图像,逆向检测各列的分割线坐标和计算列宽的具体过程为:
[0067] h1)对步骤c)中得到的码区图像进行垂直投影,即统计每像素列的像素值总和,设定较大阈值,从右向左搜索记录下降边缘坐标。如第i行的投影值为V(i),第(i+1)行的投影值为V(i+1),若V(i+1)大于等于阈值且V(i)小于阈值,则坐标(i)为下降边缘;
[0068] h2)遍历码区图像统计每像素列的像素值变化频率,如010是变化频率为两次。设定阈值,筛选记录步骤h1)中的分割点坐标。如第i列的变化频率为f(i),第(i+1)列的变化频率为f(i+1),投影值为V(i+1)如果f(i)和f(i+1)都小于变化频率阈值,且V(i+1)大于或者等于设定的投影阈值,则记录该分割点坐标i;
[0069] h3)搜索二维码数据区的起始分割线和终止分割线坐标,若搜索成功则计算数据区内相邻分割点坐标的差分值;否则,计算所有分割点坐标中相邻坐标的差分值。并将出现概率最大的差分值作为基准列宽;
[0070] h4)根据步骤h2)和步骤h3),从右往左方向从第一个分割点坐标开始,在允许一个像素误差范围的情况下,依次判定列分割线坐标中连续两条分割线的距离,若是等于基准列宽表示未丢失记录该坐标,否则若是倍数关系则,按倍数关系扩充分割线,即在与前一坐标相距基准列宽宽度的位置补充一坐标,直到搜索完所有分割点坐标;
[0071] h5)步骤h4)中得到所有列的分割点坐标后,依次计算并记录相邻分割点坐标的差分值,即是每列的列宽;
[0072] 所述步骤i)逆向切割码字并翻译成码字序列的具体过程为:
[0073] i1)根据步骤d)和步骤h)中得到的各行分割点坐标,行高和各列分割点坐标,列宽,从下到上从右到左依次从码区图像中切割出每个码字的图像;
[0074] i2)对i1)得到的码字图像进行垂直投影,并设定码字图像高度的一半作为阈值,对投影值进行归一化。如第i列投影值为V(i),若V(i)大于或者等于阈值,则V(i)=1;否则,V(i)=0;
[0075] i3)根据i2)中的投影值从右向左预搜索码字的条起始坐标和空起始坐标。若V(i)=1且V(i+1)=0,则坐标i为空的起始坐标;若V(i)=0且V(i+1)=1,则坐标i为条的起始坐标。
[0076] i4)根据步骤h)得到的基准列宽计算码字单位模块宽度,计算公式如下:
[0077] 单位模块宽度=基准列宽/17
[0078] i5)对步骤i3)得到的条空起始坐标进行确定。检测每个条(空)起始坐标后一个单位模块宽度范围内的像素列是否有一半及以上为条(空),以排除伪边缘的影响。若是,则确定该坐标为条(空)起始坐标;若不是,则排除该坐标;
[0079] i6)对步骤i5)得到的条空起始坐标,统计每个码字区域内条空起始坐标数。标准码字边界数目为9,终止符为10。若该数目大于10或者小于2,说明该码字有污损或缺失,将该码字的码字序列置为0;否则,计算相邻起始坐标的差分值,得到条(空)的宽度。再计算条(空)的模块数,公式如下:
[0080] 条(空)模块数=条(空)宽度/单位模块宽度
[0081] 从右向左每个条空模块数依次排列组成码字的码字序列,如81111113;
[0082] i7)对步骤i6)得码字序列进行检错纠正。依次统计码字所有条空模块总数,标准码字模块总数为17,终止符为18。若标准码字的模块总数为16,则将最一个空的模块数加1,如81111112改为81111113。若标准码字的模块总数为18,则将最一个空的模块数减1,如81111114改为81111113;
[0083] 本发明的有益效果为:该PDF417标准二维条码图像切割办法充分利用图像轮廓信息,结合使用投影算法,Sobel边缘检测算法等,在图像有部分污损或缺失甚至微小倾斜(小于0.1度)的情况下仍能正确切割出每个码字,提高算法抗污损能力,且可以在不增加时间和空间上的开销情况下识别倒置图像,提高了算法效率。还保证了算法检测的准确性高,鲁棒性强、可靠性高。附图说明
[0084] 图1为本发明PDF417标准二维条码图像切割办法的流程图
[0085] 图2为PDF417标准二维条码图像转换成YCbCr色差空间后亮度(Y)分量的灰度图和二值图(这幅图的二值图与灰度图效果是一样的,所以只附上一幅图);
[0086] 图3为从原图像切割码区后得到的PDF417标准二维条码码区图像示意图;
[0087] 图4为Sobel梯度算子模板示意图;
[0088] 图5为亮度分量Sobel梯度算子水平边缘检测得到的示意图;
[0089] 图6为对Sobel梯度算子水平边缘检测图进行水平投影得到的示意图;
[0090] 图7为对PDF417标准二维条码二值图进行垂直投影得到的示意图;
[0091] 图8为对码区图像切割出码字图像得到的示意图;
[0092] 图9为整幅图像经切割及翻译得到相应码字序列的结果示意图。

具体实施方式

[0093] 下面结合附图对本发明进行进一步阐述。
[0094] 如图1所示,本发明的PDF417标准二维条码图像切割办法的具体步骤为:
[0095] a)输入一幅正常非倒置PDF417标准二维条码图像,首先是对图像进行灰度化,即将图像从RGB色彩空间转换成YCbCr色差空间,转换公式如式1所示:
[0096]
[0097] 取出转换后的亮度(Y)分量,如图2所示。
[0098] b)接着对亮度(Y)分量进行二值化。遍历二维码图像,统计所以像素点的像素值总和,然后将其除以图像像素的总数,得到图像的平均像素值;然后取二维码图像的平均像素值的一半作为阈值,对每个像素进行判断,若其像素值大于或等于阈值,则将其像素值置为255;否则,将其像素值置为0;
[0099] 全部像素都检测并置值完毕后,得到PDF417标准二维条码二值化图像,如图2所示。
[0100] c)对得到的PDF417标准二维条码二值图切割出码区图像。得到只包含二维码条空信息的码区图像,如图3所示。具体步骤如下:
[0101] 首先是检测码区上下边界坐标。对二维码图像进行水平投影,即统计每一行的像素值总和,取图像高度的2/3作为阈值搜索判断投影图的上升和下降边缘坐标,并取坐标中最小值作为码区上边界,取最大值作为码区下边界。如第i行的投影值为H(i),第(i-1)行的投影值为H(i-1),若H(i-1)小于阈值且H(i)大于等于阈值,则坐标i为上升边缘;若H(i-1)大于等于阈值且H(i)小于阈值,则坐标(i-1)为下降边缘;
[0102] 检测码区左右边界坐标。对二维码图像进行垂直投影,即统计每一列的像素值总和,取列投影值的平均值作为阈值搜索判断投影图的上升和下降边缘坐标,并取坐标中最小值作为码区左边界,取最大值作为码区右边界。如第i行的投影值为V(i),第(i-1)行的投影值为V(i-1),若V(i-1)小于阈值且V(i)大于等于阈值,则坐标i为上升边缘;若V(i-1)大于等于阈值且V(i)小于阈值,则坐标(i-1)为下降边缘;
[0103] 最后根据上述得到的码区的上下左右边界坐标从原图中切割出码区图像。如图3所示。
[0104] d)检测各行分割线点坐标和行高。使用对噪声抑制作用明显的Sobel梯度算子模板(如图4所示)对上述亮度(Y)分量实施Sobel水平边缘检测,得到一个水平轮廓描述信息,如图5所示,具体如下:
[0105] 一幅数字图像的一阶导数是基于各种二维梯度的近似值,首先定义图像的亮度函数f(x,y)在位置(x,y)处的梯度向量为:
[0106]
[0107] 梯度向量指向坐标(x,y)点处f的最大变化速率方向,在边缘检测中,一个重要的量是这个向量的模,即:
[0108]
[0109] 然后根据每个像素点求得的向量模值的大小经过门限操作后得到一幅轮廓图像。
[0110] 对上述轮廓图像进行水平投影,即统计每像素行的像素值之和,得到水平边缘投影的峰值图,如图6所示。检测投影图各峰值坐标设定较大阈值,搜索记录投影值大于阈值的的峰值坐标作为分割点坐标。如第i行的投影值为H(i),第i-1行的投影值为H(i-1),第i+1行的投影值为H(i+1)。若H(i)-H(i-1)的值大于0且H(i+1)-H(i)的值小于等于0,则坐标i为峰值坐标;
[0111] 计算上述分割点坐标相邻坐标的差分值,并将出现概率最大的差分值作为基准行高;然后对上述分割点坐标进行筛选和补充。从第一个分割点坐标开始,在允许一个像素误差范围的情况下,依次判定行分割线坐标中连续两条分割线的距离,若是等于基准行高表示未丢失记录该坐标,否则若是倍数关系则,按倍数关系扩充分割线,即在与前一坐标相距基准行高宽度的位置补充一坐标,直到搜索完所有分割点坐标;
[0112] 最后根据上述分割点坐标依次计算并记录相邻分割点坐标的差分值,即是每行的行高。
[0113] e)检测二维码图像是否倒置的。根据步骤c)得到的图像垂直方向上升和下降边缘坐标计算第一条条bar1,第一条空blank1和最后一条条的宽度barlast。若bar1大于等于3*blank1或者bar1大于等于3*barlast,则判断图像不倒置,否则判断图像倒置。
[0114] f)根据步骤e)判断得图像不倒置。对步骤c)中得到的码区图像(如图3所示),顺序检测各列的分割线坐标和计算列宽的具体过程为:
[0115] 对图3进行垂直投影,即统计每像素列的像素值总和,得到垂直投影图,如图7所示。设定较大阈值,从左向右搜索记录下降边缘坐标中投影值大于或等于阈值的的分割点坐标。如第i行的投影值为V(i),第(i-1)行的投影值为V(i-1),若V(i-1)大于等于阈值且V(i)小于阈值,则坐标(i)为下降边缘坐标;
[0116] 遍历码区图像统计每像素列的像素值变化频率,如010是变化频率为两次。设定阈值,筛选记录步骤f1)中的分割点坐标。如第i列的变化频率为f(i),第(i-1)列的变化频率为f(i-1),投影值为V(i-1)如果f(i)和f(i-1)都小于变化频率阈值,且V(i-1)大于或者等于设定的投影阈值,则记录该分割点坐标i;
[0117] 搜索二维码数据区的起始分割线和终止分割线坐标,若搜索成功则计算数据区内相邻分割点坐标的差分值;否则,计算所有分割点坐标中相邻坐标的差分值。并将出现概率最大的差分值作为基准列宽;
[0118] 根据上述得到的分割点坐标和基准列宽,从第一个分割点坐标开始,在允许一个像素误差范围的情况下,依次判定列分割线坐标中连续两条分割线的距离,若是等于基准列宽表示未丢失记录该坐标,否则若是倍数关系则,按倍数关系扩充分割线,即在与前一坐标相距基准列宽宽度的位置补充一坐标,直到搜索完所有分割点坐标;
[0119] 上述得到所有列的分割点坐标后,依次计算并记录相邻分割点坐标的差分值,即是每列的列宽;
[0120] g)顺序切割码字并翻译成码字序列的具体过程为:
[0121] 根据步骤d)和步骤f)中得到的各行分割点坐标,行高和各列分割点坐标,列宽,从上到下从左到右依次从码区图像中切割出每个码字的图像,如图8所示;
[0122] 对上述得到的码字图像进行垂直投影,并设定码字图像高度的一半作为阈值,对投影值进行归一化。如第i列投影值为V(i),若V(i)大于或者等于阈值,则V(i)=1;否则,V(i)=0;
[0123] 根据上述步骤的投影值从左向右预搜索码字的条起始坐标和空起始坐标。若V(i)=1且V(i-1)=0,则坐标i为空的起始坐标;若V(i)=0且V(i-1)=1,则坐标i为条的起始坐标。
[0124] 根据步骤f)得到的基准列宽计算码字单位模块宽度,计算公式如下:
[0125] 单位模块宽度=基准列宽/17
[0126] 对步骤上述得到的条空起始坐标进行确定。检测每个条(空)起始坐标后一个单位模块宽度范围内的像素列是否有一半及以上为条(空),以排除伪边缘的影响。若是,则确定该坐标为条(空)起始坐标;若不是,则排除该坐标;
[0127] 对上述步骤得到的条空起始坐标,统计每个码字区域内条空起始坐标数。标准码字边界数目为9,终止符为10。若该数目大于10或者小于2,说明该码字有污损或缺失,将该码字的码字序列置为0;否则,计算相邻起始坐标的差分值,得到条(空)的宽度。再计算条(空)的模块数,公式如下:
[0128] 条(空)模块数=条(空)宽度/单位模块宽度
[0129] 从左向右每个条空模块数依次排列组成码字的码字序列,如图8所示码字的码字序列为81111113;
[0130] 对上述步骤得码字序列进行检错纠正。依次统计码字所有条空模块总数,标准码字模块总数为17,终止符为18。若标准码字的模块总数为16,则将最一个空的模块数加1,如81111112改为81111113。若标准码字的模块总数为18,则将最一个空的模块数减1,如81111114改为81111113;
[0131] 具体实施例
[0132] 输入一幅分辨率为640×480,正常的即没有倾斜,畸变,严重污损或缺失的标准PDF417标准二维条码图像(本发明是针对正常的,或者经过图像预处理后得到正常的PDF417标准二维条码图像进行切割的办法)。
[0133] 由于输入图像为彩色图像,而PDF417标准二维条码图像是只有黑白两色的图像,所以要对图像进行色彩空间变换,使用YCbCr色差进行描述,并取出亮度分量并进行二值化,如图2所示;
[0134] 输入图像可能包含周围白色区域,为了方便后面操作,需将图像周围白色区域去除,切割出只包含码区的图像,如图3所示;
[0135] 使用Sobel梯度算子(图4(a)所示)进行水平边缘检测,得到水平方向图像轮廓信息,如图5所示。并对该图像进行水平投影,得到水平边缘投影峰值图,如图6所示。然后根据图6检测出各行的分割点坐标和计算行高;
[0136] 对图3进行垂直投影,得到如图7所示的PDF417标准二维条码垂直投影图。然后根据图7检测出各列的列分割点坐标和计算列宽;
[0137] 最后根据上述得到的各行分割点坐标,行高和各列分割点坐标,列宽,从图3中依次切割出每个码字的图像,如起始符码字图像如图8所示。然后将每个码字的条空宽度转换成相应的单位模块数依次排列组成码字序列。
[0138] 图9为切割出整幅图像所有码字并翻译成相应码字序列的结果。可见,本发明正确地切割出了每个码字,并正确地翻译成码字序列。经检验,所得结果(如图9所示)完全正确。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈