车牌识别算法实现及其代码实现之一:车牌区域检测

来源:互联网 发布:大数据平台有哪些用户 编辑:程序博客网 时间:2024/06/06 00:43

本文地址:http://blog.csdn.net/shanglianlm/article/details/78005815

本文主要处理汽车车牌的识别过程,包括三个步骤,一:车牌区域检测,本文利用车牌的颜色和形状特征确认并获取汽车的车牌位置,二:字符分割,将获取到的汽车车牌按不同字符进行切割,三:车牌识别,最后利用神经网络对切割的字符进行识别达到最终的车牌识别。

一 车牌区域检测
1 首先读入我们要识别的车辆图片,灰度化后,我们使用robert算子对其进行边缘检测;如下图
这里写图片描述

代码如下:

file='2.jpg';I=imread(file);I1=rgb2gray(I);I2=edge(I1,'roberts',0.08,'both');

2 接着我们对图像进行腐蚀,除去图像中一些不必要的信息,然后我们再对图像进行闭合操作使其区域平滑。

这里写图片描述
代码如下:

se=[1;1;1];I3=imerode(I2,se);se=strel('rectangle',[40,40]);%生成一个矩阵I4=imclose(I3,se);  %闭运算

由此,我们根据图像的形状可以获取到这些信息。
3 这里我们主要处理小型汽车,即车牌规格为: 440×140 蓝底白字白框线,因此我们获取图像中的黄色区域,同时腐蚀再闭合,与我们第二步中得到的图像求并,但是我们可以还留存一些小的无用区域,我们还需要对获得的图像进行过滤,去掉小的结构,即得到我们所要获取的车牌区域,如下图
这里写图片描述

代码如下:

I5=removeByColor(I4,I,'12');I6=bwareaopen(I5,2000);

4 最终获得的车牌区域如下
这里写图片描述

代码如下:

[a,b]=find(I6>0);I7 = I1(unique(a),unique(b));I8 = I(unique(a),unique(b),:);

5 获取到的图像可能会有一定的倾斜,我们还需要对其校正,我们可以使用Radon transform在0-180度上找到图像可能最大的倾斜角度, 然后对图像校正,如上图。

其他代码如下:
获取颜色线索

 function im = removeByColor(image,I,removedColor)        % image: 灰度图 x*y        % I: 原始图像 x*y*3        % removedColor:要移除的颜色 1 蓝色、2 黄色、3 白色、4 黑色 默认蓝黄 12        if nargin < 3            removedColor = '12';        end        %大型汽车 440×140 黄底黑字黑框线         %小型汽车 440×140 蓝底白字白框线        diff_Y=0; diff_B=0;        %获取蓝色        Image_B=I;        IR = Image_B(:,:,1);IG = Image_B(:,:,2);IB = Image_B(:,:,3);        XYB=~((IB-IR)>diff_B&(IB-IG)>diff_B);  % 提取蓝色条件是B分量与G、R分量差值大于设定        IR(XYB)=255; IG(XYB)=255; IB(XYB)=255;  % 使得非蓝色区域变为灰色        Image_B(:,:,1)=IR; Image_B(:,:,2)=IG; Image_B(:,:,3)=IB;        Image_B_gray=rgb2gray(Image_B);        stre=[1;1;1];        Image_B_erode=imerode(Image_B_gray,stre);        stre=strel('rectangle',[20,20]);%生成一个矩阵        Image_B_new=imclose(Image_B_erode,stre);  %闭运算        thresh = graythresh(Image_B_new);     %自动确定二值化阈值        bw_Image_B = im2bw(Image_B_new,thresh);       %对图像二值化        im = (~bw_Image_B)&image;    end

最后显示

figure(1),subplot(3,3,1),imshow(I),title('原图');hold on;subplot(3,3,2),imshow(I1),title('灰度图');hold on;subplot(3,3,3),imshow(I2),title('robert算子边缘检测');hold on;subplot(3,3,4),imshow(I3),title('腐蚀后图像');hold on;subplot(3,3,5),imshow(I4),title('平滑图像的轮廓');hold on;subplot(3,3,6),imshow(I5),title('加入颜色线索');hold on;subplot(3,3,7),imshow(I6),title('从对象中移除小对象');hold on;subplot(3,3,8),imshow(I7),title('车牌对象');hold on;subplot(3,3,9),imshow(I8),title('获取到的车牌');hold on;
阅读全文
0 0
原创粉丝点击