logo资料库

基于Matlab的车牌定位切割程序.doc

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
学 生 实 验 报 告 实 验 课 名 称: 数字图像处理 实验项目名称: 形态学处理 专 业 名 称: 交通信息工程 班 学 级: 24020804 号: 23 学 生 姓 名: 邢洪伟 教 师 姓 名: 丁爱玲 2011 年 5 月 23 日
实验日期: 2011 年 5 月 23 日 实验室名称: 2404 一.实验名称: 图像的形态学处理 二.实验目的与要求: 1.充分掌握图像形态学处理的原理与方法; 2. 充分了解图像形态学方法的应用。 三.实验内容: 1. 任意读取一幅图像; 2. 对所读入的图像进行开、闭运算等二值形态学处理 四.实验设备与软件环境: 一台电脑和 Matlab、VC++环境
五.源程序: close all I=imread('car1.jpg'); figure,subplot(3,2,1),imshow(I);title('原始图像','Color','r');% 显示原始图像 %图像预处理 Im1=rgb2gray(I); subplot(3,2,3),imshow(Im1);title('灰度图','Color','r'); subplot(3,2,4),imhist(Im1);title('灰度图的直方图','Color','r');% 显示图像的直方图 %图像增强 Tiao=imadjust(Im1,[0.19,0.78],[0,1]); % 调整图像 subplot(3,2,5),imshow(Tiao);title('增强灰度图','Color','r'); subplot(3,2,6),imhist(Tiao);title('增强灰度图的直方图','Color','r'); %边缘检测 Im2=edge(Im1,'sobel',0.15,'both'); % 使用 sobel 算子进行边缘检测 figure(2),subplot(2,2,1),imshow(Im2);title('sobel 算子实现边缘检测','Color','r') %图像腐蚀 se=[1;1;1]; Im3=imerode(Im2,se); % 图像腐蚀 figure(2),subplot(2,2,2),imshow(Im3);title('腐蚀效果图','Color','r'); se=strel('rectangle',[25,25]); % 创建由指定形状的结构元素,矩形 %图像平滑 Im4=imclose(Im3,se); % 对图像实现闭运算,闭运算能平滑图像的轮廓 figure(2),subplot(2,2,3),imshow(Im4);title('平滑图像的轮廓','Color','r'); %移除小对象 Im5=bwareaopen(Im4,2000); % 删除小面积图形 只适合该车牌图像 %%% that have fewer than P pixels, figure(2),subplot(2,2,4),imshow(Im5);title('移除小对象','Color','r'); %车牌定位 [y,x,z]=size(Im5); Im6=double(Im5); Blue_y=zeros(y,1);%创建元素为零的数组或矩阵 y*1 %%%% 统计每行中灰度值为 1 的像素点个数 for i=1:y bwareaopen 函数: removes from a binary image all connected components (objects) % 参数的选择与具体的图像有关。此参数 % 行数 for j=1:x if(Im6(i,j,1)==1) Blue_y(i,1)= Blue_y(i,1)+1; % 根据 Im6 的 y 值确定 end end end % 确定多少行。 从中间最大值往上、下两边搜索,确定边界
[temp MaxY]=max(Blue_y);% 垂直方向车牌区域确定。找出灰度值为 1 的最多一行 PY1=MaxY; while ((Blue_y(PY1,1)>=5)&&(PY1>1)) %%% 像素点个数大于 5 的才是车牌区域 PY1=PY1-1; %%% 从下往上,寻找起始行 PY1 end PY2=MaxY; while ((Blue_y(PY2,1)>=5)&&(PY2PX1)) PX2=PX2-1; end PX1=PX1-1;% 对车牌区域的校正 PX2=PX2+1; dw=I(PY1:PY2-6,PX1:PX2 ,:); figure(3),subplot(2,2,2),imshow(dw),title('定位剪切后的彩色车牌图像','Color','r') b=rgb2gray(dw); figure(3);subplot(2,2,3),imshow(b),title('1.车牌灰度图像','Color','r') %车牌图二值化 g_max=double(max(max(b))); g_min=double(min(min(b))); T=round(g_max-(g_max-g_min)/3); % T 为设定的二值化的阈值 d=(double(b)>=T); % d 为二值图像 figure(3);subplot(2,2,4),imshow(d),title('1.车牌二值图像','Color','r')
六.运行结果与分析:
七.实验中遇到的问题、解决方法及体会: 通过本次实验,对车牌的处理流程有了跟深刻的理解,把前面的知识 串了一边,图像预处理,图像增强,边缘检测,图像平滑,图像平滑, 移除小对象,车牌定位,车牌图二值化,对 matlab 的编程更熟悉了一点, 但还是遇到各种各样的问题,通过查询各种资料解决,获益良多。
分享到:
收藏