您现在的位置:首页 >> 图像处理 >> 内容

基于形态学处理的车牌提取,字符分割和车牌识别算法matlab仿真

时间:2023/2/20 17:23:07 点击:

  核心提示:A389,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZJWXlp5r

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览





3.算法概述

        车牌识别技术要求能够将运动中的汽车牌照从复杂背景中提取并识别出来,通过车牌提取、图像预处理、特征提取、车牌字符识别等技术,识别车辆牌号、颜色等信息,最新的技术水平为字母和数字的识别率可达到99.7%,汉字的识别率可达到99%。在停车场管理中,车牌识别技术也是识别车辆身份的主要手段。在深圳市公安局建设的《停车库(场)车辆图像和号牌信息采集与传输系统技术要求》中,车牌识别技术成为车辆身份识别的主要手段。

4.部分源码

...........................................................................

figure(8);subplot(3,2,2),imshow(d),title('2.车牌二值图像')

figure(8),subplot(3,2,3),imshow(d),title('3.均值滤波前')

% 均值滤波处理

h=fspecial('average',3);

d=im2bw(round(filter2(h,d)));%filter2(B,X),B为滤波器.X为要滤波的数据,这里将B放在X上,一个一个移动进行模板滤波. 

 

figure(8),subplot(3,2,4),imshow(d),title('4.均值滤波后')

se=eye(2);%产生m×n的单位矩阵

[m,n]=size(d);

if bwarea(d)/m/n>=0.365 %bwarea是计算二值图像中对象的总面积的函数

    d=imerode(d,se);%腐蚀

elseif bwarea(d)/m/n<=0.235

    d=imdilate(d,se);%膨胀

end

.........................................................

% 再切割

d=qiege(d);

% 切割出 7 个字符

y1=10;y2=0.25;flag=0;word1=[];

while flag==0

    [m,~]=size(d);

    left=1;wide=0;

    while sum(d(:,wide+1))~=0

        wide=wide+1;

    end

    if wide<y1   % 认为是左侧干扰

        d(:,1:wide)=0;

        d=qiege(d);

    else

        temp=qiege(imcrop(d,[1 1 wide m]));

        [m,~]=size(temp);

        all=sum(sum(temp));

        two_thirds=sum(sum(temp(round(m/3):2*round(m/3),:)));

        if two_thirds/all>y2

            flag=1;word1=temp;   % 此处为切割出来的WORD 1

        end

        d(:,1:wide)=0;d=qiege(d);

    end

end

.....................................................................

JG=zeros(40,20);%产生一个40*20大小的零矩阵

l=1;

L=toc;

for I=1:7 %I为待识别的字符位

       ii=int2str(I);%整形数据转化为字符串类型

      t=imread([ii,'.jpg']);

       MB=imresize(t,[40 20],'nearest');%缩放处理

         if l==1         %车牌号第一位为汉字识别,使用37-53号样本库

             kmin=37;

             kmax=53;

         elseif l==2        %车票号第二位为 A~Z 大写字母识别,使用11-36号样本库

             kmin=11;

             kmax=36;

         else l>=3;              %第三位以后是字母或数字识别,使用1-36号样本库

             kmin=1; 

            kmax=36;        

         end 

        for k2=kmin:kmax      

            fname=strcat('样本库\',liccode(k2),'.bmp');

             YB = imread(fname); %调用样本库图像文件 

             for  i=1:40

                 for j=1:20

  JG(i,j)=MB(i,j)-YB(i,j); % 这里是将待识别图像与模板图像两幅图相减得到第三幅图

                 end

             end

            Dmax=0;

            for k1=1:40

                for l1=1:20

                    if  ( JG(k1,l1) > 0 || JG(k1,l1) <0 )

                        Dmax=Dmax+1;

                    end

                end

            end

            Error(k2)=Dmax;

        end

        Error1=Error(kmin:kmax);

        MinError=min(Error1);

        findc=find(Error1==MinError);

        Code(l*2-1)=liccode(findc(1)+kmin-1);

        Code(l*2)=' ';

        l=l+1;

end

t=toc;

figure(10),imshow(dw),title (['车牌号:', Code]);

A389

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168