数字图像处理实验报告全答案.docx

上传人:b****4 文档编号:5215725 上传时间:2022-12-14 格式:DOCX 页数:26 大小:775.75KB
下载 相关 举报
数字图像处理实验报告全答案.docx_第1页
第1页 / 共26页
数字图像处理实验报告全答案.docx_第2页
第2页 / 共26页
数字图像处理实验报告全答案.docx_第3页
第3页 / 共26页
数字图像处理实验报告全答案.docx_第4页
第4页 / 共26页
数字图像处理实验报告全答案.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

数字图像处理实验报告全答案.docx

《数字图像处理实验报告全答案.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验报告全答案.docx(26页珍藏版)》请在冰豆网上搜索。

数字图像处理实验报告全答案.docx

数字图像处理实验报告全答案

实验一常用MATLAB图像处理命令

一、实验目的

 1、熟悉并掌握MATLAB工具的使用;

2、实现图像的读取、显示、代数运算和简单变换。

二、实验环境

MATLAB以上版本、WINXP或WIN2000计算机

三、常用函数

●读写图像文件

1imread

imread函数用于读入各种图像文件,如:

a=imread('e:

\')

2imwrite

imwrite函数用于写入图像文件,如:

imwrite(a,'e:

\',’tif’)

3imfinfo

imfinfo函数用于读取图像文件的有关信息,如:

imfinfo('e:

\')

●图像的显示

1image

image函数是MATLAB提供的最原始的图像显示函数,如:

a=[1,2,3,4;4,5,6,7;8,9,10,11,12];

image(a);

2imshow

imshow函数用于图像文件的显示,如:

i=imread('e:

\');

imshow(i);

title(‘原图像’)%加上图像标题

3colorbar

colorbar函数用显示图像的颜色条,如:

i=imread('e:

\');

imshow(i);

colorbar;

4figure

figure函数用于设定图像显示窗口,如:

figure

(1);/figure

(2);

5subplot

把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示。

Subplot(m,n,p)分成m*n个小窗口,在第p个窗口中创建坐标轴为当前坐标轴,用于显示图形。

6plot

绘制二维图形

plot(y)

Plot(x,y)xy可以是向量、矩阵。

●图像类型转换

1rgb2gray

N须是0,4,6,8.当N大于0时,圆盘形结构元素由一组N(或N+2)个周期线结构元素来近似。

当N等于0时,不使用近似,即结构元素的所有像素是由到中心像素距离小于等于R的像素组成。

N可以被忽略,此时缺省值是4。

注:

形态学操作在N>0情况下要快于N=0的情形。

如:

se1=strel('square',11)%11乘以11的正方形

4imerode

腐蚀图像

用法:

IM2=imerode(IM,SE) 

腐蚀灰度、二进制或压缩二进制图像IM,返回腐蚀图像IM2。

参数SE是函数strel返回的一个结构元素体或是结构元素体阵列。

如:

使用一个盘状结构元素腐蚀一幅二进制图像。

originalBW=imread('');

se=strel('disk',11);

erodedBW=imerode(originalBW,se);

imshow(originalBW),figure,imshow(erodedBW)

5imdilate

膨胀图像

用法:

IM2=imdilate(IM,SE)

膨胀灰度图像、二值图像、或者打包的二值图像IM,返回膨胀图像M2。

变量SE是一个结构元素或者一个结构元素的数组,其是通过strel函数返回的。

如:

利用一个运行结构元素膨胀灰度图像。

I=imread('');

se=strel('ball',5,5);

I2=imdilate(I,se);

imshow(I),title('Original')

figure,imshow(I2),title('Dilated')

三、实验步骤

1、产生运动模糊图像,运用维纳滤波进行图像恢复,显示结果。

i=imread('f:

\')

I=rgb2gray(s)

I=im2double(I);

%模拟运动模糊

LEN=21;

THETA=11;

PSF=fspecial('motion',LEN,THETA);

blurred=imfilter(I,PSF,'conv','circular');

%恢复图像

wnr2=deconvwnr(blurred,PSF);

subplot(1,2,1);imshow(blurred);title('运动模糊图像')

subplot(1,2,2);imshow(wnr2);title('恢复图像')

2、采用三种不同算子检测图像边缘,显示结果。

i=imread('f:

\')

BW1=edge(I,'prewitt');

BW2=edge(I,'zerocross');

BW3=edge(I,'canny');

subplot(2,2,1);imshow(i);title('原图像')

subplot(2,2,2);imshow(BW1);title('prewitt边缘图')

subplot(2,2,3);imshow(BW2);title('zerocross边缘图')

subplot(2,2,4);imshow(BW3);title('canny边缘图')

3、对二值图像分别进行方形模板3*3和5*5的膨胀和腐蚀操作,显示结果。

a=imread('f:

\')

i=rgb2gray(a)

I=im2bw(a,

se3=strel('disk',3);

erodedBW1=imerode(I,se3);

se4=strel('disk',5);

erodedBW2=imerode(I,se4);

se1=strel('ball',3,3);

I1=imdilate(a,se1);

se2=strel('ball',5,5);

I2=imdilate(a,se2);

subplot(2,2,1);imshow(I1);title('3*3膨胀图像')

subplot(2,2,2);imshow(I2);title('5*5膨胀图像')

subplot(2,2,3);imshow(erodedBW1);title('3*3腐蚀图像')

subplot(2,2,4);imshow(erodedBW2);title('5*5腐蚀图像')

实验六图像处理实际应用

一、实验目的

1、熟悉并掌握MATLAB图像处理工具箱的使用;

2、理解并掌握常用的图像处理技术。

二、实验环境

MATLAB以上版本、WINXP或WIN2000计算机

三、实验内容

调试运行下列程序,分析程序,对每条语句给出注释,并显示最终执行结果。

总结算法思想及优缺点.

I=imread('');

[y,x,z]=size(I);

myI=double(I);

%%%%%%%%%%%RGBtoHSI%%%%%%%%

tic

%%%%%%%%Y方向%%%%%%%%%%

Blue_y=zeros(y,1);

fori=1:

y

forj=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

[tempMaxY]=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

PY2=PY2+1;

end

IY=I(PY1:

PY2,:

:

);

%%%%%%%%X方向%%%%%%%%%%

Blue_x=zeros(1,x);

forj=1:

x

fori=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

PX1=PX1+1;

end

PX2=x;

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:

\');%读取图片

[y,x,z]=size(I);%给定图片大小

myI=double(I);%返回双精度值

%%%%%%%%%%%RGBtoHSI%%%%%%%%

tic%计时开始

%%%%%%%%Y方向%%%%%%%%%%

Blue_y=zeros(y,1);%一列全零矩阵

fori=1:

y%给定i的范围

forj=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

[tempMaxY]=max(Blue_y);%Y方向车牌区域确定

PY1=MaxY;%y矩阵的最大元素

while((Blue_y(PY1,1)>=5)&&(PY1>1))%确定蓝色RGBBlue_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);%一行全一矩阵

forj=1:

x%给定j的取值范围

fori=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))%确定蓝色RGBBlue_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=

 

实验二图像基本操作

一、实验目的

 1、熟悉及掌握图像的采样原理,实现图像的采样过程,进行图像的灰度转换。

2、理解直方图的概念及应用,实现图像直方图的显示,及通过直方图均衡和直方图规定化方法对图像进行修正。

二、实验环境

MATLAB以上版本、WINXP或WIN2000计算机

三、相关函数

●图像的增强

1、直方图

imhist函数用于数字图像的直方图计算或显示,

imhist(I, n)计算和显示图像I的直方图,n为指定的灰度级数目,默认为256。

如果I是二值图像,那么n仅有两个值。

[counts,x] = imhist(...)返回直方图数据向量counts,相应的色彩值向量x。

如:

i=imread('e:

\');

imhist(i);

2、直方图均衡化

histeq函数用于数字图像的直方图均衡化,

J=histeq(I,n) 均衡化后的级数n,缺省值为64。

J=histeq(I,hgram)"直方图规定化",即将原是图象I的直方图变换成用户指定的向量hgram(即指定另一幅图像的直方图数据向量)。

如:

i=imread('e:

\');

j=histeq(i,N);对图像i执行均衡化,得到具有N个灰度级的灰度图像j,N缺省值为64

3、灰度调整

imadjust函数用于数字图像的灰度或颜色调整,

J=imadjust(I)将灰度图像I中的亮度值映射到J中的新值并使1%的数据是在低高强度和饱和,这增加了输出图像J的对比度值。

J=imadjust(I,[low_in;high_in],[low_out;high_out])

将图像I中的亮度值映射到J中的新值,即将low_in至high_in之间的值映射到low_out至high_out之间的值。

low_in以下与high_in以上的值被剪切掉了,也就是说,low_in以下的值映射到low_out,high_in以上的值映射到high_out。

它们都可以使用空的矩阵[],默认值是[01]。

如:

i=imread('e:

\');

j=imadjust(i,[,],[]);将图像i转换为j,使灰度值从~与缺省值0~1相匹配

●运算函数

1、Zeros生成全0数组或矩阵

如B=zeros(m,n)orB=zeros([mn])返回一个m*n全0矩阵

2、取整函数

floor最小取整函数

round四舍五入取整函数

ceil最大取整函数

如a=[,,,,,+]

I=round(a)

I=[-203672+4i]

四、实验内容

1、对一幅图像进行2倍、4倍、8倍和16倍减采样,显示结果。

a=imread('f:

/');

b=rgb2gray(a);

form=1:

4

figure

[width,height]=size(b);

quartimage=zeros(floor(width/(m)),floor(height/(2*m)));

k=1;

n=1;

fori=1:

(m):

width

forj=1:

(2*m):

height

quartimage(k,n)=b(i,j);

n=n+1;

end

k=k+1;

n=1;

end

imshow(uint8(quartimage));

End

2、显示一幅灰度图像a,改变图像亮度使其整体变暗得到图像b,显示两幅图像的直方图。

a=imread('f:

\')

c=rgb2gray(a)

b=c-46

subplot(2,1,1);imhist(c);title('原图像')

subplot(2,1,2);imhist(b);title('变暗后的图像')

3、对图像b进行直方图均衡化,显示结果图像和对应直方图。

b=imread('f:

\')

c=rgb2gray(b)

j=histeq(c)

subplot(2,2,1),imshow(c)

subplot(2,2,2),imshow(j)

subplot(2,2,3),imhist(c)%显示原始图像直方图

subplot(2,2,4),imhist(j)%显示均衡化后图像的直方图

4、读入图像c,执行直方图规定化,使图像a的灰度分布与c大致相同,显示变换后图像及对应直方图。

I=imread('f:

\');

>>J=histeq(I,64);%均衡化成32个灰度级的直方图

>>[counts,x]=imhist(J);%返回直方图图像向量counts

b=imread('f:

\')

Q=rgb2gray(b)

>>M=histeq(Q,counts);%将原始图像Q的直方图变成指定向量counts

>>figure,

>>subplot(3,2,1),imshow(I);

>>subplot(3,2,2),imshow(Q);

>>subplot(3,2,3),imhist(I);

>>subplot(3,2,4),imhist(Q)

>>subplot(3,2,5),imhist(J);

>>subplot(3,2,6),imhist(M);

实验三图像变换

一、实验目的

 1、熟悉及掌握图像的变换原理及性质,实现图像的傅里叶变换。

二、实验环境

MATLAB以上版本、WINXP或WIN2000计算机

三、相关函数

●图像的变换

1fft2

fft2函数用于数字图像的二维傅立叶变换,如:

i=imread('e:

\');

j=fft2(i);

由于MATLAB无法显示复数图像,因此变换后的结果还需进行求模运算,即调用abs函数。

之后常常还进行对数变换,即调用log函数,以减缓傅里叶谱的快速衰减,更好地显示高频信息。

2ifft2

ifft2函数用于数字图像的二维傅立叶反变换,如:

i=imread('e:

\');

j=fft2(i);

k=ifft2(j);

3fftshift

用于将变换后图像频谱中心从矩阵的原点移动到矩阵的中心

B=fftshift(i)

4利用fft2计算二维卷积

利用fft2函数可以计算二维卷积,如:

a=[8,1,6;3,5,7;4,9,2];

b=[1,1,1;1,1,1;1,1,1];

a(8,8)=0;

b(8,8)=0;

c=ifft2(fft2(a).*fft2(b));

c=c(1:

5,1:

5);

利用conv2(二维卷积函数)校验,如:

a=[8,1,6;3,5,7;4,9,2];

b=[1,1,1;1,1,1;1,1,1];

c=conv2(a,b);

四、实验内容

1、对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。

s=imread('f:

\');%读入原图像

i=rgb2gray(s)

i=double(i)

j=fft2(i);%傅里叶变换

k=fftshift(j);%直流分量移到频谱中心

l=log(abs(k));%对数变换

m=fftshift(j);%直流分量移到频谱中心

RR=real(m);%取傅里叶变换的实部

II=imag(m);%取傅里叶变换的虚部

A=sqrt(RR.^2+II.^2);%计算频谱府幅值

A=(A-min(min(A)))/(max(max(A)))*255;%归一化

b=circshift(s,[800450]);%对图像矩阵im中的数据进行移位操作

b=rgb2gray(b)

b=double(b)

c=fft2(b);%傅里叶变换

e=fftshift(c);%直流分量移到频谱中心

l=log(abs(e));%对数变换

f=fftshift(c);%直流分量移到频谱中心

WW=real(f);%取傅里叶变换的实部B

ZZ=imag(f);%取傅里叶变换的虚部

B=sqrt(WW.^2+ZZ.^2);%计算频谱府幅值

B=(B-min(min(B)))/(max(max(B)))*255;%归一化

subplot(2,2,1);imshow(s);title('原图像')

subplot(2,2,2);imshow(uint8(b));;title('平移图像')

subplot(2,2,3);imshow(A);title('离散傅里叶频谱');

subplot(2,2,4);imshow(B);title('平移图像离散傅里叶频谱')

2、对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的对应关系。

s=imread('f:

\');%读入原图像

i=rgb2gray(s)

i=double(i)

j=fft2(i);%傅里叶变换

k=fftshift(j);%直流分量移到频谱中心

l=log(abs(k));%对数变换

m=fftshift(j);%直流分量移到频谱中心

RR=real(m);%取傅里叶变换的实部

II=imag(m);%取傅里叶变换的虚部

A=sqrt(RR.^2+II.^2);%计算频谱府幅值

A=(A-min(min(A)))/(max(max(A)))*255;%归一化

b=imrotate(s,-90);%对图像矩阵im中的数据进行移位操作

b=rgb2gray(b)

b=double(b)

c=fft2(b);%傅里叶变换

e=fftshift(c);%直流分量移到频谱中心

l=log(abs(e));%对数变换

f=fftshift(c);%直流分量移到频谱中心

WW=real(f);%取傅里叶变换的实部B

ZZ=imag(f);%取傅里叶变换的虚部

B=sqrt(WW.^2+ZZ.^2);%计算频谱府幅值

B=(B-min(min(B)))/(max(max(B)))*255;%归一化

subplot(2,2,1);imshow(s);title('原图像')

subplot(2,2,2);imshow(uint8(b));;title('平移图像')

subplot(2,2,3);imshow(A);title('离散傅里叶频谱');

subplot(2,2,4);ims

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1