MATLAB作业

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

所在位置,maxy为最大值
PY1=MaxY; while ((Blue_y(PY1,1)>=5)&&(PY1>1))
PY1=PY1-1; end %从右方往左截取一段区域,区域的右限为PY1
PY2=MaxY;
while ((Blue_y(PY2,1)>=5)&&(PY2<y)) PY2=PY2+1;%从左方截取一段区域,区域的左限为PY2
I4=imclose(I3,se);%对I3利用正方形结构图闭运算,平滑图片轮廓, 修补缝隙; figure(5),imshow(I4);title('平滑图像的轮廓'); I5=bwareaopen(I4,2000);%删掉原图的面积小于2000的不必要的小部 分 figure(6),imshow(I5);title('从对象中移除小对象'); [y,x,z]=size(I5);%I5是移除小对象后的图像,将I5各维尺寸存储在 X,Y,Z中 myI=double(I5);%换成双精度数据。
基于MATLAB的车牌识别系统
小组成员:张佰涛 刘强伟 崔敏 滕秀萍 龚恒耿
系统技术:
车牌识别系统的摄像头通过对经过指定区域的机动车辆进行拍照, 因为照片会受到光照、拍摄位置和车辆行驶速度的影响,导致拍摄 的图片不能准确的确定汽车的车牌。而车牌识别系统就通过对机动 车辆的照片进行图像预处理、车牌定位、字符分割、字符识别等技 术手段,从而得到清晰的机动车牌照的照片,从而提高现代智能交 通的管理效率,可以说车牌识别系统对于现代智能交通至关重要。
本设计中采用Roberts算子其MATLAB指令: I2=edge(I1,'robert',0.15,'both');%使用robert算子进行边缘检测。% 将灰度图像用Robert算子计算,间距0.15,方向水平,垂直两个方向,图 像边缘处理,利用Robert算子运算
要先进行牌照的倾斜校正。由于牌照的上下沿是两条明 显的平行直线,因此,一般都采用霍夫(Hough)变换,检 测出这两条直线,然后对牌照进行校正 。
PX2=PX2-1; end %从下至上截取一段区域,区域下限位PY2 PX1=PX1-1;%对车牌区域的校正
PX2=PX2+1; dw=I(PY1:PY2-8,PX1:PX2,:);%车牌区域提取,考虑到车牌边框区域, 进行剪切 t=toc; %计算程序运行时间 figure(7),subplot(1,2,1),imshow(IY),title('行方向合理区域');%显示行合适 区域图片,将它放在第一个小图位置
end IY=I(PY1:PY2,:,:);%IY为PY2到PY1的区域,横向区域 %%%%%% X方向 %%%%%%%%% Blue_x=zeros(1,x);%进一步确定y方向的车牌区域
for j=1:x
for i=PY1:PY2
if(myI(i,j,1)==1) Blue_x(1,j)= Blue_x(1,j)+1; %Blue_y第j列第一行加一,保存
的图像中提取出车牌,就必须抓住车牌区域的最主要特征。车牌区域 最主要的特征应该是:车牌的底色和车牌字的颜色形成强烈对比,而 且灰度变化频繁。
程序: Blue_y=zeros(y,1); for i=1:y for j=1:x if(myI(i,j,1)==1) Blue_y(i,1)= Blue_y(i,1)+1; end end
本系统应用图像处理技术、车牌分割技术、字符特征 提取方法、神经网络识别技术,模板匹配的方法来解决 车辆牌照识别问题。完整的车牌识别系统包括图像采集、 图像处理、车牌定位、字符分割、字符识别、数据库、 数据库支持模块等模块。
一、图像处理:
本系统中图像处理主要分为几个步骤:图像预处理,图像增强, 图像去噪,图像切割,图像提取等几个步骤。
相关的MATLAB 指令: h=fspecial(‘average’,3); ;%平均值的设定 d=im2bw(round(filter2(h,d)));%平均滤波
(四)、图像的边缘检测:
边缘是图像的最本特征,边缘检测在计算机视觉、图像分析等应 用中起着重要的作用,使图像识别与分析的重要环节。边缘存在于 目标与背景、目标与目标、区域与区域之间因此它是图像分割、形 状特征、纹理特征的基础。缘具有方向与幅度两个特征。沿边缘走 向,像素变化比较平缓。而垂直于边缘走向,则像素变化剧烈。这 种剧烈可能呈现阶跃状,也可能呈现斜坡状。边缘的上的像素的一 阶导数较大; 二阶导数在边缘检测处值为零,呈现零交叉。这种特 点使得边缘检测可以利用数学方法获得,经典的边缘检测算子有 Roberts、Sobel、Prewitt、LoG、Canny算子。
(1)车牌区域内字符的纹理特征。 (2)车牌的格式标准和字符标准信息。 (3)车牌区域水平或者垂直投影特征。 (4)车牌区域的位置特点。 (5)车牌的彩色信息。 (6)频谱特征。
处理方法主要分为两大块:行定位与列定位。具体方法如下: 获取特征图像 要想从一整幅包括车身,背景等其他相对于车牌来说属于干扰因素
while ((Blue_x(1,PX2)<3)&&(PX2>PX1)) PX2=PX2-1; end PX1=PX1-1;
PX2=PX2+1; dw=I(PY1:PY2-8,PX1:PX2,:); 通过以上的行 列扫描确定了车牌的区域,并将车牌提取 出来,效果如下图
程序部分详解
Leabharlann Baidu
(1)图像预处理 function [d]=main(jpg) close all clc =imread('car2.jpg');%读入图片 figure(1),imshow(I);title('原图')%显示输出一个图形窗口 I1=rgb2gray(I);%变为灰度图像,图像转换预处理 figure(2)%显示1个窗口,subplot(1,2,1)figure图片产生一行两
数字区域,进行行扫描,列不变,所以j不变 %利用行数加一循环统计蓝色像素点
Blue_y(i,1)= Blue_y(i,1)+1;%Blue_y第i行第一列加一,保存数字
区域列信息
end
end
end
%确定数字区域,将数字区域所在列信息输入
Blue_y中
[temp MaxY]=max(Blue_y);%Y方向车牌区域确定 temp为blue-y最大值
汽车牌照的定位,是指从摄入的汽车图像中找到汽车牌照所在的位置, 并把含有车牌的子区域提取出来。从编程实现的角度来看,就是针对某 汽车图像,通过运行某个定位算法,确定车牌子区域的对角坐标。为了 准确而快速的实现车牌的定位,人们提出了许多定位算法。这些算法大 都基于汽车牌照的不同特征而提出的。这些特征包括:
数字区域行信息
end
end end%纵向扫描,进一步确定车牌区域
PX1=1;
while ((Blue_x(1,PX1)<3)&&(PX1<x))
PX1=PX1+1; end %从上至下截取一段区域,区域上限位PY1
PX2=x;
while ((Blue_x(1,PX2)<3)&&(PX2>PX1))
列子图激活第1个格子图,imshow(I1)显示灰度图像;title('灰度图'); 此部分是图像预处理部分,将采集到的图像转换为灰度图像,
便于后面处理,同时显示原图的图片以及处理好的灰度图片。
(2)图像增强与边缘检测 figure(2),subplot(1,2,2),imhist(I1;title('灰度图直方图');)%显 示图像直方图,图像增强处理,直方图均衡 I2=edge(I1,'robert',0.15,'both');%将灰度图像用Robert算子计算, 间距0.15,方向水平,垂直两个方向,图像边缘处理,利用Robert算 子运算 figure(3),imshow(I2)%显示边缘处理后的;title('robert算子边缘检 测') se=[1;1;1];%创造一个维度矩阵,用于腐蚀单位扫描 I3=imerode(I2,se);%将I3灰度腐蚀,三个维度对1与,如果不为1,则 变为黑色,保留白色点 figure(4),imshow(I3);title('腐蚀后图像');%对裁剪好的图像进行 图像增强处理,利用腐蚀处理 se=strel('rectangle',[25,25]);%构建一个25为边长的正方形结构体 图
end
[temp MaxY]=max(Blue_y) PY1=MaxY;
while ((Blue_y(PY1,1)>=5)&&(PY1>1)) PY1=PY1-1;
end PY2=MaxY; while ((Blue_y(PY2,1)>=5)&&(PY2<y)) PY2=PY2+1; end IY=I(PY1:PY2,:,:); PX1=1; while ((Blue_x(1,PX1)<3)&&(PX1<x)) PX1=PX1+1; end PX2=x;
首先利用直方图,统计灰度图中像素灰度的信息,对此进行直 方图均衡,增强图像,将直方图显示;利用robert算子进行边缘检测, 对原图进行处理,然后创建一个维度矩阵,用来进行腐蚀操作,将图 像进一步增强
然后对图像进行进一步修补,建立一个正方形结构图进行闭运算,修 补轮廓,填补缝隙。由于原图中存在车标志等因素的干扰,因此要对 干扰消除,删除掉不必要的小部分。
最后将最终图像的图像数据各个维度存储在数组中,转换为双精度 为下面的行列扫描做准备。 (3)车牌区域的确定与提取
tic%保存当前时间,用toc计算程序运行时间 Blue_y=zeros(y,1);%产生y*1的全零矩阵 for i=1:y
for j=1:x if(myI(i,j,1)==1) %灰度图像中白色表示为全1,若myI=1,则表示是
(一)图像预处理 收集到的图片一般为彩色图片,由于彩色图片占用存储容
量大,处理时间长,因此需要对图像进行灰度转换,将彩色图像转 换为灰度图像,灰度图像只保留亮度信息,方便使用,也为后面的 对图像进行二值化处理提供方便。
程序:I1=rgb2gray(I); rgb2gray,MATLAB中灰度图像转换函数,原图及处理后的
处理后的直方图显示如下:
一、图像处理
(二)、图像增强: 膨胀腐蚀
程序:I3=imerode(I2,se); imerode,MATLAB中的腐蚀函数 处理后的腐蚀图像显示如下:
(三)、图像的去噪:
通常使用2种方法:线性滤波、中值滤波。线性滤波可以去除 图像中某些类型的噪声,本程序中采用平均滤波发:邻域平均法 的均值滤波器就非常适用于去除通过扫描得到的图像中的颗粒噪 声。经邻域平均后,噪声的均值不变,噪声方差变小,说明噪声 强度减弱了,即抑制了噪声。邻域平均法也平滑了图像信号,特 别是可能使图像目标区域的边界变得模糊。可以证明,对图像进 行邻域平均处理相当于图像信号通过一低通滤波器。
灰度图显示如下
一、图像处理
(二)、图像增强:
图像增强是数字图像处理过程中经常采用的一种方法。为了改善 视觉效果或者便于人和机器对图像的理解和分析,根据图像的特点 或存在的问题采取的改善方法或者加强特征的措施称为图像增强。
采集的图片受天气、光照、观察点等制约,往往会产生对比度 不足,图像细节不清,另外,图像传输过程中也会产生失真,影响 识别率。
figure(7),subplot(1,2,2),imshow(dw),title('定位剪切后的彩色车牌图像 ')%显示车牌区域,放到第二个小图
imwrite(dw,‘dw.jpg’);%将图像数据写入图像文件中 figure(8);subplot(3,2,1),imshow(b),title('1.车牌灰度图像')%产生3行两 列子图,将灰度图放到第一个小图位置 通过运用for循环来进行行列扫描,将图片中数字部分所在的行 列信息 付给变量,对变量的操作来完成对图片车牌区域的提取。 (4)图像的二值化 灰度图像是有256个灰度级的单色图像,多级别的图像能够呈现出较为 丰富的明暗度,但对于目标搜索来说,总是希望尽可能地减少背景像素 的干扰,而保存或增强目标区的色素度。图像的二值化可把像素的灰度 级分成黑与白二级,即把原灰度图像转化为二值图像,方便目标区域的 处理。
图像增强的方法有:中值滤波、直方图均衡,灰度拉伸、通天 滤波、高斯滤波、多图像平均、领域平均。腐蚀膨胀等。
一、图像处理
(二)、图像增强:
本系统中使用到的方法有:平均滤波,膨胀腐蚀,直方图均衡 直方图均衡
程序:figure(2),subplot(1,2,2),imhist(I1;title('灰度图直方图'); imhist函数,用来提取灰度图中直方图信息,用来直方图均衡, 增强图像。
相关文档
最新文档