首页 > 编程语言 >m基于MATLAB的发票数字信息识别算法仿真,通过形态学处理进行字符分割,通过模板匹配实现数字字母识别

m基于MATLAB的发票数字信息识别算法仿真,通过形态学处理进行字符分割,通过模板匹配实现数字字母识别

时间:2023-05-28 12:01:32浏览次数:56  
标签:11 Nums Car LL LEN DONE MATLAB 数字信息 识别

1.算法仿真效果 matlab2022a仿真结果如下:

1.png2.png3.png4.png5.png

2.算法涉及理论知识概要 形态学是图像处理中应用最为广泛的技术之一,主要用于从图像中提取对表达和描绘区域形状有意义的图像分量,使后续的识别工作能够抓住目标对象最为本质的形状特征,如边界和连通区域等。同时像细化、像素化和修剪毛刺等技术也常应用于图像的预处理和后处理中,成为图像增强技术的有力补充。形态学的基本思想是利用一种特殊的结构元来测量或提取输入图像中相应的形状或特征,以便进一步进行图像分析和目标识别。

    计算机和电子信息技术的高速发展,使得数据处理加工能力逐步增强,为图像处理、计算机视觉和模式识别技术应用于智能交通信息采集提供了强有力的保障。该系统通过摄像机对交通信息流进行摄像,利用图像处理和模式识别技术对连续的交通信息流进行处理,以此达到监测交通信息流的目的。同时,现场的交通视频信号也能够为电视监控共用。近年来,该系统得到快速发展,作为一种检测手段,视频检测技术所提供的丰富交通信息,以及所具有的各种优点,都是其他方法难以比拟的。

形态学处理

腐蚀:对核范围内的像素,只要有一个是非前景,则设置为背景;比如对于33的核函数,如果当前像素的33邻域内像素全是前景则保留,否者设置为背景;常用于去除较小噪声,分离物体。

膨胀:对核范围内的像素,只要有一个是前景,则设置为前景;比如对于33的核函数,如果当前像素的33邻域内像素有一个是前景则当前像素设置为前景,否者设置为背景;通常膨胀会用在腐蚀之后,腐蚀会去除小的噪声,但也会把前景变瘦,而膨胀则会再变胖。

开运算:先腐蚀,再膨胀;主要处理噪点在前景外的图像。

闭运算:先膨胀,再腐蚀;主要处理噪点在前景内的图像。

如果图像前景内外都有噪点,先开再闭 或 先闭再开 都可以得到前景图像。

形态学梯度:膨胀-腐蚀;可以得到前景轮廓。

顶帽运算:原图-开运算;可以得到前景外的噪点。

黑帽运算:闭运算-原图;可以得到前景内的噪点。

1、图像输入、预处理:

图像输入:对于不同的图像格式,有着不同的存储格式,不同的压缩方式。预处理:主要包括二值化,噪声去除,倾斜较正等

2、二值化:

对摄像头拍摄的图片,大多数是彩色图像,彩色图像所含信息量巨大,对于图片的内容,我们可以简单的分为前景与背景,为了让计算机更快的,更好的识别文字,我们需要先对彩色图进行处理,使图片只前景信息与背景信息,可以简单的定义前景信息为黑色,背景信息为白色,这就是二值化图了。

3、噪声去除:

对于不同的文档,我们对噪声的定义可以不同,根据噪声的特征进行去噪,就叫做噪声去除

4、倾斜较正:

由于一般用户,在拍照文档时,都比较随意,因此拍照出来的图片不可避免的产生倾斜,这就需要文字识别软件进行较正。

5、版面分析:

将文档图片分段落,分行的过程就叫做版面分析,由于实际文档的多样性,复杂性,因此,还没有一个固定的,最优的切割模型。

6、字符切割:

由于拍照条件的限制,经常造成字符粘连,断笔,因此极大限制了识别系统的性能,这就需要文字识别软件有字符切割功能。

7、字符识别:

这一研究,已经是很早的事情了,比较早有模板匹配,后来以特征提取为主,由于文字的位移,笔画的粗细,断笔,粘连,旋转等因素的影响,极大影响特征的提取的难度。

3.MATLAB核心程序

alpha    = 0.85;
[r,c]    = size(Car_Num);
Car_Num  = imresize(Car_Num,[100 c]);
[r,c]    = size(DATE);
DATE     = imresize(DATE,[100 c]);
[r,c]    = size(DONE_Num);
DONE_Num = imresize(DONE_Num,[100 c]);
 
I7   = ~im2bw(Car_Num ,alpha*graythresh(Car_Num));
VI7  = sum(I7,1);
tmp7 = find(VI7 > 5);
Ind7 = tmp7(end);
Car_Num7 = Car_Num(:,Ind7-1*LEN+1+LL:Ind7-0*LEN+LL);
Car_Num6 = Car_Num(:,Ind7-2*LEN+1+LL:Ind7-1*LEN+LL);
Car_Num5 = Car_Num(:,Ind7-3*LEN+1+LL:Ind7-2*LEN+LL);
Car_Num4 = Car_Num(:,Ind7-4*LEN+1+LL:Ind7-3*LEN+LL);
Car_Num3 = Car_Num(:,Ind7-5*LEN+1+LL:Ind7-4*LEN+LL);
Car_Num2 = Car_Num(:,Ind7-6*LEN+1+LL:Ind7-5*LEN+LL);
Car_Num1 = Car_Num(:,Ind7-7*LEN+1:Ind7-6*LEN+LL);
Car_Nums{7} = Car_Num7;
Car_Nums{6} = Car_Num6;
Car_Nums{5} = Car_Num5;
Car_Nums{4} = Car_Num4;
Car_Nums{3} = Car_Num3;
Car_Nums{2} = Car_Num2;
Car_Nums{1} = Car_Num1;
 
 
 
 
I8   = ~im2bw(DATE    ,alpha*graythresh(DATE));
VI8  = sum(I8,1);
tmp8 = find(VI8 > 5);
Ind8 = tmp8(end);
DATE11= DATE(:,Ind8-1*LEN+1+LL:Ind8-0*LEN+LL);
DATE10= DATE(:,Ind8-2*LEN+1+LL:Ind8-1*LEN+LL);
DATE9 = DATE(:,Ind8-3*LEN+1+LL:Ind8-2*LEN+LL);
DATE8 = DATE(:,Ind8-4*LEN+1+LL:Ind8-3*LEN+LL);
DATE7 = DATE(:,Ind8-5*LEN+1+LL:Ind8-4*LEN+LL);
DATE6 = DATE(:,Ind8-6*LEN+1+LL:Ind8-5*LEN+LL);
DATE5 = DATE(:,Ind8-7*LEN+1+LL:Ind8-6*LEN+LL);
DATE4 = DATE(:,Ind8-8*LEN+1+LL:Ind8-7*LEN+LL);
DATE3 = DATE(:,Ind8-9*LEN+1+LL:Ind8-8*LEN+LL);
DATE2 = DATE(:,Ind8-10*LEN+1+LL:Ind8-9*LEN+LL);
DATE1 = DATE(:,Ind8-11*LEN+1:Ind8-10*LEN+LL);
 
DATEs{11} = DATE11;
DATEs{10} = DATE10;
DATEs{9} = DATE9;
DATEs{8} = DATE8;
DATEs{7} = DATE7;
DATEs{6} = DATE6;
DATEs{5} = DATE5;
DATEs{4} = DATE4;
DATEs{3} = DATE3;
DATEs{2} = DATE2;
DATEs{1} = DATE1;
 
 
 
I9   = ~im2bw(DONE_Num,alpha*graythresh(DONE_Num));
VI9  = sum(I9,1);
tmp9 = find(VI9 > 5);
Ind9 = tmp9(end);
DONE_Num5 = DONE_Num(:,Ind9-1*LEN+1+LL:Ind9-0*LEN+LL);
DONE_Num4 = DONE_Num(:,Ind9-2*LEN+1+LL:Ind9-1*LEN+LL);
DONE_Num3 = DONE_Num(:,Ind9-3*LEN+1+LL:Ind9-2*LEN+LL);
DONE_Num2 = DONE_Num(:,Ind9-4*LEN+1+LL:Ind9-3*LEN+LL);
DONE_Num1 = DONE_Num(:,Ind9-5*LEN+1:Ind9-4*LEN+LL);
 
DONE_Nums{5} = DONE_Num5;
DONE_Nums{4} = DONE_Num4;
DONE_Nums{3} = DONE_Num3;
DONE_Nums{2} = DONE_Num2;
DONE_Nums{1} = DONE_Num1;
 
figure;
subplot(3,11,1);
imshow(Car_Nums{1},[]);
subplot(3,11,2);
imshow(Car_Nums{2},[]);
subplot(3,11,3);
imshow(Car_Nums{3},[]);
subplot(3,11,4);
imshow(Car_Nums{4},[]);
subplot(3,11,5);
imshow(Car_Nums{5},[]);
subplot(3,11,6);
imshow(Car_Nums{6},[]);
subplot(3,11,7);
imshow(Car_Nums{7},[]);
 
 
subplot(3,11,12);
imshow(DATEs{1},[]);
subplot(3,11,13);
imshow(DATEs{2},[]);
subplot(3,11,14);
imshow(DATEs{3},[]);
subplot(3,11,15);
imshow(DATEs{4},[]);
subplot(3,11,16);
imshow(DATEs{5},[]);
subplot(3,11,17);
imshow(DATEs{6},[]);
subplot(3,11,18);
imshow(DATEs{7},[]);
subplot(3,11,19);
imshow(DATEs{8},[]);
subplot(3,11,20);
imshow(DATEs{9},[]);
subplot(3,11,21);
imshow(DATEs{10},[]);
subplot(3,11,22);
imshow(DATEs{11},[]);
 
 
subplot(3,11,23);
imshow(DONE_Nums{1},[]);
subplot(3,11,24);
imshow(DONE_Nums{2},[]);
subplot(3,11,25);
imshow(DONE_Nums{3},[]);
subplot(3,11,26);
imshow(DONE_Nums{4},[]);
subplot(3,11,27);
imshow(DONE_Nums{5},[]);

标签:11,Nums,Car,LL,LEN,DONE,MATLAB,数字信息,识别
From: https://blog.51cto.com/matworld/6364942

相关文章

  • 基于SA模拟退火优化的TWVRP路径规划matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要模拟退火算法(simulatedannealing,SAA)来源于固体退火原理,是一种基于概率的算法。模拟退火算法来源于固体退火原理,是一种基于概率的算法,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增......
  • 基于GWO灰狼优化的生产线工件工序调度优化matlab仿真,仿真输出优化收敛曲线和工序调度
    1.算法仿真效果matlab2022a仿真结果如下:   2.算法涉及理论知识概要       灰狼优化算法(GWO),灵感来自于灰狼.GWO算法模拟了自然界灰狼的领导层级和狩猎机制.四种类型的灰狼,如α,β,δ,w被用来模拟领导阶层。此外,还实现了狩猎的三个主要步骤:寻找猎物、包围......
  • m基于ABC人工蜂群优化的无线传感器网络路由优化算法matlab仿真,对比优化前后网络寿命,
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要无线传感器网络通常使用电池电源,因此能量有限,属于一次性使用。因此,无线传感器网络在原理和应用平台上都有自己的特点:•有限的能源和存储容量传感器节点通常布置在无人值守的运行环境中,节点能量由电池提供,但在......
  • m基于ABC人工蜂群优化的无线传感器网络路由优化算法matlab仿真,对比优化前后网络寿命,
    1.算法仿真效果matlab2022a仿真结果如下:       2.算法涉及理论知识概要       无线传感器网络通常使用电池电源,因此能量有限,属于一次性使用。因此,无线传感器网络在原理和应用平台上都有自己的特点: •有限的能源和存储容量        传感器......
  • Matlab中用m代码来控制运行Simulink仿真过程
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • matlab中find函数失效的问题
    (52条消息)关于matlab中find函数失效的问题_matlabfind有时候找不到值_开飞机的小毛驴儿的博客-CSDN博客matlab中的find函数可以返回指定元素的位置,但是有时候会发现矩阵中明明存在一个数,但是返回位置却是空的,即找不到指定元素的位置。这时候需要考虑的是matlab的精度问题。如......
  • 旷视人脸识别代码
    servletpackagecom.sxr;importjavax.net.ssl.SSLException;importjava.io.*;importjava.net.HttpURLConnection;importjava.net.URL;importjava.net.URLEncoder;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;importjava.util......
  • 花朵识别系统Python实现,基于深度学习卷积神经网络算法
    一、背景花朵识别系统,基于Python实现,深度学习卷积神经网络,通过TensorFlow搭建卷积神经网络算法模型,并对数据集进行训练最后得到训练好的模型文件,并基于Django搭建可视化操作平台。在当今信息化社会,图像识别技术在各种领域都展现出了重要的应用价值,包括医学影像分析、自动驾驶、人脸......
  • 基于GoogleNet深度学习网络的人员身份识别系统Matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:  2.算法涉及理论知识概要       深度学习(DL,DeepLearning)是机器学习(ML,MachineLearning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI,ArtificialIntelligence)。[1深度学习是学习样本数据......
  • 基于MIMO-OFDM通信系统的误码率matlab仿真,对比了MRC,ZF等多种接收器性能
    1.算法仿真效果matlab2022a仿真结果如下:  2.算法涉及理论知识概要    MIMO-OFDM系统的接收信号是多个发射天线发送信号的衰落与加性噪声的线性叠加,若采用通常SISO-OFDM系统或MIMO系统的估计算法估计信道,将会带来很大的估计误差。出于设计实现的考虑,本文主要研究理论相......