车牌识别的matlab程序
更新时间:2023-11-19 07:58:01 阅读量: 教育文库 文档下载
- 车牌识别道闸一套多少钱推荐度:
- 相关推荐
附录
车牌识别程序
clear ; close all;
%Step1 获取图像 装入待处理彩色图像并显示原始图像 Scolor = imread('3.jpg');%imread函数读取图像文件 %将彩色图像转换为黑白并显示
Sgray = rgb2gray(Scolor);%rgb2gray转换成灰度图
figure,imshow(Scolor),title('原始彩色图像');%figure命令同时显示两幅图
figure,imshow(Sgray),title('原始黑白图像');
%Step2 图像预处理 对Sgray 原始黑白图像进行开操作得到图像背景 s=strel('disk',13);%strel函数
Bgray=imopen(Sgray,s);%打开sgray s图像
figure,imshow(Bgray);title('背景图像');%输出背景图像 %用原始图像与背景图像作减法,增强图像 Egray=imsubtract(Sgray,Bgray);%两幅图相减
figure,imshow(Egray);title('增强黑白图像');%输出黑白图像 %Step3 取得最佳阈值,将图像二值化
fmax1=double(max(max(Egray)));%egray的最大值并输出双精度型
fmin1=double(min(min(Egray)));%egray的最小值并输出双精度型 level=(fmax1-(fmax1-fmin1)/3)/255;%获得最佳阈值 bw22=im2bw(Egray,level);%转换图像为二进制图像 bw2=double(bw22);
%Step4 对得到二值图像作开闭操作进行滤波
figure,imshow(bw2);title('图像二值化');%得到二值图像 grd=edge(bw2,'canny')%用canny算子识别强度图像中的边界 figure,imshow(grd);title('图像边缘提取');%输出图像边缘 bg1=imclose(grd,strel('rectangle',[5,19]));%取矩形框的闭运算 figure,imshow(bg1);title('图像闭运算[5,19]');%输出闭运算的图像 bg3=imopen(bg1,strel('rectangle',[5,19]));%取矩形框的开运算
figure,imshow(bg3);title('图像开运算[5,19]');%输出开运算的图像 bg2=imopen(bg3,strel('rectangle',[19,1]));%取矩形框的开运算 figure,imshow(bg2);title('图像开运算[19,1]');%输出开运算的图像 %Step5 对二值图像进行区域提取,并计算区域特征参数。进行区域特征参数比较,提取车牌区域
[L,num] = bwlabel(bg2,8);%标注二进制图像中已连接的部分 Feastats = imfeature(L,'basic');%计算图像区域的特征尺寸 Area=[Feastats.Area];%区域面积
BoundingBox=[Feastats.BoundingBox];%[x y width height]车牌框架大小 RGB = label2rgb(L, 'spring', 'k', 'shuffle'); %标志图像向RGB图像转换 figure,imshow(RGB);title('图像彩色标记');%输出框架的彩色图像 lx=0; for l=1:num
width=BoundingBox((l-1)*4+3);%框架宽度的计算 hight=BoundingBox((l-1)*4+4);%框架高度的计算
if (width>98 & width<160 & hight>25 & hight<50)%框架的宽度和高度的范围
lx=lx+1; Getok(lx)=l; end end for k= 1:lx
l=Getok(k);
startcol=BoundingBox((l-1)*4+1)-2;%开始列 startrow=BoundingBox((l-1)*4+2)-2;%开始行 width=BoundingBox((l-1)*4+3)+8;%车牌宽 hight=BoundingBox((l-1)*4+4)+2;%车牌高 rato=width/hight;%计算车牌长宽比 if rato>2 & rato<4 break; end end
sbw1=bw2(startrow:startrow+hight,startcol:startcol+width-1); %获取车牌二值子图
subcol1=Sgray(startrow:startrow+hight,startcol:startcol+width-1);%获取车牌灰度子图
figure,subplot(2,1,1),imshow(subcol1);title('车牌灰度子图');%输出灰度图
subplot(2,1,2),imshow(sbw1);title('车牌二值子图');%输出车牌的二值图
%Step6 计算车牌水平投影,并对水平投影进行峰谷分析 histcol1=sum(sbw1); %计算垂直投影 histrow=sum(sbw1'); %计算水平投影
figure,subplot(2,1,1),bar(histcol1);title('垂直投影(含边框)');%输出垂直投影
subplot(2,1,2),bar(histrow); title('水平投影(含边框)');%输出水平投影
figure,subplot(2,1,1),bar(histrow); title('水平投影(含边框)');%输出水平投影
subplot(2,1,2),imshow(sbw1);title('车牌二值子图');%输出二值图 %对水平投影进行峰谷分析
meanrow=mean(histrow);%求水平投影的平均值 minrow=min(histrow);%求水平投影的最小值
levelrow=(meanrow+minrow)/2;%求水平投影的平均值 count1=0; l=1; for k=1:hight
if histrow(k)<=levelrow count1=count1+1; else
if count1>=1
markrow(l)=k;%上升点
markrow1(l)=count1;%谷宽度(下降点至下一个上升点) l=l+1; end count1=0; end end
markrow2=diff(markrow);%峰距离(上升点至下一个上升点) [m1,n1]=size(markrow2); n1=n1+1;
markrow(l)=hight; markrow1(l)=count1;
markrow2(n1)=markrow(l)-markrow(l-1); l=0; for k=1:n1
markrow3(k)=markrow(k+1)-markrow1(k+1);%下降点 markrow4(k)=markrow3(k)-markrow(k);%峰宽度(上升点至下降点)
markrow5(k)=markrow3(k)-double(uint16(markrow4(k)/2));%峰中心位置
end
%Step7 计算车牌旋转角度
%(1)在上升点至下降点找第一个为1的点 [m2,n2]=size(sbw1);%sbw1的图像大小 [m1,n1]=size(markrow4);%markrow4的大小 maxw=max(markrow4);%最大宽度为字符 if markrow4(1) ~= maxw%检测上边 ysite=1; k1=1; for l=1:n2
for k=1:markrow3(ysite)%从顶边至第一个峰下降点扫描 if sbw1(k,l)==1 xdata(k1)=l; ydata(k1)=k; k1=k1+1; break; end end end else %检测下边 ysite=n1;
if markrow4(n1) ==0
if markrow4(n1-1) ==maxw ysite= 0; %无下边 else
ysite= n1-1; end end if ysite ~=0 k1=1; for l=1:n2 k=m2;
while k>=markrow(ysite) %从底边至最后一个峰的上升点扫描
if sbw1(k,l)==1 xdata(k1)=l; ydata(k1)=k; k1=k1+1; break; end k=k-1; end end end end
%(2)线性拟合,计算与x夹角
fresult = fit(xdata',ydata','poly1'); %poly1 Y = p1*x+p2 p1=fresult.p1;
angle=atan(fresult.p1)*180/pi; %弧度换为度,360/2pi, pi=3.14 %(3)旋转车牌图象
subcol = imrotate(subcol1,angle,'bilinear','crop'); %旋转车牌图象 sbw = imrotate(sbw1,angle,'bilinear','crop');%旋转图像
figure,subplot(2,1,1),imshow(subcol);title('车牌灰度子图');%输出车牌旋转后的灰度图像标题显示车牌灰度子图
subplot(2,1,2),imshow(sbw);title('');%输出车牌旋转后的灰度图像
正在阅读:
车牌识别的matlab程序11-19
论企业核心竞争力培育中存在的问题及对策09-12
医药OTC推广营销模式浅析06-10
公证法测试题及参考答案07-04
人教版六年级语文下册第六单元试卷02-06
科学与工程计算国家重点实验室(中科院数学与系统科学研究所) - 图文10-10
电力系统分析课程设计05-08
滴定分析练习题12-29
商务沟通中的礼仪08-29
GSM题库十分全面10-07
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 车牌
- 别的
- 程序
- matlab
- 水平井钻井专用工具
- 高速铁路道岔检查 - 图文
- 白崇禧 简介
- 当代诗坛点将录
- 2015四年级美术下册全册教案湖南美术出版社 doc
- 桩基础设计计算书
- 2012年江苏省公务员考试申论真题及答案解析
- 关注一次性用品活动方案 - 图文
- 郑州市会展业发展的现状及对策研究
- 南开大学《组织行为学》在线作业
- 类型一 光学作图
- 同济大学2007百年校庆建筑作品选第三轮选择项目
- 数字变声器原理与算法
- 产吨甲醇精馏段工艺毕业设计方案
- 中国地质大学远程与继续教育学院计算机应用基础(专升本)阶段性作业4
- 2014年中国路灯行业深度调研报告
- 2015年初级会计职称考试实务模4
- 金蝶题库(单选题)
- 层次分析法的综述
- 山东大学成人高等教育政治学与公共管理学院08年二学期考试(精)