数字图像处理实验报告(全答案).. 下载本文

实验六 图像处理实际应用

一、实验目的

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