车牌识别算法实现及其代码实现之一:车牌区域检测
来源:互联网 发布:大数据平台有哪些用户 编辑:程序博客网 时间: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)ℑ 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
- 车牌识别算法实现及其代码实现之一:车牌区域检测
- 车牌识别算法实现及其代码实现之三:车牌识别(待续)
- 车牌识别算法实现及其代码实现之二:字符分割
- tensorflow实现车牌识别
- 车牌识别系统Matlab算法实现
- 车牌识别系统Matlab算法实现
- 车牌识别系统Matlab算法实现
- 车牌识别算法实现的技术功能
- 车牌识别之一:车牌定位
- 使用opencv的SVM实现车牌区域识别
- 使用opencv的SVM实现车牌区域识别
- 使用opencv的SVM实现车牌区域识别
- OpenCV下车牌定位算法实现代码
- OpenCV下车牌定位算法实现代码
- OpenCV下车牌定位算法实现代码
- OpenCV下车牌定位算法实现代码
- python+opencv 车牌识别实现
- HCM硬性K均值聚类算法 C++实现 【字幕检测、车牌识别】
- maven 中parent 与 dependencyManagement
- 【Java概念】内存分析(13)
- elf格式
- Coin (2017 ACM-ICPC 亚洲区(西安赛区)网络赛B题)
- IDEA搭建框架方法
- 车牌识别算法实现及其代码实现之一:车牌区域检测
- 作业1
- Maven传递依赖无法引入问题(The POM for xxx is invalid)
- Python计算程序运行时间
- SSH与SSM学习之hibernate01——介绍与环境搭建
- (升级修改版1.1)集群配置(Torque安装配置+Maui安装配置+SSH免验证设置+节点共享目录(NFS服务)设置+NIS服务设置+用户硬盘空间限制和核心使用限制设置)异常详细版
- weiphp2.0:table多表联合查询的问题
- 排序算法
- maven