OCR+CNN完成铭牌字符识别【MATLAB】

简介: OCR+CNN完成铭牌字符识别【MATLAB】

RCNN问世之前传统的方法为OCR提取,将OCR提取到的字符进行归一化处理,再使用CNN或者SVM进行识别


下列为搭建的一个简易操作截面,流程为按钮部分:

image.png

第一步:选择图像


选择指定图像显示在左侧坐标区域,稍后的OCR操作也是在左侧的AXES1内完成。

global I;
[filename, filepath]=uigetfile('*.bmp;*.jpg;*.png'); %选择图像文件
I=imread([filepath filename]);%读取完整路径的图像
axes(handles.axes1); %指定显示的图像位置
imshow(I); %显示图像矩阵

第二步: 执行OCR


在执行OCR操作前可以将图像灰度化,这是为了后面的图像识别步骤能够节约空间,同时也避免在归一化的时候对五张字符都进行灰度化


OCR操作的时候,使用imcrop函数完成,大家详细资料可以参考mathwork上的介绍;由于铭牌上的字符为5位,故而只需要贴出5个坐标区就行了


global I;
global X1;
global X2;
global X3;
global X4;
global X5;
if size(I,3) ~= 1
    I = rgb2gray(I);
end
X1 = imcrop(I);
X2 = imcrop(I);
X3 = imcrop(I);
X4 = imcrop(I);
X5 = imcrop(I);
axes(handles.axes2)
imshow(X1)
axes(handles.axes3)
imshow(X2)
axes(handles.axes4)
imshow(X3)
axes(handles.axes6)
imshow(X4)
axes(handles.axes5)
imshow(X5)

第三步:归一化


由于在CNN识别前需要将图像归一化同等大小,而在执行OCR时就已经完成了灰度化操作,此时的图像都是灰度化后的图像,此时借用函数:imresize

这里我没有采用降噪滤波增强,偷懒了,大家在做的时候可以自行加上。


%%
global X1;
global X2;
global X3;
global X4;
global X5;
%%
global X1X;
global X2X;
global X3X;
global X4X;
global X5X;
%%
X1X = imresize(X1,[70,70]); % 都变成70 70的图像
axes(handles.axes2)
imshow(X1X)
%%
X2X = imresize(X2,[70,70]);  
axes(handles.axes3)
imshow(X2X)
%%
X3X = imresize(X3,[70,70]);  
axes(handles.axes4)
imshow(X3X)
%%
X4X = imresize(X4,[70,70]); 
axes(handles.axes5)
imshow(X4X)
%%
X5X = imresize(X5,[70,70]);  
axes(handles.axes6)
imshow(X5X)


第四步:识别字符


这里我使用了AlexNet网络结构,大家可以参考本人:juejin.cn/post/707478…  这里有详细介绍该网络的结构,同时也可参考:juejin.cn/post/707478… 这里是使用Deep Network Designer的教程


为什么不使用更高级的网络结构:根据奥姆卡剃须刀原理,可以避免过拟合现象出现,同时也实属没必要,浪费算力。


load numdata.mat
global X1X;
global X2X;
global X3X;
global X4X;
global X5X;
Y1 = classify(net,X1X);%预测数据  
YPred1=cellstr(Y1);
Y2 = classify(net,X2X);%预测数据  
YPred2=cellstr(Y2);
Y3 = classify(net,X3X);%预测数据  
YPred3=cellstr(Y3);
Y4 = classify(net,X4X);%预测数据  
YPred4=cellstr(Y4);
Y5 = classify(net,X5X);%预测数据  
YPred5=cellstr(Y5);
set(handles.edit1,'string',YPred1);
set(handles.edit2,'string',YPred2);
set(handles.edit3,'string',YPred3);
set(handles.edit4,'string',YPred4);
set(handles.edit5,'string',YPred5);


初始化


这个步骤就不多叙述了。

clc
axes(handles.axes1);
cla reset 
axes(handles.axes2);
cla reset 
axes(handles.axes3);
cla reset 
axes(handles.axes4);
cla reset 
axes(handles.axes5);
cla reset 
axes(handles.axes6);
cla reset 
A = " ";
set(handles.edit1,'string',A)
set(handles.edit2,'string',A)
set(handles.edit3,'string',A)
set(handles.edit4,'string',A)
set(handles.edit5,'string',A)


操作截图:


步骤1:选择图像

image.png


步骤2:执行OCR

image.png

image.png



步骤3:预处理

image.png



步骤4:识别字符

image.png


相关文章
|
18天前
|
机器学习/深度学习 算法 计算机视觉
基于CNN卷积神经网络的金融数据预测matlab仿真,带GUI界面,对比BP,RBF,LSTM
这是一个基于MATLAB2022A的金融数据预测仿真项目,采用GUI界面,比较了CNN、BP、RBF和LSTM四种模型。CNN和LSTM作为深度学习技术,擅长序列数据预测,其中LSTM能有效处理长序列。BP网络通过多层非线性变换处理非线性关系,而RBF网络利用径向基函数进行函数拟合和分类。项目展示了不同模型在金融预测领域的应用和优势。
|
15天前
|
机器学习/深度学习 算法 数据可视化
基于GA遗传优化的CNN-LSTM的时间序列回归预测matlab仿真
摘要:该内容展示了基于遗传算法优化的CNN-LSTM时间序列预测模型在matlab2022a中的应用。核心程序包括遗传算法优化过程、网络训练、误差分析及预测结果的可视化。模型通过GA调整CNN-LSTM的超参数,提升预测准确性和稳定性。算法流程涉及初始化、评估、选择、交叉和变异等步骤,旨在找到最佳超参数以优化模型性能。
|
23天前
|
机器学习/深度学习 存储 算法
基于CNN+LSTM深度学习网络的时间序列预测matlab仿真,并对比CNN+GRU网络
该文介绍了使用MATLAB2022A进行时间序列预测的算法,结合CNN和RNN(LSTM或GRU)处理数据。CNN提取局部特征,RNN处理序列依赖。LSTM通过门控机制擅长长序列,GRU则更为简洁、高效。程序展示了训练损失、精度随epoch变化的曲线,并对训练及测试数据进行预测,评估预测误差。
|
1月前
|
机器学习/深度学习 算法 数据挖掘
基于PSO优化的CNN-GRU-Attention的时间序列回归预测matlab仿真
摘要: 本文介绍了运用粒子群优化(PSO)调整深度学习模型超参数以提升时间序列预测性能的方法。在比较了优化前后的效果(Ttttttttttt12 vs Ttttttttttt34)后,阐述了使用matlab2022a软件的算法。文章详细讨论了CNN、GRU网络和注意力机制在时间序列预测中的作用,以及PSO如何优化这些模型的超参数。核心程序展示了PSO的迭代过程,通过限制和调整粒子的位置(x1)和速度(v1),寻找最佳解决方案(gbest1)。最终,结果保存在R2.mat文件中。
基于PSO优化的CNN-GRU-Attention的时间序列回归预测matlab仿真
|
14天前
|
机器学习/深度学习 算法
基于GA遗传优化的CNN-GRU的时间序列回归预测matlab仿真
摘要: 使用MATLAB2022a,展示了一种基于遗传算法优化的CNN-GRU时间序列预测模型,融合遗传算法与深度学习,提升预测精度。遗传算法负责优化模型超参数,如学习率和神经元数量,以最小化均方误差。CNN负责特征提取,GRU处理序列数据中的长期依赖。流程包括初始化、评估、选择、交叉、变异和迭代,旨在找到最佳超参数组合。
|
1月前
|
算法
MATLAB|【免费】融合正余弦和柯西变异的麻雀优化算法SCSSA-CNN-BiLSTM双向长短期记忆网络预测模型
这段内容介绍了一个使用改进的麻雀搜索算法优化CNN-BiLSTM模型进行多输入单输出预测的程序。程序通过融合正余弦和柯西变异提升算法性能,主要优化学习率、正则化参数及BiLSTM的隐层神经元数量。它利用一段简单的风速数据进行演示,对比了改进算法与粒子群、灰狼算法的优化效果。代码包括数据导入、预处理和模型构建部分,并展示了优化前后的效果。建议使用高版本MATLAB运行。
|
1月前
|
机器学习/深度学习 算法 数据挖掘
基于GWO灰狼优化的CNN-LSTM-Attention的时间序列回归预测matlab仿真
摘要: 本文介绍了使用matlab2022a中优化后的算法,应用于时间序列回归预测,结合CNN、LSTM和Attention机制,提升预测性能。GWO算法用于优化深度学习模型的超参数,模拟灰狼社群行为以求全局最优。算法流程包括CNN提取局部特征,LSTM处理序列依赖,注意力机制聚焦相关历史信息。GWO的灰狼角色划分和迭代策略助力寻找最佳解。
|
1月前
|
机器学习/深度学习 算法 数据挖掘
基于WOA优化的CNN-GRU-Attention的时间序列回归预测matlab仿真
使用MATLAB2022a,结合WOA优化算法调整了CNN-LSTM-Attention模型的超参数。WOA仿照鲸鱼捕食策略解决优化问题,提升时间序列预测准确性。模型先用CNN提取局部特征,接着LSTM处理长期依赖,最后注意力机制聚焦相关历史信息。优化前后效果对比图显示,预测性能显著改善。代码中展示了WOA优化的网络训练及预测过程,并绘制了预测值与真实值的比较图表。
|
1月前
|
机器学习/深度学习 算法 数据可视化
基于WOA优化的CNN-LSTM-Attention的时间序列回归预测matlab仿真
该文介绍了使用优化后的深度学习模型(基于CNN、LSTM和Attention机制)进行时间序列预测,对比了优化前后的效果,显示了性能提升。算法在MATLAB2022a中实现,利用WOA(鲸鱼优化算法)调整模型超参数。模型通过CNN提取局部特征,LSTM处理序列依赖,Attention机制关注相关历史信息。核心程序展示了WOA如何迭代优化及预测过程,包括数据归一化、网络结构分析和预测误差可视化。
|
28天前
|
机器学习/深度学习 算法 数据挖掘
基于GWO灰狼优化的CNN-GRU-Attention的时间序列回归预测matlab仿真
摘要: 该文介绍了使用 MATLAB 2022a 进行时间序列预测的算法优化。优化前后对比显示效果改善明显。算法基于CNN、GRU和注意力机制的深度学习模型,其中GWO(灰狼优化)用于优化超参数。CNN提取时间序列的局部特征,GRU处理序列数据的长期依赖,注意力机制聚焦关键信息。GWO算法模拟灰狼行为以实现全局优化。提供的代码片段展示了网络训练和预测过程,以及预测值与真实值的比较。

热门文章

最新文章