1 简介 邮政包裹的自动分拣可以使邮政部门节省大量的人力物力,有效地提高邮政部门的邮件分拣效率,具有广阔的应用前景.该文对邮政包裹地址标签上的邮政编码识别进行了比较深入的
1 简介
邮政包裹的自动分拣可以使邮政部门节省大量的人力物力,有效地提高邮政部门的邮件分拣效率,具有广阔的应用前景.该文对邮政包裹地址标签上的邮政编码识别进行了比较深入的研究,在简化模型的基础之上,详细阐述了系统的处理流程:邮件图像数字化获取,地址标签定位,地址标签图像分割,预处理,字符分割,识别前处理,字符特征提取,识别器的设计与训练,邮政编码识别.针对邮政包裹原始图像数据量大的特点,首先对地址标签图像进行了分割.地址标签图像的分割经过粗分割和二次细分割两个步骤,分别采用了两种不同的策略.文章中提出了基于灰度变化的隔行扫描的图像分割方法和灰度阈值分割法,实现了对地址标签图像的准确分割.在此基础之上进行了图像复原,倾斜校正,二值化等图像预处理操作.对地址字符的分割采用了灰度投影统计的方法,有效地消除了二值化图像中孤立噪声点的干扰.该文充分地利用了邮政地址标签的先验知识,使邮政编码的定位和分割更加准确,高效.对邮政编码字符选取了能够全面地体现其结构特征和统计特性的14维特征向量.根据邮政编码字符集小的特点选用了模板匹配的方法设计了识别器.实验表明了该文算法的有效性.
2 部分代码
function data = fcla(i,eul, endp, height, x1, x2)data = 0;
if eul(i) == -1 %欧拉数为-1时,数字为8.
data = 8;
elseif eul(i) == 0 %欧拉数为0.
if endp(i) == 0 %欧拉数为0,端点数为0,数字为0.
data = 0;
elseif endp(i) > 2 %欧拉数为0,端点数大于2,数字为4.
data = 4;
elseif endp(i)==2 %欧拉数为0,端点数为2
[direction2(i,:),~] = connex(x1,x2);%direction为端点连接点的方向,n_endp为端点个数,x1为数字图,x2为端点图
if (direction2(i,1)==2 || direction2(i,1)==3 || direction2(i,1)==4)&&(direction2(i,2)==5 || direction2(i,2)==6)
data = 8;
elseif (direction2(i,1)==4 || direction2(i,1)==5 || direction2(i,1)==6)&&(direction2(i,2)==2 || direction2(i,2)==1)
data = 4;
end
else %欧拉数为0,端点数为1.
[end_r,~] = find(x2==1); %看端点位置.
if end_r>(height/2) %端点位于下半图中,数字为9.
data = 9;
else
data = 6; %端点位于上半图中,数字为6.
end
end
elseif eul(i) == 1 %欧拉数为1.
if endp(i)==3 %欧拉数为1,端点数为3.
[direction3(i,:),~] = connex(x1,x2);%direction为端点连接点的方向,n_endp为端点个数,x1为数字图,x2为端点图.
if (direction3(i,1)==7 || direction3(i,1)==5 || direction3(i,1)==6)&&(direction3(i,3)==3 || direction3(i,3)==4 || direction3(i,3)==5)
data = 5;
elseif (direction3(i,1)==0 || direction3(i,1)==1 || direction3(i,1)==2)&&(direction3(i,2)==7 || direction3(i,2)==1 || direction3(i,2)==0)&&(direction3(i,3)==1 || direction3(i,3)==0 || direction3(i,3)==7 || direction3(i,3)==6)
data = 3;
else
data = 2;
end
elseif endp(i)==4 %欧拉数为1,端点数为4.
[direction4(i,:),~] = connex(x1,x2);%direction为端点连接点的方向,n_endp为端点个数,x1为数字图,x2为端点图.
if ((direction4(i,1)==5 || direction4(i,1)==6 || direction4(i,1)==7 )&&(direction4(i,2)==1 || direction4(i,2)==2))||((direction4(i,2)==5 || direction4(i,2)==6)&&(direction4(i,1)==1 || direction4(i,1)==2 || direction4(i,1)==0))
data = 4;
else
data = 5;
end
elseif endp(i)==2 %否则,端点数为2
[direction2(i,:),~] = connex(x1,x2);%direction为端点连接点的方向,n_endp为端点个数,x1为数字图,x2为端点图
if (direction2(i,1)==1 || direction2(i,1)==5 || direction2(i,1)==6 || direction2(i,1)==7)&&(direction2(i,2)==2 || direction2(i,2)==1)
data = 1;
elseif direction2(i,1)==4 || direction2(i,1)==5
data = 5;
elseif (direction2(i,1)==0 || direction2(i,1)==2)&&(direction2(i,2)==1 || direction2(i,2)==2)
data = 7;
elseif (direction2(i,1)==0 || direction2(i,1)==1 || direction2(i,1)==2)&&(direction2(i,2)==3 || direction2(i,2)==4 || direction2(i,2)==6)
data = 2;
end
end
end
end
3 仿真结果
4 参考文献
[1]吕岳, 芮剑明. 邮政编码数字识别系统的设计与实现[J]. 计算机工程与应用, 1999, 35(6):2.