发明内容:
本发明的目的是提供一种便于运单图片排版、识别,解码时对编码中各单元色块进行准确定位,效率高,错误少的运单信息录入和彩色色块编码解码系统。
本发明是这样实现的:
1、运单信息录入和彩色色块编码解码系统,其特征在于包括设计版面单元,运单图片采集单元,运单图片色块解码单元以及运单信息生成单元:
一、设计版面单元
通过彩色色块编码,将版面和彩色色块编码关联,设计票据版面后批量印刷成运单图片,运单图片上有彩色色块编码信息;
彩色色块编码是若干彩色色块,横向或纵向按照直线顺序和相同间距进行排列组合,每种排列组合为一种编码,通过设定编码表,将编码和运单类型匹配,确定各种编码对应的运单类型,便于后续在解码后对应确定相应的运单类型;
在彩色色块编码后,根据运单版面特征,在运单的特定位置加入色块信息,批量印刷;
二、运单图片采集单元
运单图片采集单元的主要功能是通过通用的扫描仪,将各运单图片进行扫描得到的各运单图像储存;
三、运单图片彩色色块编码解码单元
运单图片彩色色块编码解码单元的主要功能是对每种运单图像进行色块解码,确定每个运单图片的运单类型;
彩色色块编码解码包括如下步骤:
1、运单图像获取
读取真实运单图像,得到运单彩色图像。
2、运单图像二值化
首先将运单彩色图像转换为灰度图像,运单图像二值化就是将运单灰度图像转化为黑白二值的运单二值图像,对于读入的运单灰度图像,I[i,j]表示水平位置为i,垂直位置为j像素点处运单图像的灰度值,[i,j]遍历运单灰度图像的所有像素点,i是变量,表示运单灰度图像中像素点的水平位置,取值为i=1,2,...,W0,j是变量,表示运单灰度图像中像素点的垂直位置,取值为j=1,2,...,H0,W0为运单灰度图像宽度,H0为运单灰度图像高度;
对于运单灰度图像的各个像素点,采用阈值分割法,将运单灰度图像中大于分割阈值的像素点置为0,小于分割阈值的像素点置为255,得到运单二值图像,D1[i,j]表示运单二值图像水平位置为i,垂直位置为j像素点处的值,具体计算方法为:
其中,th1为分割阈值,th1的选取要使得运单灰度图像的黑色字体和表格信息凸现出来,而去除其他信息的干扰;
3、运单彩色图像和运单二值图像自动纠偏
在运单扫描过程中,由于送纸传送带或滚筒的机械原因导致扫描的运单图像经常会出现倾斜情况,自动纠偏包括两个步骤:计算倾斜角度和倾斜校正;
(1)计算倾斜角度
计算运单二值图像的倾斜角度是在步骤2得到的运单二值图像的基础上进行的,对运单二值图像进行分析,选定运单二值图像左边处做分析,将该位置的二值图像提取出来称为边框二值图像,分别对边框二值图像做-8°到8°的顺时针旋转,旋转间隔为1°,每旋转一次,对该边框二值图像进行水平投影,计算极大投影值,共计算得到17个极大投影值,求这17个极大投影值中的最大值,得到最大值对应的旋转角度,该角度便为运单二值图像逆时针方向的倾斜角度,具体包括以下步骤:
a.将运单二值图像中特定区域的图像提取出来称为子区域二值图像
R[i,j]表示子区域二值图像水平位置为i,垂直位置为j像素点处的值,W1表示子区域二值图像的宽度,H1表示子区域二值图像的高度,W为运单二值图像的宽度,H为运单二值图像的高度,运单子区域二值图像的提取方法为:
R[i,j]=D1[i,j],i=1,2,..,W1,j=1,2,..,H1
其中,
b.对子区域二值图像做旋转调整
将子区域二值图像R[i,j]做-8°到8°,间隔为1°的顺时针旋转,用W2k表示第k次旋转后子区域二值图像所占图像的宽度,用H2k表示第k次旋转后子区域二值图像所占图像的高度,计算方法为:
其中,α=|k-9|°表示旋转角度,为向下取整运算符,表示不大于W1×cosα+H1×sinα的最大整数;
用Rk[i,j]表示第k次旋转后,子区域二值图像水平位置为i,垂直位置为j像素点处的值,先做初始化,Rk[i,j]=0,i=1,2,...,W2k,j=1,2,...,H2k,取k=1时,子区域二值图像像素点R[i,j]顺时针旋转-8°,也即逆时针旋转8°,此时α=8°,得到旋转后的子区域二值图像R1[i,j],原子区域二值图像位置[i,j]对应的像素值R[i,j]在逆时针旋转α后子区域二值图像位置[i1,j1]对应的像素值R1[i,j]的计算公式为:
其中,[i1,j1]为经过运算后向下取整操作得到的;
k依次加1,取k=2,3,...,8时,依次将子区域二值图像像素点R[i,j]逆时针旋转-7°到-1°,此时,α=|k-9|°,可分别得到R2[i,j],R3[i,j],...,R8[i,j],k=9时,旋转角度为0,此时,R9[i,j]=R[i,j],k=10,11,...,17时,依次将子区域二值图像像素点R[i,j]顺时针旋转1°到7°,此时,α=|k-9|°,原子区域二值图像各像素点的位置[i,j]对应的像素值R[i,j]在顺时针旋转α后子区域二值图像各像素点的位置[i1,j1]对应的像素值Rk[i,j]中的位置的计算公式为:
其中,[i1,j1]为经过运算后向下取整操作得到的,可分别得到R10[i,j],R11[i,j],...,R17[i,j],共得到17个子区域二值图像Rk[i,j];
c.对旋转后的每个子区域二值图像按行进行垂直投影,计算每个旋转后的子区域二值图像的极大投影值m[k]:
其中,hk[j]表示旋转后的每个子区域二值图像的垂直投影值,j=1,2,..,H2k;
d.计算倾斜角度:
对得到的17个极大投影值m[k]进行判断,找出其中的最大值作为最大投影值,此时对应的角度值为如果(K-9)<0,表明运单图像顺时针方向倾斜了|K-9|°,即倾斜角度为β=|K-9|°,如果(K-9)=0,表示运单图像没有倾斜,β=0,如果(K-9)>0,表明运单图像逆时针方向倾斜了|K-9|°,倾斜角度为β=-|K-9|°;
(2)倾斜校正
根据上述得到的倾斜角度,对运单彩色图像和运单二值图像分别进行倾斜补偿,完成倾斜校正,用W3表示倾斜校正后运单彩色图像和运单二值图像的宽度,用H3表示倾斜校正后运单彩色图像和运单二值图像的高度,计算方法为:
当倾斜角度β>0时,对运单彩色图像和运单二值图像逆时针β校正:
其中,[i1,j1]为经过运算后向下取整操作得到的;
当倾斜角度β<0时,对运单彩色图像和运单二值图像做顺时针|β|校正:
其中,[i1,j1]为经过运算后向下取整操作得到的;
当倾斜角度β=0时,对运单彩色图像和运单二值图像不做校正;
4.运单二值图像去噪
当扫描过程中由于纸张质量或者扫描镜头的灰尘原因,造成扫描出来的影像存在噪声点,影响彩色色块编码定位的质量,因此针对步骤3自动纠偏后的运单二值图像需要进行噪声点去除;
5.色块定位
在步骤4处理后,由于运单二值图像,相对运单彩色图像更加容易进行彩色色块编码的定位,所以,在运单二值图像上进行彩色色块编码定位在倾斜校正后的运单二值图像中,首先确定各需要定位的彩色色块编码顶点的搜索范围,然后与相应的定位模板进行加权计算,完成对各色块顶点的精确定位,进而确定各色块的位置;
所谓定位模板是指用于定位各顶点,与各顶点进行卷积运算的矩阵,m表示定位模板的列值,n表示定位模板的行值,m=1,2,...,21,n=1,2,...,21,用T1[m,n]表示左上角定位模板第n行第m列的值,用公式表示如下:
用T2[m,n]表示右上角定位模板第n行第m列的值,用公式表示如下:
用T3[m,n]表示左下角定位模板第n行第m列的值,用公式表示如下:
运单二值图像中编码中各色块可以是横向排列或纵向排列;
(1)纵向排列的彩色色块编码定位
在本发明中,编码是由至少两种色块组成的,每个色块为形状和大小相同的方块,对于由七种色块组成的纵向排列的彩色色块编码定位,步骤如下:
1)彩色色块编码第一色块左上角精确定位
由于彩色色块编码总是位于运单图像的某一区域内,运单图像中彩色色块编码左上角的位置为[x00,y00],这个位置同时也是彩色色块编码第一色块的左上角位置,对于左上角给予宽裕,水平偏移量为a,垂直偏移量为b,则运单二值图像彩色色块编码第一色块左上角搜索范围依次为:左上角[x00-a,y00-b],右上角[x00+a,y00-b],左下角[x00-a,y00+b],右下角[x00+a,y00+b];
在搜索范围内,从左上角开始,按自左向右,自上向下的顺序依次平移定位模板,每移动一次定位模板窗口,使定位模板的中心与搜索范围内的相应点重合,计算定位模板与其覆盖下图像的卷积值;
如上所述,定位模板的中心是指定位模板正中间的点,对于左上角定位模板来说,其中心为用T1[11,11]表示,右上角定位模板的中心为T2[11,11],左下角定位模板的中心为T3[11,11];
运单二值图像搜索范围内各像素点与左上角定位模板的卷积值t1[i,j]的计算方法如下:
其中,i=x00-a,x00-a+1,..,x00+a,j=y00-b,y00-b+1,..,y00+b;
在计算得到的运单二值图像搜索范围内各像素点的卷积值t1[i,j]中,其最大值对应的位置便为运单二值图像彩色色块编码第一色块左上角的位置,这个位置同时也是彩色色块编码的左上角位置,用[x01,y01]表示;
2)彩色色块编码第一色块右上角精确定位
以彩色色块编码第一色块左上角为基础,确定彩色色块编码第一色块右上角的搜索范围依次为:左上角[x01,y01-b],右上角[x01+2*a,y01-b],左下角[x01,y01+b],右下角[x01+2*a,y01+b];
按照步骤1)相同的搜索方式,计算定位模板与其覆盖下图像的卷积值,运单二值图像搜索范围内各像素点与右上角定位模板的卷积值t2[i,j]的计算方法如下
其中,i=x01,x01+1,..,x01+2*a,j=y01-b,y01-b+1,..,y01+b
t2[i,j]最大值对应的位置便为运单二值图像彩色色块编码第一色块右上角的位置,这个位置同时也是彩色色块编码的右上角位置,用[x02,y02]表示;
3)彩色色块编码第一色块左下角定位
以彩色色块编码第一色块左上角为基础,确定彩色色块编码第一色块左下角的搜索范围依次为:左上角[x01-a,y01],右上角[x01+a,y01],左下角[x01-a,y01+2*b],右下角[x01+a,y01+2*b],
按照步骤1)相同的搜索方式,计算定位模板与其覆盖下图像的卷积值,
其中,i=x01-a,x01-a+1,..,x01+a,j=y01,y01+1,..,y01+2*b,
t3[i,j]最大值对应的位置便为运单二值图像彩色色块编码第一色块左下角的位置,用[x03,y03]表示;
4)彩色色块编码第一色块右下角定位
得到彩色色块编码第一色块的左上角,右上角,左下角位置后,对应可得到彩色色块编码第一色块的右下角位置[x04,y04],其中x04=x02,y04=y03;
5)彩色色块编码第二色块左上角定位
以彩色色块编码第一色块左上角为基础,确定彩色色块编码第二色块左上角的搜索范围依次为:左上角[x01-a,y01],右上角[x01+a,y01],左下角[x01-a,y01+2*b],右下角[x01+a,y01+2*b];
按照步骤1)相同的搜索方式,计算左上角定位模板T1[m,n]与其覆盖下图像的卷积值t4[i,j]:
其中,i=x01-a,x01-a+1,..,x01+a,j=y01,y01+1,..,y01+2*b。
t4[i,j]最大值对应的位置便为运单二值图像彩色色块编码第二色块左上角的位置,用[x11,y11]表示;
可以得出第一色块的宽度w等于x02-x01,第一色块的高度h等于y03-y01,第一色块的下边界和第二色块的上边界的垂直距离d等于y11-y03;
6)彩色色块编码剩余各色块定位
由于彩色色块编码每一色块的大小是相同的,并且彩色色块编码各色块间的位置是固定的,因此对应可以确定彩色色块编码剩余每一色块的精确位置;
彩色色块编码第二色块的右上角的位置为[x12,y12],其中x12=x11+w,y12=y11,彩色色块编码第二色块左下角的位置为[x13,y13],其中,x13=x11,y13=y11+h,彩色色块编码第二色块右下角的位置为[x14,y14],其中,x14=x12,y14=y13,彩色色块编码第三色块左上角的位置为[x21,y21],其中,x21=x13,y21=y13+d,彩色色块编码第三色块右上角的位置为[x22,y22],其中,x22=x21+w,y22=y21,彩色色块编码第三色块左下角的位置为[x23,y23],其中,x23=x21,y23=y21+h,彩色色块编码第三色块右下角的位置为[x24,y24],其中,x24=x22,y24=y23,彩色色块编码第四色块左上角的位置为[x31,y31],其中,x31=x23,y31=y23+d,彩色色块编码第四色块右上角的位置为[x32,y32],其中,x32=x31+w,y32=y31,彩色色块编码第四色块左下角的位置为[x33,y33],其中,x33=x31,y33=y31+h,彩色色块编码第四色块右下角的位置为[x34,y34],其中,x34=x32,y34=y33,彩色色块编码第五色块左上角的位置为[x41,y41],其中,x41=x33,y41=y33+d,彩色色块编码第五色块右上角的位置为[x42,y42],其中,x42=x41+w,y42=y41,彩色色块编码第五色块左下角的位置为[x43,y43],其中,x43=x41,y43=y41+h,彩色色块编码第五色块右下角的位置为[x44,y44],其中,x44=x42,y44=y43,彩色色块编码第六色块左上角的位置为[x51,y51],其中,x51=x43,y51=y43+d,彩色色块编码第六色块右上角的位置为[x52,y52],其中,x52=x51+w,y52=y51,彩色色块编码第六色块左下角的位置为[x53,y53],其中,x53=x51,y53=y51+h,彩色色块编码第六色块右下角的位置为[x54,y54],其中,x54=x52,y54=y53,彩色色块编码第七色块左上角的位置为[x61,y61],其中,x61=x53,y61=y53+d,彩色色块编码第七色块右上角的位置为[x62,y62],其中,x62=x61+w,y62=y61,彩色色块编码第七色块左下角的位置为[x63,y63],其中,x63=x61,y63=y61+h,彩色色块编码第七色块右下角的位置为[x64,y64],其中,x44=x42,y44=y43;
(2)横向排列的彩色色块编码定位
横向排列的彩色色块编码各色块的左上角、右上角位置的纵坐标相同,各色块的左下角、右下角位置的纵坐标相同,各色块的左上角位置的横坐标之间的距离相同,各色块的右上角位置的横坐标的距离相同,各色块的左下角位置的横坐标的距离相同,各色块的右下角位置的横坐标的距离相同;
1)彩色色块编码左上角精确定位
彩色色块编码左上角的定位方法与纵向排列的彩色色块编码左上角定位的方法相同,这个位置同时也是彩色色块编码第一色块的左上角位置,用[x71,y71]表示;
2)彩色色块编码第一色块右上角精确定位
彩色色块编码第一色块的右上角定位方法与纵向排列的彩色色块编码第一色块右上角定位的方法相同,用[x72,y72]表示;
3)彩色色块编码第一色块左下角定位
黑彩色色块编码第一色块的左下角定位方法与纵向排列的彩色色块编码第一色块左下角定位的方法相同,用[x73,y73]表示;
4)彩色色块编码第一色块右下角定位
得到彩色色块编码第一色块的左上角,右上角,左下角位置后,对应可得到彩色色块编码第一色块的右下角位置[x74,y74],其中x64=x62,y64=y63;
5)彩色色块编码第二色块左上角定位
以彩色色块编码第一色块左上角为基础,确定彩色色块编码第二色块左上角的搜索范围依次为:左上角[x71,y71-b],右上角[x71+2*a,y71-b],左下角[x71,y71+b],右下角[x71+2*a,y71+b];
在搜索范围内,从左上角开始,按自左向右,自上向下的顺序依次平移定位模板,每移动一次定位模板窗口,使定位模板的中心与搜索范围内的相应点重合,计算定位模板与其覆盖下图像的卷积值;
左上角定位模板T1[m,n]与其覆盖下图像的卷积值t5[i,j]:
其中,i=x71,x71+1,..,x71+2a,j=y71-b,y71-b+1,..,y71+b
t5[i,j]最大值对应的位置便为运单二值图像彩色色块编码第二色块左上角的位置,用[x81,y81]表示;
可以得出第一色块的宽度w1等于x72-x71,第一色块的高度h1等于y73-y71,第一色块的右边界和第二色块的左边界的水平距离d1等于x81-x72;
6)彩色色块编码剩余各色块定位
由于彩色色块编码每一色块的大小是相同的,并且彩色色块编码各色块间的位置是固定的,因此对应可以确定彩色色块编码剩余每一色块的精确位置;
彩色色块编码第二色块的右上角的位置为[x82,y82],其中x82=x81+w1,y82=y81,彩色色块编码第二色块左下角的位置为[x83,y83],其中,x83=x81,y83=y81+h1,彩色色块编码第二色块右下角的位置为[x84,y84],其中,x84=x82,y84=y83,彩色色块编码第三色块左上角的位置为[x91,y91],其中,x91=x82+d1,y91=y82,彩色色块编码第三色块右上角的位置为[x92,y92],其中,x92=x91+w1,y92=y91,彩色色块编码第三色块左下角的位置为[x93,y93],其中,x93=x91,y93=y91+h1,彩色色块编码第三色块右下角的位置为[x94,y94],其中,x94=x92,y94=y93,彩色色块编码第四色块左上角的位置为[x101,y101],其中,x101=x92+d1,y101=y92,彩色色块编码第四色块右上角的位置为[x102,y102],其中,x102=x101+w1,y102=y101,彩色色块编码第四色块左下角的位置为[x103,y103],其中,x103=x101,y103=y101+h1,彩色色块编码第四色块右下角的位置为[x104,y104],其中,x104=x102,y104=y103,彩色色块编码第五色块左上角的位置为[x111,y111],其中,x111=x102+d1,y111=y102,彩色色块编码第五色块右上角的位置为[x112,y112],其中,x112=x111+w1,y112=y111,彩色色块编码第五色块左下角的位置为[x113,y113],其中,x113=x111,y113=y111+h1,彩色色块编码第五色块右下角的位置为[x114,y114],其中,x114=x112,y114=y113,彩色色块编码第六色块左上角的位置为[x121,y121],其中,x121=x122+d1,y121=y122,彩色色块编码第六色块右上角的位置为[x122,y122],其中,x122=x121+w1,y122=y121,彩色色块编码第六色块左下角的位置为[x123,y123],其中,x123=x121,y123=y121+h1,彩色色块编码第六色块右下角的位置为[x124,y124],其中,x124=x122,y124=y123,彩色色块编码第七色块左上角的位置为[x131,y131],其中,x131=x122+d1,y131=y122,彩色色块编码第七色块右上角的位置为[x132,y132],其中,x132=x131+w1,y132=y131,彩色色块编码第七色块左下角的位置为[x133,y133],其中,x133=x131,y133=y131+h1,彩色色块编码第七色块右下角的位置为[x134,y134],其中,x134=x132,y134=y133;
6.彩色色块编码解码
在得到编码中各色块的位置后,就可以进行彩色色块编码的解码了;
在得到彩色色块编码中每一色块的位置后通过对运单彩色图像中各彩色色块编码各像素点的RGB值进行分析:
当R[i,j]>200,G[i,j]<50且B[i,j]<50时,表示运单彩色图像水平位置为i,垂直位置为j的像素点处为红色;
当R[i,j]>200,150<G[i,j]<200且B[i,j]<50时,表示运单彩色图像水平位置为i,垂直位置为j的像素点处为橙色;
当R[i,j]>200,G[i,j]>200且B[i,j]<50时,表示运单彩色图像水平位置为i,垂直位置为j的像素点处为黄色;
当R[i,j]<50,G[i,j]>200且B[i,j]<50时,表示运单彩色图像水平位置为i,垂直位置为j的像素点处为绿色;
当R[i,j]<50,G[i,j]>200且B[i,j]>200时,表示运单彩色图像水平位置为i,垂直位置为j的像素点处为青色;
当R[i,j]<50,G[i,j]<50且B[i,j]>200时,表示运单彩色图像水平位置为i,垂直位置为j的像素点处为蓝色;
当100<R[i,j]<150,G[i,j]<50且100<B[i,j]<150时,表示运单彩色图像水平位置为i,垂直位置为j的像素点处为紫色;
当彩色色块中判断为红色的像素点数大于该色块总像素点数的一半时,该色块判定为红色色块,该色块用‘0’表示,表示为红色块,否则判断为橙色的像素点数大于该色块总像素点数的一半,是则为橙色色块,用“1”表示,判断为黄的像素点数大于该色块总像素点数的一半,是则为黄色色块,用“2”表示,判断为绿的像素点数大于该色块总像素点数的一半,是则为绿色色块,用“3”表示,判断为青的像素点数大于色方块总像素点数的一半,是则为青色色块,用“4”表示,判断为蓝的像素点数大于该色块总像素点数的一半,是则为蓝色色块,用“5”表示,判断为紫的像素点数大于该色块总像素点数的一半,是则为紫色色块,用“6”表示,直到确定各彩色色块的颜色后,将从上到下各或从左到右排列的各彩色色块的信息依次排列,便可得到该彩色色块编码信息;
四、运单信息生成单元
运单信息生成单元的主要功能是将运单图片的运单类型保存下来,这里的运单信息生成单元可以简单的看作一个常用的计算机,将运单图片的运单类型保存在计算机里,用于后续的识别。
本发明通过在现有运单图片中加入彩色色块编码信息,用于区分不同的运单类型,然后利用图像处理技术对运单图片进行色块解码,进而确定运单类型。本发明可以根据运单的特点选择相应数目的彩色色块,进行横向排列或纵向排列,更利于运单图片排版,本发明中的色块有统一的形状和大小,解码时对编码中图像识别码的准确定位更加方便,进而使得对运单图片进行解码和版面识别更加快捷。为信息录入提供了可靠的资料,可实现运单信息录入的自动化,能够满足信息采集的准确性与信息安全管控需求,提高了运单数据录入人员的信息录入效率。
具体实施方式:
在本发明中,提到的色块是指由红橙黄绿青蓝紫色块经过排列组合后组成的,印刷在运单图片中用于区分运单类型的一整块区域。
在本发明中,所指的编码是指将某种运单类型用彩色色块排列组合表示印刷在运单上,所指的解码是指将运单图片印刷的色块组合进行识别,确定编码类型,进而确定属于哪种运单类型,是2个相反的过程。
本发明提供了一种运单信息录入系统彩色色块编码解码方法,该方法的系统结构框图如图1所示,包括设计版面单元,运单图片采集单元,运单图片色块解码单元以及运单信息生成单元。
一、设计版面单元
设计版面单元的主要功能是通过彩色色块编码,将版面和编码信息关联,设计票据版面后批量印刷。
本发明提供的方法中提到的彩色色块编码是通过评估采用几个彩色色块,评估横向还是纵向布局色块组合,将一定数量的彩色方块按照一定顺序进行排列组合,每种排列组合分别代表不同的含义,形成不同的彩色色块编码。根据需要区分的运单类型的数目和版面复杂程度选取不同的色块数目和色块排列方法,作为后续色块解码的依据。
本发明提供的运单信息录入系统中彩色色块编码的方法如下:
1.确定彩色色块数目
当需要识别的运单类型较少时,通过较少的彩色色块的排列组合编码就可以表示所有的运单类型,当需要识别的运单类型越来越多时,需要的彩色色块数目也较多,因此根据需要确定彩色色块的数目是彩色色块编码的关键。彩色色块编码组合如图2所示,其中红色色块表示‘0’,橙色色块表示‘1’,黄色色块表示‘2’,绿色色块表示‘3’,青色色块表示‘4’,蓝色色块表示‘5’,紫色色块表示‘6’。M种单色色块,N个色块排列组合共表示MN个编码。其编码方法是根据信息量大小选取颜色像素值差距明显的M个单色块进行排列组合,对应表示不同的编码内容,同时每一种编码组合对应着特定的应用属性。
2.确定彩色色块排列方式
在确定了彩色色块数目后,结合运单版面分布,确定最佳的彩色色块排列方式,使得彩色色块解码时干扰更少。彩色色块可以横向排列也可以纵向排列,彩色色块横向排列组合如图3所示,彩色色块纵向排列组合如图4所示,根本运单的版面特征,选择更能合理利用运单图片的空间,且不会对其他运单信息造成干扰的彩色色块排列方式。
3.编码信息和运单类型匹配
在确定了彩色色块数目和色块排列方式后,通过设定编码表,将编码信息和运单类型匹配,确定各种编码对应的运单类型,便于后续在解码后对应确定相应的运单类型。
在彩色色块编码后,根据运单版面特征,在运单图片的特定位置加入色块信息,批量印刷。以顺丰快递为例,对于大陆至港澳台,国内件运单,马来西亚运单,美国运单,香港运单和新加坡运单,通过将彩色纵向排列的色块编码打印在运单从最左边起水平0.64倍宽度,从最上边起垂直0.064倍高度开始的位置处,每个彩色色块编码子块的宽度和高度均为18个像素点,色块编码的各子块之间相距5个像素点。当运单图片的宽度为1754个像素点,高度为1240个像素点时,色块编码打印在水平第1122个,垂直第79个像素点开始的位置处。对于其他的运单图片,根据运单版面的特点,选择横向或纵向的色块组合。
在本发明实施例中,采用7个彩色色块纵向排列和7个彩色色块横向排列对彩色色块编解码进行说明。
在本发明中,色块是由很多小方块组成的,对于彩色色块编码,分别用彩色色块的第一色块,彩色色块的第二色块,彩色色块的第三色块,彩色色块的第四色块,彩色色块的第五色块,彩色色块的第六色块,彩色色块的第七色块来表示彩色色块的各个子块。
二、运单图片采集单元
运单图片采集单元的主要功能是通过通用的扫描仪,提前将各运单图片进行扫描并将扫描得到的各银行运单图像数据存储下来,以下该存储图像简称运单图像。
三、运单图片彩色色块编码解码单元
运单图片彩色色块编码解码单元的主要功能是对每种运单图像进行色块解码,确定每个运单图片的运单类型。
本发明提供的运单信息录入系统中彩色色块编码解码的流程如图5所示,具体包括如下步骤:
1、运单图像获取
读取真实运单图像,得到运单彩色图像,以后提到的运单彩色图像,均指运单图像的彩色图。
2、运单图像二值化
在运单扫描过程中,由于送纸传送带或滚筒的机械原因导致扫描的得到的运单彩色图像,经常会出现倾斜情况,所以需要对彩色图像进行二值化,得到相应的二值化图像。通过二值化图像能够比较容易的计算出运单图像的倾斜角度,完成对运单彩色图像和二值图像的倾斜校正,才能进行后续的彩色色块编码定位和彩色色块编码解码操作。
首先将运单彩色图像转换为灰度图像,以后提到的运单灰度图像,均指运单图像的灰度图。
运单图像二值化就是将运单灰度图像转化为黑白二值的运单二值图像,对于读入的运单灰度图像,I[i,j]表示水平位置为i,垂直位置为j像素点处运单图像的灰度值,[i,j]遍历运单灰度图像的所有像素点,i是变量,表示窗口图像中像素点的水平位置,取值为i=1,2,...,W0,j是变量,表示窗口图像中像素点的垂直位置,取值为j=1,2,...,H0,W0为运单灰度图像宽度,H0为运单灰度图像高度。
对于运单灰度图像的各个像素点,采用阈值分割法,将运单灰度图像中大于分割阈值的像素点置为0,小于分割阈值的像素点置为255,得到运单二值图像,D1[i,j]表示运单二值图像水平位置为i,垂直位置为j像素点处的值,具体计算方法为:
其中,th1为分割阈值,th1的选取要使得运单灰度图像的字和表格信息凸现出来,而去除其他信息的干扰,在本发明实施例中,th1=60。
3、运单彩色图像和运单二值图像自动纠偏
自动纠偏功能可以将倾斜的图像自动矫正,使原件调整到整齐的位置。自动纠偏包括两个步骤:计算倾斜角度和倾斜校正。
(1)计算倾斜角度
计算运单二值图像的倾斜角度是在步骤2得到的运单二值图像的基础上进行的,对运单二值图像进行分析,选定运单二值图像左边处做分析,将该位置的二值图像提取出来称为边框二值图像,分别对边框二值图像做-8°到8°的顺时针旋转,旋转间隔为1°,每旋转一次,对该边框二值图像进行水平投影,计算极大投影值,共计算得到17个极大投影值,求这17个极大投影值中的最大值,得到最大值对应的旋转角度,该角度便为运单二值图像逆时针方向的倾斜角度。具体包括以下步骤:
a.将运单二值图像中特定区域的图像提取出来称为子区域二值图像
在本发明实施例,将运单二值图像中左边区域的图像提取出来作为子区域二值图像。R[i,j]表示子区域二值图像水水平位置为i,垂直位置为j像素点处的值,W1表示子区域二值图像的宽度,H1表示子区域二值图像的高度。运单子区域二值图像的提取方法为:
R[i,j]=D1[i,j],i=1,2,..,W1,j=1,2,..,H1(2)
其中,
b.对子区域二值图像做旋转调整
将子区域二值图像R[i,j]做-8°到8°,间隔为1°的顺时针旋转,用W2k表示第k次旋转后子区域二值图像所占图像的宽度,用H2k表示第k次旋转后子区域二值图像所占图像的高度,计算方法为:
其中,α=|k-9|°表示旋转角度,为向下取整运算符,表示不大于W1×cosα+H1×sinα的最大整数。
用Rk[i,j]表示第k次旋转后,子区域二值图像水平位置为i,垂直位置为j像素点处的值,先做初始化,Rk[i,j]=0,i=1,2,...,W2k,j=1,2,...,H2k,取k=1时,子区域二值图像像素点R[i,j]顺时针旋转-8°,也即逆时针旋转8°,此时α=8°,得到旋转后的子区域二值图像R1[i,j],原子区域二值图像位置[i,j]对应的像素值R[i,j]在逆时针旋转α后子区域二值图像位置[i1,j1]对应的像素值R1[i,j]的计算公式为:
其中,[i1,j1]为经过运算后向下取整操作得到的。
k依次加1,取k=2,3,...,8时,依次将子区域二值图像像素点R[i,j]逆时针旋转-7°到-1°,此时,α=|k-9|°,可分别得到R2[i,j],R3[i,j],...,R8[i,j],k=9时,旋转角度为0,此时,R9[i,j]=R[i,j],k=10,11,...,17时,依次将子区域二值图像像素点R[i,j]顺时针旋转1°到7°,此时,α=|k-9|°,原子区域二值图像各像素点的位置[i,j]对应的像素值R[i,j]在顺时针旋转α后子区域二值图像各像素点的位置[i1,j1]对应的像素值Rk[i,j]中的位置的计算公式为:
其中,[i1,j1]为经过运算后向下取整操作得到的。
可分别得到R10[i,j],R11[i,j],...,R17[i,j],共得到17个子区域二值图像Rk[i,j]。
c.对旋转后的每个子区域二值图像按行进行垂直投影,并计算旋转后的每个子区域二值图像的极大投影值
用hk[j]表示第k次旋转后的每个子区域二值图像第j行的投影值。计算公式为:
用m[k]表示第k个旋转图像的极大投影值,共得到17个极大投影值,依次为:m[1],m[2],...,m[17],计算公式为:
d.对上一步骤得到的17个极大投影值进行判断,计算最大投影值对应的角度值,进而计算倾斜角度
对得到的17个极大投影值m[k]进行判断,找出其中的最大值作为最大投影值,此时对应的旋转角度值为如果(K-9)<0,表明运单图像顺时针方向倾斜了|K-9|°,即倾斜角度为β=|K-9|°,如果(K-9)=0,表示运单图像没有倾斜,β=0,如果(K-9)>0,表明运单图像逆时针方向倾斜了|K-9|°,倾斜角度为β=-|K-9|°。
需要说明的是,本发明中计算倾斜角度,只针对倾斜角度<的。
(2).倾斜校正
根据上述得到的倾斜角度,对运单彩色图像和运单二值图像分别进行倾斜补偿,完成倾斜校正,用W3表示倾斜校正后运单彩色图像和运单二值图像的宽度,用H3表示倾斜校正后运单彩色图像和运单二值图像的高度,计算方法为:
当倾斜角度β>0时,对运单彩色图像和运单二值图像按照公式(4-1)做逆时针校正,其中α=β;当倾斜角度β<0时,对运单彩色图像和运单二值图像按照公式(4-2)做顺时针校正,其中α=|β|;当倾斜角度β=0时,对运单彩色图像和运单二值图像不做校正。
4.运单二值图像去噪
当扫描过程中由于纸张质量或者扫描镜头的灰尘原因,造成扫描出来的影像存在噪声点,大大影响彩色色块编码定位的质量,因此针对步骤3自动纠偏后的运单二值图像需要进行噪声点去除。
在本发明实施例中,采用常规的中值滤波算法对运单二值图像去除噪声,中值滤波算法是将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。
5.彩色色块编码定位
在步骤4处理后,运单二值图像基本是比较理想的图像,在此二值图像上进行彩色色块编码定位。彩色色块编码定位对于彩色色块编码解码有很重要的作用,彩色色块编码定位的准确与否直接关系到彩色色块编码解码的结果,准确的定位到彩色色块编码的位置后,就能更准确的进行彩色色块编码解码。
在倾斜校正后的二值图像中,首先确定彩色色块编码第一色块左上角的搜索范围,然后与左上角定位模板进行加权计算,完成对彩色色块编码第一色块左上角的精确定位,然后确定彩色色块编码第一色块右上角的搜索范围,然后与右上角定位模板进行加权计算,完成对彩色色块编码第一色块右上角的精确定位,最后依次确定彩色色块编码第一色块的左下角和右下角,根据彩色色块编码编码各子块的大小相同,间距相同,依次确定彩色色块编码的剩余子块的位置。
定位模板是指用于定位各顶点,与各顶点进行卷积运算的矩阵。m表示定位模板的列值,n表示定位模板的行值,m=1,2,...,21,n=1,2,...,21,用T1[m,n]表示左上角定位模板第n行第m列的值,用公式表示如下:
用T2[m,n]表示右上角定位模板第n行第m列的值,用公式表示如下:
用T3[m,n]表示左下角定位模板第n行第m列的值,用公式表示如下:
(1)纵向排列的彩色色块编码定位
纵向排列的彩色色块编码各色块的左上角、左下角位置的横坐标相同,各色块的右上角、右下角位置的横坐标相同,各色块的左上角位置的纵坐标之间的距离相同,各色块的右上角位置的纵坐标的距离相同,各色块的左下角位置的纵坐标的距离相同,各色块的右下角位置的纵坐标的距离相同。
1)彩色色块编码第一色块左上角精确定位
由于彩色色块编码总是位于运单图像的某一区域内,运单图像中彩色色块编码左上角的大概位置为[x00,y00],这个位置同时也是彩色色块编码第一色块的左上角位置,对于左上角给予一定的宽裕,水平偏移量为a,垂直偏移量为b,则运单二值图像彩色色块编码第一色块左上角搜索范围依次为:左上角[x00-a,y00-b],右上角[x00+a,y00-b],左下角[x00-a,y00+b],右下角[x00+a,y00+b],在本发明实施例中,a=15,b=15。
在搜索范围内,从左上角开始,按自左向右,自上向下的顺序依次平移定位模板,每移动一次定位模板,使定位模板的中心与搜索范围内的相应点重合,计算定位模板与其覆盖下图像的卷积值。如上所述,定位模板的中心是指定位模板正中间的点,对于左上角定位模板来说,其中心为用T1[11,11]表示,右上角定位模板的中心为T2[11,11],左下角定位模板的中心为T3[11,11]。
运单二值图像搜索范围内各像素点与左上角定位模板的卷积值t1[i,j]的计算方法如下:
其中,i=x00-a,x00-a+1,..,x00+a,j=y00-b,y00-b+1,..,y00+b。
在计算得到的运单二值图像搜索范围内各像素点的卷积值t1[i,j]中,其最大值对应的位置便为运单二值图像彩色色块编码第一色块的左上角位置,这个位置同时也是彩色色块编码左上角的位置,用[x01,y01]表示。
2)彩色色块编码第一色块右上角精确定位
以彩色色块编码第一色块左上角为基础,确定彩色色块编码第一色块右上角的搜索范围依次为:左上角[x01,y01-b],右上角[x01+2*a,y01-b],左下角[x01,y01+b],右下角[x01+2*a,y01+b]。
按照步骤1)相同的搜索方式,计算定位模板与其覆盖下图像的卷积值,运单二值图像搜索范围内各像素点与右上角定位模板的卷积值t2[i,j]的计算方法如下:
其中,i=x01,x01+1,..,x01+2*a,j=y01-b,y01-b+1,..,y01+b。
t2[i,j]最大值对应的位置便为运单二值图像彩色色块编码第一色块右上角的位置。这个位置同时也是彩色色块编码的右上角位置,用[x02,y02]表示。
3)彩色色块编码第一色块左下角定位
以彩色色块编码第一色块左上角为基础,确定彩色色块编码第一色块左下角的搜索范围依次为:左上角[x01-a,y01],右上角[x01+a,y01],左下角[x01-a,y01+2*b],右下角[x01+a,y01+2*b]。
按照步骤1)相同的搜索方式,计算定位模板与其覆盖下图像的卷积值,运单二值图像搜索范围内各像素点与左下角角定位模板的卷积值t3[i,j]的计算方法如下
其中,i=x01-a,x01-a+1,..,x01+a,j=y01,y01+1,..,y01+2*b。
t3[i,j]最大值对应的位置便为运单二值图像彩色色块编码第一色块左下角的位置,用[x03,y03]表示。
4)彩色色块编码第一色块右下角定位
得到彩色色块编码第一色块的左上角,右上角,左下角位置后,对应可得到彩色色块编码第一色块的右下角位置[x04,y04],其中x04=x02,y04=y03;
5)彩色色块编码第二色块左上角定位
以彩色色块编码第一色块左上角为基础,确定彩色色块编码第二色块左上角的搜索范围依次为:左上角[x01-a,y01],右上角[x01+a,y01],左下角[x01-a,y01+2*b],右下角[x01+a,y01+2*b]。
按照步骤1)相同的搜索方式,计算左上角定位模板T1[m,n]与其覆盖下图像的卷积值t4[i,j]:
其中,i=x01-a,x01-a+1,..,x01+a,j=y01,y01+1,..,y01+2*b。
t4[i,j]最大值对应的位置便为运单二值图像彩色色块编码第二色块左上角的位置,用[x11,y11]表示。
可以得出第一色块的宽度w等于x02-x01,第一色块的高度h等于y03-y01,第一色块的下边界和第二色块的上边界的垂直距离d等于y11-y03。
6)彩色色块编码剩余各色块定位
由于彩色色块编码每一色块的大小是相同的,并且彩色色块编码各色块间的位置是固定的,因此对应可以确定彩色色块编码剩余每一色块的精确位置。
彩色色块编码第二色块的右上角的位置为[x12,y12],其中x12=x11+w,y12=y11,彩色色块编码第二色块左下角的位置为[x13,y13],其中,x13=x11,y13=y11+h,彩色色块编码第二色块右下角的位置为[x14,y14],其中,x14=x12,y14=y13,彩色色块编码第三色块左上角的位置为[x21,y21],其中,x21=x13,y21=y13+d,彩色色块编码第三色块右上角的位置为[x22,y22],其中,x22=x21+w,y22=y21,彩色色块编码第三色块左下角的位置为[x23,y23],其中,x23=x21,y23=y21+h,彩色色块编码第三色块右下角的位置为[x24,y24],其中,x24=x22,y24=y23,彩色色块编码第四色块左上角的位置为[x31,y31],其中,x31=x23,y31=y23+d,彩色色块编码第四色块右上角的位置为[x32,y32],其中,x32=x31+w,y32=y31,彩色色块编码第四色块左下角的位置为[x33,y33],其中,x33=x31,y33=y31+h,彩色色块编码第四色块右下角的位置为[x34,y34],其中,x34=x32,y34=y33,彩色色块编码第五色块左上角的位置为[x41,y41],其中,x41=x33,y41=y33+d,彩色色块编码第五色块右上角的位置为[x42,y42],其中,x42=x41+w,y42=y41,彩色色块编码第五色块左下角的位置为[x43,y43],其中,x43=x41,y43=y41+h,彩色色块编码第五色块右下角的位置为[x44,y44],其中,x44=x42,y44=y43,彩色色块编码第六色块左上角的位置为[x51,y51],其中,x51=x43,y51=y43+d,彩色色块编码第六色块右上角的位置为[x52,y52],其中,x52=x51+w,y52=y51,彩色色块编码第六色块左下角的位置为[x53,y53],其中,x53=x51,y53=y51+h,彩色色块编码第六色块右下角的位置为[x54,y54],其中,x54=x52,y54=y53,彩色色块编码第七色块左上角的位置为[x61,y61],其中,x61=x53,y61=y53+d,彩色色块编码第七色块右上角的位置为[x62,y62],其中,x62=x61+w,y62=y61,彩色色块编码第七色块左下角的位置为[x63,y63],其中,x63=x61,y63=y61+h,彩色色块编码第七色块右下角的位置为[x64,y64],其中,x64=x62,y64=y63。
(2)横向排列的彩色色块编码定位
横向排列的彩色色块编码各色块的左上角、右上角位置的纵坐标相同,各色块的左下角、右下角位置的纵坐标相同,各色块的左上角位置的横坐标之间的距离相同,各色块的右上角位置的横坐标的距离相同,各色块的左下角位置的横坐标的距离相同,各色块的右下角位置的横坐标的距离相同。
1)彩色色块编码左上角精确定位
彩色色块编码左上角的定位方法与纵向排列的彩色色块编码左上角定位的方法相同,这个位置同时也是彩色色块编码第一色块的左上角位置,用[x71,y71]表示。
2)彩色色块编码第一色块右上角精确定位
彩色色块编码第一色块的右上角定位方法与纵向排列的彩色色块编码第一色块右上角定位的方法相同,用[x72,y72]表示。
3)彩色色块编码第一色块左下角定位
彩色色块编码第一色块的左下角定位方法与纵向排列的彩色色块编码第一色块左下角定位的方法相同,用[x73,y73]表示。
4)彩色色块编码第一色块右下角定位
得到彩色色块编码第一色块的左上角,右上角,左下角位置后,对应可得到彩色色块编码第一色块的右下角位置[x64,y64],其中x64=x62,y64=y63。
5)彩色色块编码第二色块左上角定位
以彩色色块编码第一色块左上角为基础,确定彩色色块编码第二色块左上角的搜索范围依次为:左上角[x61,y61-b],右上角[x61+2*a,y61-b],左下角[x61,y61+b],右下角[x61+2*a,y61+b],在本发明实施例中,a=15,b=15。
在搜索范围内,从左上角开始,按自左向右,自上向下的顺序依次平移定位模板,每移动一次定位模板窗口,使定位模板的中心与搜索范围内的相应点重合,计算定位模板与其覆盖下图像的卷积值。
左上角定位模板T1[m,n]与其覆盖下图像的卷积值t5[i,j]:
其中,i=x71,x71+1,..,x71+2a,j=y71-b,y71-b+1,..,y71+b。
t5[i,j]最大值对应的位置便为运单二值图像黑白色块第二色块左上角的位置,用[x71,y71]表示。
可以得出第一色块的宽度w1等于x72-x71,第一色块的高度h1等于y73-y71,第一色块的右边界和第二色块的左边界的水平距离d1等于x81-x72。
6)彩色色块编码剩余各色块定位
由于彩色色块编码每一色块的大小是相同的,并且彩色色块编码各色块间的位置是固定的,因此对应可以确定彩色色块编码剩余每一色块的精确位置;
彩色色块编码第二色块的右上角的位置为[x82,y82],其中x82=x81+w1,y82=y81,彩色色块编码第二色块左下角的位置为[x83,y83],其中,x83=x81,y83=y81+h1,彩色色块编码第二色块右下角的位置为[x84,y84],其中,x84=x82,y84=y83,彩色色块编码第三色块左上角的位置为[x91,y91],其中,x91=x82+d1,y91=y82,彩色色块编码第三色块右上角的位置为[x92,y92],其中,x92=x91+w1,y92=y91,彩色色块编码第三色块左下角的位置为[x93,y93],其中,x93=x91,y93=y91+h1,彩色色块编码第三色块右下角的位置为[x94,y94],其中,x94=x92,y94=y93,彩色色块编码第四色块左上角的位置为[x101,y101],其中,x101=x92+d1,y101=y92,彩色色块编码第四色块右上角的位置为[x102,y102],其中,x102=x101+w1,y102=y101,彩色色块编码第四色块左下角的位置为[x103,y103],其中,x103=x101,y103=y101+h1,彩色色块编码第四色块右下角的位置为[x104,y104],其中,x104=x102,y104=y103,彩色色块编码第五色块左上角的位置为[x111,y111],其中,x111=x102+d1,y111=y102,彩色色块编码第五色块右上角的位置为[x112,y112],其中,x112=x111+w1,y112=y111,彩色色块编码第五色块左下角的位置为[x113,y113],其中,x113=x111,y113=y111+h1,彩色色块编码第五色块右下角的位置为[x114,y114],其中,x114=x112,y114=y113,彩色色块编码第六色块左上角的位置为[x121,y121],其中,x121=x122+d1,y121=y122,彩色色块编码第六色块右上角的位置为[x122,y122],其中,x122=x121+w1,y122=y121,彩色色块编码第六色块左下角的位置为[x123,y123],其中,x123=x121,y123=y121+h1,彩色色块编码第六色块右下角的位置为[x124,y124],其中,x124=x122,y124=y123,彩色色块编码第七色块左上角的位置为[x131,y131],其中,x131=x122+d1,y131=y122,彩色色块编码第七色块右上角的位置为[x132,y132],其中,x132=x131+w1,y132=y131,彩色色块编码第七色块左下角的位置为[x133,y133],其中,x133=x131,y133=y131+h1,彩色色块编码第七色块右下角的位置为[x134,y134],其中,x134=x132,y134=y133。
6.彩色色块编码解码
在得到编码中各色块的位置后,就可以进行彩色色块编码的解码了;
在得到彩色色块编码中每一色块的位置后通过对运单彩色图像中各彩色色块编码各像素点的RGB值进行分析:
当R[i,j]>200,G[i,j]<50且B[i,j]<50时,表示运单彩色图像水平位置为i,垂直位置为j的像素点处为红色;
当R[i,j]>200,150<G[i,j]<200且B[i,j]<50时,表示运单彩色图像水平位置为i,垂直位置为j的像素点处为橙色;
当R[i,j]>200,G[i,j]>200且B[i,j]<50时,表示运单彩色图像水平位置为i,垂直位置为j的像素点处为黄色;
当R[i,j]<50,G[i,j]>200且B[i,j]<50时,表示运单彩色图像水平位置为i,垂直位置为j的像素点处为绿色;
当R[i,j]<50,G[i,j]>200且B[i,j]>200时,表示运单彩色图像水平位置为i,垂直位置为j的像素点处为青色;
当R[i,j]<50,G[i,j]<50且B[i,j]>200时,表示运单彩色图像水平位置为i,垂直位置为j的像素点处为蓝色;
当100<R[i,j]<150,G[i,j]<50且100<B[i,j]<150时,表示运单彩色图像水平位置为i,垂直位置为j的像素点处为紫色;
当彩色色块中判断为红色的像素点数大于该色块总像素点数的一半时,该色块判定为红色色块,该色块用‘0’表示,表示为红色块,否则判断为橙色的像素点数大于该色块总像素点数的一半,是则为橙色色块,用“1”表示,判断为黄的像素点数大于该色块总像素点数的一半,是则为黄色色块,用“2”表示,判断为绿的像素点数大于该色块总像素点数的一半,是则为绿色色块,用“3”表示,判断为青的像素点数大于该色块总像素点数的一半,是则为青色色块,用“4”表示,判断为蓝的像素点数大于该色块总像素点数的一半,是则为蓝色色块,用“5”表示,判断为紫的像素点数大于该色块总像素点数的一半,是则为紫色色块,用“6”表示,直到确定各彩色色块的颜色后,将从上到下各或从左到右排列的各彩色色块的信息依次排列,便可得到该彩色色块编码信息。在本发明实施例中,如果检测得到的结果为“6134245”,则对应表示的色块信息为“紫色、橙色、绿色、青色、黄色、青色、蓝色”。根据“6134245”对应的编码表确定该运单类型。
在确定了运单类型后,对应进行后续的版面切割和识别任务,运单数据的电子化有很大帮助。
四、运单信息生成单元
运单信息生成单元的主要功能是将运单图片的运单类型保存下来。这里的运单信息生成单元可以简单的看作一个常用的计算机,将运单图片的运单类型保存在计算机里,用于后续的识别。