【邮政编码识别】基于计算机视觉实现邮政编码识别含Matlab源码
【邮政编码识别】基于计算机视觉实现邮政编码识别含Matlab源码
TT_Matlab
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。
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.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
