基于Matlab的复杂恶劣环境车牌A识别检测研究

         科技的快速发展使汽车成为现代社会的重要代步工具,促生了新一代的智能交通系统,车牌识别技术作为智能交通的基石,为交通管理提供了技术支撑,使人们的驾车出行更为方便快捷。将车牌识别与计算机软件相结合,在 MATLAB 平台下,运用数字图像处理技术,对采集到的车辆图像进行相关操作,完成了对汽车牌照的定位和字符的分割。同时,将改进后的模板匹配识别方法运用到字符识别中,使系统正确识别出车牌字符,实现了自动识别汽车牌照的目的。针对车牌倾斜给字符分割与识别带来的不便,提出了基于Sobel算子和Radon变换的车牌倾斜 校正算法。先对车牌图形进行边缘检测,接着对其进行Radon变换,确定出车牌在水平和垂直 方向上的倾斜角度,结合不同方向上倾斜角度分别对水平倾斜、垂直倾斜的车牌进行双线性 插值旋转校正和错位偏移校正。最后,将本算法与文献提出的车牌倾斜校正算法进行比较, 结果表明采用本算法进行车牌倾斜校正效果较好,运算效率高并对污迹、光照等不敏感,应 用前景广泛。

一、算法分析

系统总体设计 本文设计的车牌识别系统利用 MATLAB 软件进行编程 设计和仿真实验。MATLAB 软件具有数值分析、计算、设 计控制系统等功能,并且在数字图像处理方面有强大的库函 数,可以出色地完成图像处理,实现处理图像的可视化操作。 对汽车牌照进行识别的具体步骤主要有图像读取、预处理、 车牌图像定位、倾斜纠正、字符分割、字符识别。

1.1 图像读取与预处理

        首先,应用 imread 函数读取已被采集到的带有车牌的车辆图像,其次对该图像进行预处理操作。预处理操作包括对图像像素的重新设置和图像增强。在实际应用中,为保证图像的清晰度,常使用分辨率较高的摄像机、手机等采集设备,而采集到的图像像素过大,会使识别系统的速度降低,甚至会出现卡顿的情况。所以,为了能够让系统的运行顺畅,提高处理速度,对读取的图像像素进行重置,应用 imresize 函数将图像大小统一为520×390。同时,由于外界环境的影响,采集到的车辆图像可能存在光线过暗的情况。所以需要对其进行图像增强处理,确保车牌明亮清晰,为后续工作做好准备。

1.2 车牌图像定位

        采集到的车辆图像经常有着复杂的背景,所以需要对车牌进行准确的定位,这对后面的操作至关重要。若定位错误或不够准确,就会直接导致车牌识别错误。在中国,车牌底色有多种,包括黄色、蓝色、白色、黑色和绿色。同时,车牌有着固定的外廓尺寸,不同型号的汽车牌照的颜色和尺寸均不相同。国家规定,小型汽车牌照的尺寸为440mm×140 mm,颜色为蓝底白字。对颜色筛选后的图像进行形态学处理。二值图 像的形态学运算主要包括腐蚀、膨胀、开操作、闭操作,用 来提取图像目标分量。在此运用它来简化车牌图像的数据信 息。首先,在 MATLAB 中调用 sterl 函数来构建腐蚀算子, 利用 imerode 函数将非车牌区域的信息腐蚀尽。再对噪声区 域使用闭运算函数 imclose 进行去除,弥合狭窄的间隙,填 充空洞,使目标融为一体,变得光滑。 通过 Canny 算子对图像进行边缘检测,并计算 连通域的长宽比,按照预先设定的阈值截取出目标。在实际 操作过程中,截取到的目标车牌有倾斜的情况,为了便于后 续工作,需要在此利用投影法对其校正。再对目标进行行、 列方向上的扫描,使用投影法划分出车牌的具体位置,完成 精确定位,避免多余背景的干扰。

 1.3 车牌纠正

        车牌倾斜校正算法如下:首先对车牌图像转 化为灰度图像,接着进行水平和垂直方向上边缘 检测,然后利用Radon变换计算出车牌在水平和垂 直方向上的倾斜角度,根据倾斜角度进行双线性插 值旋转校正和错位偏移校正。牌倾斜角求取分为水平倾斜角和垂直倾斜 角,原始车牌图像进行转换后,对其进行Radon变 换分别获取车辆倾斜角。

二、代码实现

%=====================读入图片================================
[fn,pn,fi]=uigetfile('*.jpg','选择图片');
if isequal(fn,0)||isequal(pn,0)||isequal(fi,0)
    errordlg('您还没有选取图片!!','温馨提示');%如果没有输入,则创建错误对话框
    return;
end
I=imread([pn fn]);figure,imshow(I);title('原始图像');%显示原始图像
chepailujing=[pn fn];
I_bai=I;
[PY2,PY1,PX2,PX1]=caitu_fenge(I);

% I=rgb2hsv(I);
% [PY2,PY1,PX2,PX1]=caitu_tiqu(I,I_bai);%用HSI模型识别蓝色,用rgb模型识别白色
%================分割车牌区域=================================

%===============车牌区域根据面积二次修正======================
[PY2,PY1,PX2,PX1,threshold]=SEC_xiuzheng(PY2,PY1,PX2,PX1);
%==============更新图片=============================
Plate=I_bai(PY1:PY2,PX1:PX2,:);%使用caitu_tiqu
%==============考虑用腐蚀解决蓝色车问题=============
bw=Plate;figure,imshow(bw);title('车牌图像');%hsv彩图提取图像
%==============这里要根据图像的倾斜度进行选择这里选择的图片20090425686.jpg
bw=rgb2gray(bw);figure,imshow(bw);title('灰度图像');
%================倾斜校正======================
qingxiejiao=rando_bianhuan(bw);
bw=imrotate(bw,qingxiejiao,'bilinear','crop');figure,imshow(bw);
title('倾斜校正');%取值为负值向右旋转
%==============================================
bw=im2bw(bw,graythresh(bw));%figure,imshow(bw);
bw=bwmorph(bw,'hbreak',inf);%figure,imshow(bw);
bw=bwmorph(bw,'spur',inf);%figure,imshow(bw);title('擦除之前');
bw=bwmorph(bw,'open',5);%figure,imshow(bw);title('闭合运算');
bw = bwareaopen(bw, threshold);figure,imshow(bw);title('擦除');
%==========================================================
bw=~bw;figure,imshow(bw);title('擦除反色'); 
%=============对图像进一步裁剪,保证边框贴近字体===========
bw=touying(bw);figure;imshow(bw);title('Y方向处理');
bw=~bw;
bw = bwareaopen(bw, threshold);
bw=~bw;%figure,imshow(bw);title('二次擦除');
[y,x]=size(bw);%对长宽重新赋值
%=================文字分割=================================
fenge=shuzifenge(bw,qingxiejiao);
[m,k]=size(fenge);
%=================显示分割图像结果========================= 
figure;
for s=1:2:k-1
    subplot(1,k/2,(s+1)/2);imshow(bw( 1:y,fenge(s):fenge(s+1)));
end
%================ 给七张图片定位===============桂AV6388
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)); 
%==========================识别====================================
%======================把修正数据读入==============================
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');

参考文献

【1】关亮亮,范旭.叉车转向机构建模及运动 仿真[J].汽车实用技术,2019.

【2】李恒,郑勐.躲闪机器人同步移动转向机 构运动学分析[J].机械传动,2020.


本文倾斜角度分别对水平倾斜、垂直倾斜的车牌进行双线性 插值旋转校正和错位偏移校正。最后,将本算法与文献提出的车牌倾斜校正算法进行比较, 结果表明采用本算法进行车牌倾斜校正效果较好,运算效率高并对污迹、光照等不敏感,应 用前景广泛。

猜你喜欢

转载自blog.csdn.net/Mawithvision/article/details/129602371