字符识别方法目前主要有基于模板匹配算法和基于人工神经网络算法。

基于模板匹配算法:首先将分割后的字符二值化,并将其尺寸大小缩放为字符数据库中模板的大小,然后与所有的模板进行匹配,最后选最佳匹配作为结果。
基于人工神经元网络的算法有两种:
一种是先对待识别字符进行特征提取,再用所获得特征来训练神经网络分配器;
另一种是直接把待处理图像输入网络,由网络自动实现特征提取直至识别出结果。

本节所介绍的字符识别是基于模板匹配的算法,简单讲,兵分两路走:
1.一路是对分割出来的车牌字符进行二值化(在上一讲字符分割中已经完成),尺寸规范化(参考尺寸:[110 55])。
实现代码

%------定位                 1. 将读取的字符信息分别赋值给7个数组
han_zi  = bw( 1:y,fenge(1):fenge(2));
zi_mu   = bw( 1:y,fenge(3):fenge(4));
zm_sz_1 = bw( 1:y,fenge(5):fenge(6));
zm_sz_2 = bw( 1:y,fenge(7):fenge(8));
shuzi_1 = bw( 1:y,fenge(9):fenge(10));
shuzi_2 = bw( 1:y,fenge(11):fenge(12));
shuzi_3 = bw( 1:y,fenge(13):fenge(14));%------修正各个字符的尺寸大小         2. 规范七个字符的尺寸
%[110 55]指定目标图像的高度与宽度,bilinear采用双线性插值算法
xiuzhenghanzi =   imresize(han_zi, [110 55],'bilinear');
xiuzhengzimu  =   imresize(zi_mu,  [110 55],'bilinear');
xiuzhengzm_sz_1 =  imresize(zm_sz_1,[110 55],'bilinear');
xiuzhengzm_sz_2 = imresize(zm_sz_2,[110 55],'bilinear');
xiuzhengshuzi_1 = imresize(shuzi_1,[110 55],'bilinear');
xiuzhengshuzi_2 = imresize(shuzi_2,[110 55],'bilinear');
xiuzhengshuzi_3 = imresize(shuzi_3,[110 55],'bilinear');

2.另一路就是将模板读入、灰度化、二值化和尺寸规范化(要与上一步操作的参数一致)。
实现代码:

%-------导入汉字模板:桂、贵、京、苏、粤
Gui_lin = imread('汉字模板库\Gui_lin.bmp');           % 1. 读取汉字模板
Gui_zhou = imread('汉字模板库\Gui_zhou.bmp');
Jing = imread('汉字模板库\Jing.bmp');
Su = imread('汉字模板库\Su.bmp');
Yue = imread('汉字模板库\Yue.bmp');
%-----------------------------
s0 = imread('数字模板库\0.bmp');                % 2. 读取字母和数字模板
s1 = imread('数字模板库\1.bmp');
s2 = imread('数字模板库\2.bmp');
s3 = imread('数字模板库\3.bmp');
s4 = imread('数字模板库\4.bmp');
s5 = imread('数字模板库\5.bmp');
s6 = imread('数字模板库\6.bmp');
s7 = imread('数字模板库\7.bmp');
s8 = imread('数字模板库\8.bmp');
s9 = imread('数字模板库\9.bmp');
zA = imread('字母模板库\A.bmp');
zB = imread('字母模板库\B.bmp');
zC = imread('字母模板库\C.bmp');
zD = imread('字母模板库\D.bmp');
zE = imread('字母模板库\E.bmp');
zF = imread('字母模板库\F.bmp');
zG = imread('字母模板库\G.bmp');
zH = imread('字母模板库\H.bmp');
zJ = imread('字母模板库\J.bmp');
zK = imread('字母模板库\K.bmp');
zL = imread('字母模板库\L.bmp');
zM = imread('字母模板库\M.bmp');
zN = imread('字母模板库\N.bmp');
zP = imread('字母模板库\P.bmp');
zQ = imread('字母模板库\Q.bmp');
zR = imread('字母模板库\R.bmp');
zS = imread('字母模板库\S.bmp');
zT = imread('字母模板库\T.bmp');
zU = imread('字母模板库\U.bmp');
zV = imread('字母模板库\V.bmp');
zW = imread('字母模板库\W.bmp');
zX = imread('字母模板库\X.bmp');
zY = imread('字母模板库\Y.bmp');
zZ = imread('字母模板库\Z.bmp');
%-----------------------------%------录入                        % 2. 录入操作Hanzi = Luru_hanzi (Gui_lin,Gui_zhou,Jing,Su,Yue);  % 汉字Shuzi_Zimu = Luru_ShuziZimu (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,zA,zB...
,zC,zD,zE,zF,zG,zH,zJ,zK,zL,zM,zN,zP,zQ,zR,zS,zT,zU,zV,zW,zX,zY,zZ);
%数字、字母

其中,录入操作实现函数主要包含:灰度处理,尺寸规范和二值化。字母数字与汉字的录入方法一样。里面用到的graythresh函数,它的相关介绍及用法,也有作过详解:
https://blog.csdn.net/weixin_43958974/article/details/84898270

function Hanzi = Luru_hanzi (Gui_lin,Gui_zhou,Jing,Su,Yue)
Hanzi(:,:,1)  =imresize(im2bw(Gui_lin,graythresh(rgb2gray(Gui_lin))),[110 55],'bilinear');
Hanzi(:,:,2)  =imresize(im2bw(Gui_zhou,graythresh(rgb2gray(Gui_zhou))),[110 55],'bilinear');
Hanzi(:,:,3)  =imresize(im2bw(Jing,graythresh(rgb2gray(Jing))),[110 55],'bilinear');
Hanzi(:,:,4)  =imresize(im2bw(Su,graythresh(rgb2gray(Su))),[110 55],'bilinear');
Hanzi(:,:,5)  =imresize(im2bw(Yue,graythresh(rgb2gray(Yue))),[110 55],'bilinear');
end

3.识别
接下来就是两路相逢了,将读取的字符与模板库的字符逐个进行对比,找出相似度最高的那个就可以了。对比方式就按照两个二值图像的相应位置黑白点的重合率。
识别函数代码实现:

function Shibie_hanzi=shibiehanzi(hanzi,xiuzhenghanzi)
[y,x,z]=size(xiuzhenghanzi);
for k=1:5sum=0;for i=1:yfor j=1:xif  hanzi(...)%统计黑白sum=sum+1;elseendendendbaifenbi(1,k)=sum/(x*y);
endShibie_Xuhao = find(...);   % 寻找最大值max(即最相似的)所在的序号位置Shibie_hanzi = Shibie_Xuhao;
if       Shibie_hanzi==1Shibie_hanzi='桂';elseif Shibie_hanzi==2Shibie_hanzi='贵';elseif Shibie_hanzi==3Shibie_hanzi='京';elseif Shibie_hanzi==4Shibie_hanzi='苏';elseif Shibie_hanzi==5Shibie_hanzi='粤';
else
end
end

4.最后将识别的结果显示出来:

%-------识别
i=1;
jieguohanzi  = shibiehanzi(Hanzi,xiuzhenghanzi);
shibiejieguo(1,i) =jieguohanzi;
i=i+1;
jieguozimu   = shibiezm_sz(Shuzi_Zimu,xiuzhengzimu);
shibiejieguo(1,i) =jieguozimu;
i=i+1;
jieguozm_sz_1= shibiezm_sz(Shuzi_Zimu,xiuzhengzm_sz_1);
shibiejieguo(1,i) =jieguozm_sz_1;
i=i+1;
jieguozm_sz_2= shibiezm_sz(Shuzi_Zimu,xiuzhengzm_sz_2);
shibiejieguo(1,i) =jieguozm_sz_2;
i=i+1;
jieguoshuzi_1= shibiezm_sz(Shuzi_Zimu,xiuzhengshuzi_1);
shibiejieguo(1,i) =jieguoshuzi_1;
i=i+1;
jieguoshuzi_2 = shibiezm_sz(Shuzi_Zimu,xiuzhengshuzi_2);
shibiejieguo(1,i) =jieguoshuzi_2;
i=i+1;
jieguoshuzi_3= shibiezm_sz(Shuzi_Zimu,xiuzhengshuzi_3);
shibiejieguo(1,i) =jieguoshuzi_3;
i=i+1;
shibiejieguo;
msgbox(shibiejieguo,'识别结果');

5.实现效果如下图,至此有关车牌照的识别分了三大模块介绍完了。


留言就不一一回复了

有问题和需要源码的小伙伴们可以直接扫码,点击下方文章链接
车牌识别系统中MATLAB主函数的运行

后台回复:CP演示,获取不同系统的演示效果;
后台回复:CP运行,获得MATLAB操作教程;
后台回复:MATLAB,获得更多MATLAB的学习资料。

详解基于MATLAB的车牌识别系统设计与实现(3):字符识别相关推荐

  1. 基于matlab的车牌识别系统设计错误,基于MATLAB的车牌识别系统设计

    在图像处理领域,数字图像处理技术取得了飞速发展,并在国民经济的各个领域得到广泛应用.尤其在智能交通管理中汽车牌照识别技术方面具有重要的理论意义和实用价值.汽车牌照识别技术主要任务是实现对汽车监控视频所 ...

  2. 基于matlab的车牌识别系统设计,基于MATLAB的车牌识别系统设计

    在图像处理领域,数字图像处理技术取得了飞速发展,并在国民经济的各个领域得到广泛应用.尤其在智能交通管理中汽车牌照识别技术方面具有重要的理论意义和实用价值.汽车牌照识别技术主要任务是实现对汽车监控视频所 ...

  3. 基于MATLAB的车牌识别系统设计与实现

    目 录 一. 课程设计任务 1 二. 课程设计原理及设计方案 2 1.系统简述 2 2.图像预处理 3 2.1灰度变换 3 2.2边缘提取 4 3.车牌定位 5 4.字符分割 5 5.字符识别 6 三 ...

  4. 毕业设计-基于 MATLAB 的车牌识别系统设计

    目录 前言 课题背景和意义 实现技术思路 一.车牌识别系统总体方案设计 二.车牌识别系统硬件设计 三.车牌识别系统软件设计 四. 实验结果与分析 部分源代码 实现效果图样例 最后 前言

  5. 基于MATLAB的车牌识别系统设计(Matlab代码实现)

  6. 车牌识别与计算机编程,基于MATLAB的车牌识别程序详解.ppt

    基于MATLAB的车牌识别程序详解 自定义一个字符函数,用来从车牌区域中提取出7个字符,其中利用切割函数来进行切割. 程序:function [word,result]=getword(d) word ...

  7. matlab车牌匹配时读取,基于Matlab的车牌识别(完整版)详解.doc

    基于Matlab的车牌识别(完整版)详解.doc 基于Matlab的车牌识别 摘要:车牌识别技术是智能交通系统的重要组成部分,在近年来得到了很大的发展.本文从预处理.边缘检测.车牌定位.字符分割.字符 ...

  8. 数字图像处理:基于MATLAB的车牌识别项目

    学过了数字图像处理,就进行一个综合性强的小项目来巩固一下知识吧.前阵子编写调试了一套基于MATLAB的车牌识别的项目的代码.今天又重新改进了一下代码,识别的效果好一点了,也精简了一些代码.这里没有使用 ...

  9. 基于matlab的车牌识别系统程序,基于matlab的车牌识别系统的设计(附程序).doc

    基于matlab的车牌识别系统的设计(附程序).doc 1车牌识别系统的设计1.摘要:汽车牌照自动识别系统是制约道路交通智能化的重要因素,包括车牌定位.字符分割和字符识别三个主要部分.本文首先确定车辆 ...

最新文章

  1. JetBrains放出Java代码质量检查工具Qodana,不了解一下?
  2. OutOfMemoryError与StackOverFlowError
  3. python 3d大数据可视化软件_十大顶级大数据可视化工具推荐
  4. centos中安装mysql5.6_CentOS中安装MySQL5.6报错的解决方法
  5. 用tensorflow搭建RNN(LSTM)进行MNIST 手写数字辨识
  6. 王思聪名下企业被拍卖1100万债权,此前还债20亿 网友:拍下等于“接盘侠”?...
  7. java多线程生产者与消费者案例_多线程操作实例——生产者与消费者
  8. PAT 乙级 1041. 考试座位号(15) Java版
  9. amd linux显卡驱动,AMDAMD ATI Radeon Mobility FireGL 9.10显卡驱动官方正式版下载,适用于linux-驱动精灵...
  10. 经典坦克大战——C++实现(附源码)
  11. 直播组装服务器,快速搭建直播服务器
  12. word pdf 互转
  13. 快速下载 Android framework 源码
  14. 传说中的800句记7000词
  15. python测验6_测验6: 组合数据类型 (第6周)
  16. FPGA中en-rdy机制和req-ack机制的区别
  17. 理论小知识:集合之srem
  18. 《Introducing the Child Process Debugging Power Tool》学习
  19. 自适应复化辛普森公式求积算法(C语言实现)
  20. 微信小程序配置每个页面的标题名称

热门文章

  1. ubuntu18.04突然没有声音—伪输出/找不到音效卡
  2. [导入]ASP.NET 2.0 中实现跨页提交 (碧血黄沙)
  3. 用EXCEL记笔记/默写/写日程表等_先利其器
  4. AI时代,三步走成为超级个体!
  5. N沟道和P沟道开漏输出
  6. Javaweb大作业网页制作开发过程,首页部分网页设计结果
  7. 知知者知知,不知者不知,无知者不要知
  8. 生产环境部署与协同开发 Linux
  9. CXA测试软件怎么显示拉线图,拉线眉笔怎么拉线图解 拉线眉笔怎么用
  10. 【软件测试】老板:你测试,我放心。测试人的成功就是不做测试?