实验六 图像处理实际应用
一、实验目的
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