【S1IG729】基于MATLAB的卷积神经网络(CNN)车牌识别系统

2021-04-22 18:34:14      索炜达.猿创      546     

【项目编号】S1IG729

【文件大小】44.9M

【文件格式】源码(带中文注释)+文档(WORD格式)

【开发环境】Matlab2016b、2018a

【在线客服】QQ6928827(文件失效可以联系客服)

【测试验证】该源码已经通过索炜达官方运行测试无错。


【简要概述】

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

【S1IG729】基于MATLAB的卷积神经网络(CNN)车牌识别系统

本文基于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

得到的结果如图,

【S1IG729】基于MATLAB的卷积神经网络(CNN)车牌识别系统


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

【S1IG729】基于MATLAB的卷积神经网络(CNN)车牌识别系统

部分代码,

 

%分割字符

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%,由于本人能力有限,网络结构参数还存在改进的地方。整个系统界面如下所示,

【运行效果】

【S1IG729】基于MATLAB的卷积神经网络(CNN)车牌识别系统


【文件列表】

卷积神经网络车牌识别系统目录│文件列表:

 └ 卷积神经网络车牌识别系统

    │ CNN_Train.m

    │ dataSet.m

    │ data_set.m

    │ img_lp.mat

    │ label2word.m

    │ LPLocation.m

    │ LPNetTrain.m

    │ LPWordDivide.m

    │ LP_word.mat

    │ main.fig

    │ main.m

    │ main_cnn.m

    │ shipinyanshi.mp4

    ├ CarLicense_Dataset

    │  └ test_images

    ├ data

    │  │ img_lp.mat

    │  │ Net.mat

    │  │ Net0_24.mat

    │  │ Net5_2.mat

    │  │ Net5_3.mat

    │  │ Net5_3_1.mat

    │  │ Net5_6_1.mat

    │  │ Net_0.mat

    │  │ Net_bw.mat

    │  │ testData.mat

    │  │ testData5_2.mat

    │  │ testData_bw.mat

    │  │ trainData.mat

    │  │ trainData5_2.mat

    │  └ trainData_bw.mat

    ├ DeepLearn_CNN

    │  │ cnnbp.m

    │  │ cnnbp2.m

    │  │ cnnff.m

    │  │ cnnff2.m

    │  │ cnngradmean.m

    │  │ cnngradzero.m

    │  │ cnninit.m

    │  │ cnntest.m

    │  │ cnntest2.m

    │  │ cnntrain.m

    │  │ cnntrain2.m

    │  │ cnnupdate.m

    │  │ contents.m

    │  │ down.m

    │  │ dy.m

    │  │ fx.m

    │  │ Main_CnnExample.m

    │  │ Main_CnnExample2.m

    │  │ normalize_lzb.m

    │  │ rot180.m

    │  │ TrainTestSample.mat

    │  └ up.m

    └ 车牌原图

       └ car1.jpg


TAG卷积神经网络CNN车牌识别
  • 3 次
  • 85 分