基于MATLAB的卷积神经网络车牌识别系统

基于MATLAB的卷积神经网络车牌识别系统车牌识别是基于车牌照片的车牌信息的识别工作,车牌识别技术对我们的实际生活至关重要,例如交通违规行为的增加,拦截非法车辆,在速度上能够进行快速识别能够很好地解决这些问题。获得的照片的质量是影响车牌识别准确性的最重要因素之一。卷积神经网络在图像识别领域具有良好的适应性,目前在计算机视觉任务中应用广泛,并在手写数字识别、人脸识别、车牌识别等图像领域的应用中取得了很好的效果。本文基于MATLAB卷积神…

大家好,又见面了,我是你们的朋友全栈君。

车牌识别是基于车牌照片的车牌信息的识别工作,车牌识别技术对我们的实际生活至关重要,例如交通违规行为的增加,拦截非法车辆,在速度上能够进行快速识别能够很好地解决这些问题。获得的照片的质量是影响车牌识别准确性的最重要因素之一。卷积神经网络在图像识别领域具有良好的适应性,目前在计算机视觉任务中应用广泛,并在手写数字识别、人脸识别、车牌识别等图像领域的应用中取得了很好的效果。
在这里插入图片描述
本文基于MATLAB卷积神经网络车牌识别主要包括卷积神经网络的模型的建立、数据预处理、模型训练、加载模型、车牌图片预处理、车牌定位、车牌裁剪、字符识别等操作。
卷积神经网络的结构设置如下,其输入层是车牌图像,其大小为3232;C1卷积层,该层采用 6个 55的卷积核对图像进行卷积;C2层为卷积层,该层采用12个5*25特征图进行卷积并累加;全连接层,本文采用120个过滤器。

net.layers = { 
   
    struct('type','i','iChannel',1,'iSizePic',[32 32])          
    struct('type','c','iChannel',6,'iSizeKer',5)                
    struct('type','s','iSample',2)                              
    struct('type','c','iChannel',12,'iSizeKer',5)               
    struct('type','s','iSample',2)                              
    struct('type','f','iChannel',120)                                                
    struct('type','f','iChannel',40)                               
              };
net.alpha = 4;                                                  
net.eta = 0.5;                                                  
net.batchsize = 12;                                             
net.epochs = 75;    

车牌预处理,部分代码如下,

img_gray = rgb2gray(img_rgb);    % RGB图像转灰度图像
% 均值滤波
A=fspecial('average',3);      
img_filt=filter2(A,img_gray)/255;      %用生成的高斯序列进行滤波
% 边缘提取
img_edge = edge(img_filt, 'sobel', 0.1, 'vertical');
% 检测背景蓝色区域
img_r=img_rgb(:,:,1);
img_g=img_rgb(:,:,2);
img_b=img_rgb(:,:,3);

index= img_r>200&img_g>200;
img_b(index)=0;
index2=img_r<20&img_g<20;
img_b(index2)=0;
[m,n]=size(img_b);
img_bw = im2bw(img_b,0.4);
[L,m] = bwlabel(img_bw,8);
status = regionprops(L,'BoundingBox');
for i=1:m
    rect(i,:)=getfield(status(i),'BoundingBox');
end
ratio=rect(:,3)./rect(:,4);
for i=1:m
    if(ratio(i)<=2.5)
        img_bw(find(L==i))=0;
    end
end

得到的结果如图,
在这里插入图片描述
字符分割与识别,将候选的车牌经过CNN过滤,我们可以筛选出对我们有重要意义的车牌照片。由于边缘检查是白色边缘检查,通过过滤器,我们将图像一数值的方式体现出来,去除车牌边缘无用图像,得到的图像进行矩形分割,统一修改为32×32的大小。首先,关于所取得的牌照照片,我们使用过滤器的平衡度来增强图像的可读性。由于检查边缘是在白色边缘进行的,通过过滤设备对图像进行多次调整,寻找白色字体并获得最小的外部矩形。最后,在根据宽度、高度和像素比率进行分类后,将这个数字调整为32×32。识别结果如下,
在这里插入图片描述
部分代码,

%分割字符
for i=1:7
    while((Px0<n)&&(count_y(1,Px0)<2))%求字符的左边界
    Px0=Px0+1;
    end
    Px1=Px0;
    while((Px1<n)&&(count_y(1,Px1)>=2||(Px1-Px0)<7))%求字符右边界
    Px1=Px1+1;
    end
    Z=bw_word(:,Px0:Px1);
    switch i
    case 1
    PIN0=Z;
    case 2
    PIN1=Z;
    case 3
    PIN2=Z;
    case 4
    PIN3=Z;
    case 5
    PIN4=Z;
    case 6
    PIN5=Z;
    otherwise
    PIN6=Z;
    end
    Px0=Px1;
end

通过卷积神经网络进行车牌数据集的预处理,得到训练的模型的准确率可以达到90%,由于本人能力有限,网络结构参数还存在改进的地方。整个系统界面如下所示,
在这里插入图片描述
转载请备注原作者,谢谢!qq-134-170-3358

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139861.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • day04 JavaScript高级程序设计 阅读总结

    day04 JavaScript高级程序设计 阅读总结《JavaScript高级程序设计》(第四版)阅读总结额,据说这本是前端er必看书籍,花了20个小时简单把这本书过了一下,目前暂时很少用到的东西我这一遍就没有过了,等以后要用的时候再回来继续学了。先来谈谈这本书的缺点,书籍前面章节用到了一些后面才讲到的东西,比如第三章讲symbol对象时,就用到了后面才讲的iterator和generator。然后就是感觉讲的有点太广了,而且基本没有课后习题,看过就是看过了,顶多自己花时间把书里面的例子都敲一遍。所以我建议应该和现代JavaScript教程一起食用。反

    2022年8月20日
    4
  • 简单实现vue数据双向绑定_vue checkbox

    简单实现vue数据双向绑定_vue checkboxvue实现的双向数据绑定操作示例

    2022年4月21日
    303
  • Dlsym_c=α+βy

    Dlsym_c=α+βy为什么80%的码农都做不了架构师?>>>…

    2025年7月12日
    0
  • 电压电流转换电路[通俗易懂]

    电压电流转换电路[通俗易懂]前言:昨天看到一篇介绍输出4~20mA电流电路的文章。作者首先介绍了两个直接用运放和三极管搭起来的电路,但并没有给出原理介绍,然后给出了第三种使用集成芯片的电路,并推荐大家使用。不可否认,作为商业产品,集成电路性能优异且更加稳定,方便工程师使用。但是笔者却突然想到了前几天某公司被美国商务部制裁的事件,如果中国的工程师都是“拿来主义”,只会照着参考电路做设计,我们就会永远受制于人,而且对工程师的成长

    2022年6月2日
    36
  • Java和C语言有什么区别?[通俗易懂]

    Java和C语言有什么区别?[通俗易懂]Java和C语言作为现在行业中经常被人提起的两种语言,有很大的区别。选择不同的语言学习以后的发展也会大不相同,那么Java和C语言有什么区别呢?现在学哪种语言更合适呢?从概念上看,C语言是一门面向过程、抽象化的通用程序设计语言;Java是一门面向对象编程语言,而Java语言是从C语言衍生而来,它吸收了C++语言的各种优点,并且摒弃了C++里难以理解的多继承、指针等概念。从概念可以看出C语言相当…

    2022年7月7日
    16
  • 下列选项中不符合python语言变量命名_以下变量名中,不符合Python语言变量命名规则的是…[通俗易懂]

    下列选项中不符合python语言变量命名_以下变量名中,不符合Python语言变量命名规则的是…[通俗易懂]摘要:备结械设在机中构可要点设计靠性,下语本出品可高产的根全型路和安是提靠性。名中命名不属标志别划目的品分的类常用于《危险类及化学分项是(。包括品中中不毒、符合措施预防危险污染化学事故控制。…备结械设在机中构可要点设计靠性,下语本出品可高产的根全型路和安是提靠性。》颁布了条例险化学品险化学品许可证管管理经营(第安全依据《危《危理办号令法》,变量不变量品经加强的管营许为了危险理化学可证。名中命名…

    2022年6月11日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号