实验六 图像处理实际应用
一、实验目的
1、熟悉并掌握MATLAB图像处理工具箱的使用; 2、理解并掌握常用的图像处理技术。 二、实验环境
MATLAB 6.5以上版本、WIN XP或WIN2000计算机 三、实验内容
调试运行下列程序,分析程序,对每条语句给出注释,并显示最终执行结果。总结算法思想及优缺点.
I=imread('Car.jpg'); [y,x,z]=size(I); myI=double(I);
%%%%%%%%%%% RGB to HSI %%%%%%%% tic
%%%%%%%% Y 方向 %%%%%%%%%% Blue_y=zeros(y,1); for i=1:y for j=1:x
if((myI(i,j,1)<=30)&&((myI(i,j,2)<=62)&&(myI(i,j,2)>=51))&&((myI(i,j,3)<=142)&&(myI(i,j,3)>=119))) % 蓝色RGB的灰度范围
Blue_y(i,1)= Blue_y(i,1)+1; end end end
[temp MaxY]=max(Blue_y); % Y方向车牌区域确定 PY1=MaxY;
while ((Blue_y(PY1,1)>=5)&&(PY1>1)) PY1=PY1-1; end PY2=MaxY;
while ((Blue_y(PY2,1)>=5)&&(PY2 IY=I(PY1:PY2,:,:); %%%%%%%% X 方向 %%%%%%%%%% Blue_x=zeros(1,x); for j=1:x for i=PY1:PY2 if((myI(i,j,1)<=30)&&((myI(i,j,2)<=62)&&(myI(i,j,2)>=51))&&((myI(i,j,3)<=142)&&(myI(i,j,3)>=119))) Blue_x(1,j)= Blue_x(1,j)+1; end end end PX1=1; while ((Blue_x(1,PX1)<3)&&(PX1 while ((Blue_x(1,PX2)<3)&&(PX2>PX1)) PX2=PX2-1; end PX1=PX1-2; % 对车牌区域的修正 PX2=PX2+2; Plate=I(PY1:PY2,PX1-2:PX2,:); t=toc % 读取计时 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure,imshow(I); figure,plot(Blue_y);grid figure,plot(Blue_x);grid figure,imshow(IY); 添加注释和改正后的程序: I=imread('f:\\Car.jpg');%读取图片 [y,x,z]=size(I);%给定图片大小 myI=double(I);%返回双精度值 %%%%%%%%%%% RGB to HSI %%%%%%%% tic %计时开始 %%%%%%%% Y 方向 %%%%%%%%%% Blue_y=zeros(y,1);%一列全零矩阵 for i=1:y%给定i的范围 for j=1:x%给定j的范围 if((myI(i,j,1)<=30)&&((myI(i,j,2)<=62)&&(myI(i,j,2)>=51))&&((myI(i,j,3 )<=142)&&(myI(i,j,3)>=119))) % 蓝色RGB的灰度范围 Blue_y(i,1)= Blue_y(i,1)+1; % y矩阵加一 end end end [temp MaxY]=max(Blue_y); % Y方向车牌区域确定 PY1=MaxY;%y矩阵的最大元素 while ((Blue_y(PY1,1)>=5)&&(PY1>1))% 确定蓝色RGB Blue_y所在位置 PY1=PY1-1; %对车牌区域的修正,向上调整 end PY2=MaxY; %y矩阵的最大元素 while ((Blue_y(PY2,1)>=5)&&(PY2 PY2=PY2+1; %对车牌区域的修正向下调整 end IY=I(PY1:PY2,:,:);%行的范围 %%%%%%%% X 方向 %%%%%%%%%% Blue_x=zeros(1,x); %一行全一矩阵 for j=1:x%给定j的取值范围 for i=PY1:PY2%给定i的取值范围 if((myI(i,j,1)<=30)&&((myI(i,j,2)<=62)&&(myI(i,j,2)>=51))&&((myI(i,j,3)<=142)&&(myI(i,j,3)>=119)))%调整I中的范围 Blue_x(1,j)= Blue_x(1,j)+1; % Blue_x 的矩阵加一 end end end PX1=1;%当PX1等于1时 while ((Blue_x(1,PX1)<3)&&(PX1 PX1=PX1+1; %对车牌区域的修正向下调整 end PX2=x; %当PX2等于x时 while ((Blue_x(1,PX2)<3)&&(PX2>PX1)) %确定蓝色RGB Blue_x的位置 PX2=PX2-1; %对车牌区域的修正向下调整 end PX1=PX1-2; % 对车牌区域的修正 PX2=PX2+2; %对车牌区域的修正 Plate=I(PY1:PY2,PX1-2:PX2,:);%矩阵行列的范围 t=toc % 读取计时 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure,imshow(I);%创建图像窗口,显示图像I figure,plot(Blue_y);grid%创建图像窗口,绘制Blue_y图像,画出网格线 figure,plot(Blue_x);grid%创建图像窗口,绘制Blue_x图像,画出网格线 figure,imshow(Plate); %创建图像窗口,显示图像Plate t = 0.5630