• 【图像识别-车牌识别】基于BP神经网络求解车牌识别问题含GUI界面和报告


    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

    🍎个人主页:Matlab科研工作室

    🍊个人信条:格物致知。

    更多Matlab仿真内容点击👇

    智能优化算法  神经网络预测 雷达通信  无线传感器

    信号处理 图像处理 路径规划 元胞自动机 无人机  电力系统

    ⛄ 内容介绍

    随着二十一世纪到来,经济快速发展和人们生活水平显著提高,汽车逐渐成为家庭的主要交通工具。汽车的产量快速增多,车辆流动也变得越来越频繁,因此给交通带来了严重问题,如交通堵塞、交通事故等,智能交通系统(Intelligent Transportation System)的产生就是为了从根本上解决交通问题。在智能交通系统中车牌识别技术占有重要位置,车牌识别技术的推广普及必将对加强道路管理、城市交通事故、违章停车、处理车辆被盗案件、保障社会稳定等方面产生重大而深远的影响。

    该设计主要研究基于MATLAB软件的汽车号牌设别系统设计,系统主要包括图像采集、图像预处理、车牌定位、字符分割、字符识别五大核心部分。系统的图像预处理模块是将图像经过图像灰度化、图像增强、边缘提取、二值化等操作,转换成便于车牌定位的二值化图像;利用车牌的边缘、形状等特征,再结合Roberts 算子边缘检测、数字图像、形态学等技术对车牌进行定位;字符的分割采用的方法是将二值化后的车牌部分进行寻找连续有文字的块,若长度大于设定的阈值则切割,从而完成字符的分割;字符识别运用模板匹配算法完成。以上每个功能模块用MATLAB软件实现,

    一、总体设计

    汽车号牌识别系统技术是从一幅车辆图像中准确定位出车牌区域,然后经过字符切割和字符识别来实现车辆牌照的自动识别。主要流程图如下:

    1.1

    二、总体功能模块

    基于MATLAB车牌识别系统主要包括图像采集、图像预处理、车牌定位、字符分割、字符识别五个关键环节[11],其基本工作如下:

    (1) 图像采集:使用摄像头、照相机拍摄采集图像。

    (2) 图像预处理:把图像转换成便于定位的二值化图像,需要经过图像灰度化、图像

    增强、边缘提取、二值化操作。

    (3)车牌定位:利用车牌的边缘、形状等特征,再结合Roberts 算子边缘检测、数字

    图像、形态学等技术对车牌进行定位。

    (4)字符分割:以二值化后的车牌部分进行寻找连续有文字的块,若长度大于设定的

    阈值则切割,从而完成字符的分割。

    (5)字符识别:运用模板匹配算法将分割后的字符二值化,并将其尺寸大小缩放为模

    板库中字符的大小,然后与所有的模板进行匹配,准确地识别车牌。输出识别

    结果,并进行数据存储。

    由于纹理特征车牌灰度图像的边缘、图像水平方向上的方差、水平方向上的梯度等比较稳定而且易于提取,所以本系统车牌定位算法采用纹理特征作为车牌的主要特征。在汽车号牌字符识别中,由于汉字的复杂性所以本设计的模板库字符包含5个汉字,26个大写英文字母及10个阿拉伯数字。首字符为汉字,第2-6个字符为英文字母或数字。本系统采用的是边缘检测的方法实现车牌定位的,寻找连续有文字的块的方法实现字符分割,模板匹配法来确定最终的识别结果。

    三、具体设计

    下图3.1流程图简要的概述了基本步骤:

    ⛄ 部分代码

     %bp神经网络训练

     M=2;

     P_0=zeros(800,M);

     P_1=zeros(800,M);

     P_2=zeros(800,M);

     P_3=zeros(800,M);

     P_4=zeros(800,M);

     P_5=zeros(800,M);

     P_6=zeros(800,M);

     P_7=zeros(800,M);

     P_8=zeros(800,M);

     P_9=zeros(800,M);

     P_10=zeros(800,M);

     P_11=zeros(800,M);

     P_12=zeros(800,M);

     P_13=zeros(800,M);

     P_14=zeros(800,M);

     P_15=zeros(800,M);

     P_16=zeros(800,M);

     P_17=zeros(800,M);

     P_18=zeros(800,M);

     P_19=zeros(800,M);

     P_20=zeros(800,M);

     P_21=zeros(800,M);

     for m=1:M

         filename_0=strcat('D:\毕业\bp神经网络车牌识别\字符样本\0\0-',int2str(m),'.jpg');

         filename_1=strcat('D:\毕业\bp神经网络车牌识别\字符样本\1\1-',int2str(m),'.jpg');

         filename_2=strcat('D:\毕业\bp神经网络车牌识别\字符样本\2\2-',int2str(m),'.jpg');

         filename_3=strcat('D:\毕业\bp神经网络车牌识别\字符样本\3\3-',int2str(m),'.jpg');

         filename_4=strcat('D:\毕业\bp神经网络车牌识别\字符样本\4\4-',int2str(m),'.jpg');

         filename_5=strcat('D:\毕业\bp神经网络车牌识别\字符样本\5\5-',int2str(m),'.jpg');

         filename_6=strcat('D:\毕业\bp神经网络车牌识别\字符样本\6\6-',int2str(m),'.jpg');

         filename_7=strcat('D:\毕业\bp神经网络车牌识别\字符样本\7\7-',int2str(m),'.jpg');

         filename_8=strcat('D:\毕业\bp神经网络车牌识别\字符样本\8\8-',int2str(m),'.jpg');

         filename_9=strcat('D:\毕业\bp神经网络车牌识别\字符样本\9\9-',int2str(m),'.jpg');

         filename_10=strcat('D:\毕业\bp神经网络车牌识别\字符样本\A\A-',int2str(m),'.jpg');

         filename_11=strcat('D:\毕业\bp神经网络车牌识别\字符样本\C\C-',int2str(m),'.jpg');

         filename_12=strcat('D:\毕业\bp神经网络车牌识别\字符样本\E\E-',int2str(m),'.jpg');

         filename_13=strcat('D:\毕业\bp神经网络车牌识别\字符样本\G\G-',int2str(m),'.jpg');

         filename_14=strcat('D:\毕业\bp神经网络车牌识别\字符样本\K\K-',int2str(m),'.jpg');

         filename_15=strcat('D:\毕业\bp神经网络车牌识别\字符样本\L\L-',int2str(m),'.jpg');

         filename_16=strcat('D:\毕业\bp神经网络车牌识别\字符样本\N\N-',int2str(m),'.jpg');

         filename_17=strcat('D:\毕业\bp神经网络车牌识别\字符样本\T\T-',int2str(m),'.jpg');

         filename_18=strcat('D:\毕业\bp神经网络车牌识别\字符样本\桂\桂-',int2str(m),'.jpg');

         filename_19=strcat('D:\毕业\bp神经网络车牌识别\字符样本\渝\渝-',int2str(m),'.jpg');

         filename_20=strcat('D:\毕业\bp神经网络车牌识别\字符样本\苏\苏-',int2str(m),'.jpg');

         filename_21=strcat('D:\毕业\bp神经网络车牌识别\字符样本\陕\陕-',int2str(m),'.jpg');

         P_0(:,m)=pretreatment(imread(filename_0));

         P_1(:,m)=pretreatment(imread(filename_1));

         P_2(:,m)=pretreatment(imread(filename_2));

         P_3(:,m)=pretreatment(imread(filename_3));

         P_4(:,m)=pretreatment(imread(filename_4));

         P_5(:,m)=pretreatment(imread(filename_5));

         P_6(:,m)=pretreatment(imread(filename_6));

         P_7(:,m)=pretreatment(imread(filename_7));

         P_8(:,m)=pretreatment(imread(filename_8));

         P_9(:,m)=pretreatment(imread(filename_9));

         P_10(:,m)=pretreatment(imread(filename_10));

         P_11(:,m)=pretreatment(imread(filename_11));

         P_12(:,m)=pretreatment(imread(filename_12));

         P_13(:,m)=pretreatment(imread(filename_13));

         P_14(:,m)=pretreatment(imread(filename_14));

         P_15(:,m)=pretreatment(imread(filename_15));

         P_16(:,m)=pretreatment(imread(filename_16));

         P_17(:,m)=pretreatment(imread(filename_17));

         P_18(:,m)=pretreatment(imread(filename_18));

         P_19(:,m)=pretreatment(imread(filename_19));

         P_20(:,m)=pretreatment(imread(filename_20));

         P_21(:,m)=pretreatment(imread(filename_21));

     end

    ⛄ 运行结果

    ⛄ 参考文献

    [1]闫有成, 陈明先, 周子天,等. 基于GUI的BP神经网络车牌识别系统[J]. 信息通信, 2018(5):2.

    ⛄ Matlab代码关注

    ❤️部分理论引用网络文献,若有侵权联系博主删除

    ❤️ 关注我领取海量matlab电子书和数学建模资料

  • 相关阅读:
    java118-vector类
    设计模式-12外观模式(外观设计模式)详解
    Python实现自动化网页操作
    2023年IB四大科目将改革
    Code Review:提升代码质量与团队能力的利器
    Split Into Two Sets Codeforces 1702E
    ESP32网络开发实例-WebSocket服务器
    关于#c++#的问题:在while(true)添加cout<<"按学号删除学生记录"<<endl
    深入Linux下的GCC编译器:从入门到精通
    6、ByteBuffer内部结构
  • 原文地址:https://blog.csdn.net/matlab_dingdang/article/details/127972215