《数字图像处理》实验指导书(第2版,吴健辉)_第1页
《数字图像处理》实验指导书(第2版,吴健辉)_第2页
《数字图像处理》实验指导书(第2版,吴健辉)_第3页
《数字图像处理》实验指导书(第2版,吴健辉)_第4页
《数字图像处理》实验指导书(第2版,吴健辉)_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字图像处理(MATLAB版)

(2011版)

图像信息处理教学团队

湖南理工学院信息与通信工程学院

目录

绪论..............4

实验一MatIab图像处理基础...............................................5

/.图像的读写...............................................................5

2.图像显示..............................................................6

实验二图像运算........................................................8

/.图像点运算...............................................................8

2.图像的代数运算.........................................................8

3.图像的几何运算.........................................................9

4.*图像的邻域操作.......................................................10

实验三灰度变换增强”..................................................12

1.线段上像素灰度分布..................................................I2

2.直方图变换...........................................................12

实验四空域滤波增强”..................................................15

/.噪声模拟..............................................................15

2.均值滤波和中值滤波..................................................../5

3.空域滤波............................................................../6

实验五空间变换......................................................17

/.图像极值的处理方法....................................................17

2.*创建一幅图像,求其距离矩阵。.........................................17

3.*使用伪彩色显示标记矩阵。............................................78

4.利用选择控制点实现图像匹配。.........................................I8

实验六图像变换与滤波器设计...........................................20

1.傅立叶变换.............................................................20

2.离散余弦变换(DCT)...................................................22

3.Radon变换............................................................23

4.*MaHab线形滤波器设计............................................23

实验七形态学操作……..................................................24

/.图像膨胀.........................................................24

2.图像腐蚀.......................................................24

3.膨胀与腐蚀的综合使用............................................25

4.米高帽与低帽变换.................................................26

实验八图像复原......................................................28

/.模糊与噪声........................................................28

2.维纳滤波复原......................................................28

实验九图像分析与理解及图像压缩.......................................30

1.图像分析与理解...................................................30

2.图像压缩.......................................................32

附录.............34

/.常用图像处理函数..................................................34

绪论

一、实验设备

I.PC计算机系统;

2.MatLab软件/语言包括图像处埋_L具箱(ImageProcessingToolbox);

3.实验所需要的图片。

二、实验步骤

A)启动MatLab,在MatLab命令窗口中输入相应程序;

B)书写程序时,首先读取图像,一般调用MatLab自带的图像,如

camcraman.tif图像;再调用相应的图喙处理函数,设置参数;最后输

出处理后的图像;

C)Matlab自带图像存储路径为:Matlab安装路径\

toolbox\images\imdemos\,如果Matlab安装在C盘根目录F,则的自

带图像路径为:"C:\MATLAB7\toolbox\images\imdemos\";

1.*.m文件默认保存的文件夹为:Mallab安装路径\work\,如“C:\MATLAB7\

work\";

2.除Matlab自带的图像外,新添加的被处理图像一般与其*.m文件放在同一文

件夹中;

3.浏览源程序并理解含义;

A)运行,观察并截图记录显示结果;

B)运行过程中改变相应参数,观察结果图像,理解参数含义;

截图方法:键盘上PrintScreen键可截取整个屏幕,Alt+PrintScreen组合键可

截取活动窗口,粘贴到Windows附件中的画图工具中保存即可。另外也可自带专用

截图软件截取;

结束运行,退出程序,撰写实验报告。

三、实验报告要求

1.描述实验的基本步骤,用数据和图片给出各个步骤中取得的实验结果,并进

行必要的讨论,必须包括原始图像及其计算/处理后的图像。

2.实验报告中必须包含完整的图像处理过程、代码和结果及其分析;

3.处理前后的图像可以打印出来粘贴到实验报告上;

图像应有简单注释(程序中用title标记或用笔添加注释),且必须与程序代码对

应。

实验一Matlab图像处理基础

一、实验目的

1.了解Matlab的基本功能及操作方法

2.练习图像读写和显示函数的使用方法

3.掌握Matlab支持的五类图像的显示方法(灰度、索引、黑白、彩色等)

4.熟悉常用的图像文件格式与格式转换;

二、实验内容

1.图像的读写

A)图像读

RGB=imreadCngc6543a.jpg');

B)图像写

先从一个.mat文件中载入一幅图像,然后利用图像写函数imwrite,创建

一个.bmp文件,并将图像存入其中。

loadclown

whos

imwrite(X,map,'clown,bmp')

C)图像文件格式转换

bitmap=imread('clown.bmp','bmp');

imwrite(bitmapz'clown.png'z'png');

D)图像综合操作

利用matlab提供的函数将图像读入;编写程序实现对给定图像进行一定比

例的放大和缩小处理,在Mfile编辑器中写入以下程序,全速执行:

I=imread('roger.jpg');%读入图像

J=imresize(Iz10);%放大10倍

K=imresize(I,0.1);%缩小10倍

,

L=imrotate(Iz-10z'bilinear'z'crop);%逆时针旋转10°

subplot(2,2,l),imshow⑴,title。原图');%原图

subplot(2,2,2),imshow(J),title('放大10');%放大10倍

subplot(2,2,3),imshow(K),title。缩小0.1');%缩小10倍

subplot(2,2,4),imshow(L),title。逆时针旋转10°');%逆时针转10°

2.图像显示

A)二进制图像的显示

BWl=zeros(20,20);%创建仅包含0/1的双精度图像

BW1(2:2:18Z2:2:18)=1;

imshow(BWl/notruesize');

whos

BW2=uint8(BWl);

figure,imshow(BW2/notruesize')

BW3=BW2〜=0;%逻辑标志置为on

figureJmshow(BW3/notruesize')

whos

BW=imread('circles.png');

imshow(BW);

figurejmshow(^BW);

figure,imshow(BW,[l00;001]);

B)灰度图像的显示

I=imread('testpatl.tif');

J=filter2([l2;-l-2],I);

imshow(I)

figure,imshow。,口)

C)索引图像的显示

loadclown%装载一幅图像

imwrite(X,map/clown.bmp');%保存为bmp文件

imshow(X)

imshow(X,map)

D)RGB图像的显示

^imreadCflowers.tif');

imshow(I)

RGB=imreadCngc6543a.jpg');

figure,imshow(RGB)

imshow(I(:,:z3)%显示第3个颜色分量

E)多帧图像的显示

mri=uint8(zeros(128,128,1,27));%27帧文件初始化

forframe=l:27

[mri(:z:z:/frame)/map]=imread('mri.tif'zframe);%读入每一帧

end

imshow(mri(3),map);%显示第3帧

figure,imshow(mri(6),map);%显示第6帧

figurejmshow(mri(10),map);%显示第10帧

figure,imshow(mri(20),map);%显示第20帧

F)显示多幅图像

[Xlzmapl]=imread('forest.tif');

,

[X2zmap2]=imread('trees.tif);

subplot(l/2zl)/imshow(Xlzmapl)

subplot(lz2z2),imshow(X2zmap2)

subplot(l,2,l),subimage(Xl,mapl)

subplot(l,2,2),subimage(X2zmap2)

三、思考题

1.简述MatLab软件的特点。

2.MatLab软件可以支持哪些图像文件格式?

3.如何显示多帧图像的所有帧?如何根据多帧图像创建电影片段?

4.图像显示时,若不带参数'notruesize,,显示效果如何?

如何显示RGB图像的某•个颜色分量?

实验二图像运算

、实验目的

1.熟悉图像点运算和代数运算的实现方法

2.了解图像几何运算的简单应用

3.了解图像的邻域操作

、实验内容

1.图像点运算

读入图像'rice.png',通过图像点运算改变对比度。

rice=imread('rice.png');

subplot(131),imshow(rice)

I=double(rice);%转换为双精度类型

3=1*0.43+60;

rice2=uint8(J);%转换为uint8

subplot(132),imshow(rice2)

J=I*1.5-60;

rice3=uint8(J);%转换为uint8

subplot(133),imshow(rice3)

2.图像的代数运算

A)图像加法运算

I=imread('rice.png');

imshow(I)

J=imread(,cameraman.tif,);

figure,imshow(J)

K=imadd(IzJ);

figurejmshow(K)

K2=imadd(IzJ/uintl6');

figure,imshow(K2,口)

RGB=imread('flowers.tif');

RGB2=imadd(RGB,50);

imshow(RGB)

figure,imshow(RGB2)

RGB3=imadd(RGBz100);

figure,imshow(RGB3)

B)图像减法运算

I=imread('rice.png');

imshow(I)

background=imopen(Lstrel('disk',15));%估计背景图像

figure,imshow(background);

I2=imsubtract(I,background);%从原始图像中减去背景图像

figure,imshow(I2)

C)图像乘法运算

I=im「ead('mcon.tif');

J=immultiply(I,l.2);

K=immultiply[I,0.5);

imshow(I)

figureJmshow(J)

figureJmshow(K)

D)*图像除法运算

3.图像的几何运算

A)图像缩放

读入图像'trees.tif',改变图像大小,分别将原图像放大L5倍和缩小0.5

倍。

I=imread('trees.tif');

J=imresize(I,1.25);

K=imresize(I,0.8);

imshow(I)

figure,imshow(J)

figureJmshow(K)

Y=imresize(Iz[100450]);

figure,imshow(Y)

在matlab环境中,程序首先读取图像,然后调用图像缩放函数,设置相关

参数,再输出处理后的图像。

I=imread('cameraman.tif');

figure,imshow⑴;

scale=0.5;

J=imresize(Izscale);

figure,imshow(J);

B)图像旋转

将上述图像顺时针和逆时针旋转任意角度,观察显示效果。

^imreadCtrees.tif');

J=imrotate(I,30,'bilinear');

,,

Jl=imrotate(l/30/bilinear'zcrop');

imshow(I)

figure,imshow。)

figure,imshow(Jl)

J2=imrotate(lz-15,'bilinear');

figure,imshow(J2)

在matlab环境中,程序首先读取图像,然后调用图像旋转函数,设置相关

参数,再输出处理后的图像。

I=imread('cameraman.tif');

figure,imshow⑴;

theta=30;

K=imrotate(Iztheta);%Tryvaryingtheangle,theta.

figure,imshow(K)

C)图像剪切

通过交互式操作,从一幅图像中剪切一个矩形区域。

I=imread('trees.tif');

imshow(I);

U=imcrop;

figure,imshow(Il)

I2=imcrop(IJ3060120160]);

figure,imshow(I2)

4「图像的邻域操作

读入图像'tire.tif',分别使用函数nlfilte「和blkproc对图像进行滑动邻

域操作和分离邻域操作。

I=imread('tire.tif');

f=inline('max(x(:))');%构造复合函数

%滑动邻域操作

I2=nlfilter(I,[33]zf);

imshow(I)

figure,imshow(I2)

I=imread('tire.tif');

f=inline(,uint8(round(mean2(x)*ones(size(x))))');%构造复合函数

I2=blkproc(IJ8%滑动邻域操作

imshow(I)

figure,imshow(I2)

三、思考题

点运算和代数运算的实现方法各是怎样的?

实验三灰度变换增强

一、实验目的

1.熟悉matlab图像处理工具箱及直方图函数的使用;

2.了解灰度变换增强的Matlab实现方法

3.掌握宜方图灰度变换方法

4.理解和掌握直方图原理和方法;

二、实验内容

1.线段上像素灰度分布

读入灰度图像'debyel.tif',采用交互式操作,用improfile绘制一条线

段的灰度值。

imshow('debyel.tif')

improfile

读入RGB图像'flowers.tif',显示所选线段上红、绿、蓝颜色分量的分布

imshow('flowers.tif')

improfile

2.直方图变换

A)直方图显示

在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参

数,再输出处理后的图像。

I=imread('cameraman.tif');%读取图像

subplot(l,2,l),imshow⑴%输出图像

title('原始图像')%在原始图像中加标题

subplot。,2,2),imhist⑴%输出原图直方图

title,原始图像受方图')%在原图直方图上加标题

读入图像'rice.png',在一个窗口中显示灰度级n=64,128和256的图

像直方图。

I=imread('rice.png');

imshow(I)

figure,imhist(1,64)

figure,imhist(1,128)

B)直方图灰度调节

利用函数imadjust调解图像灰度范围,观察变换后的图像及其直方图的变

化。

I=imread('rice.png');

imshow(I)

figure,imhist(I)

J=imadjust(Iz[0,150.9],[01]);

figure,imhist(J)

figure,imshow(J)

I=imread('cameraman.tif);

imshow(I)

figurejmhist(I)

J=imadjust(I,[O0.2],[0.51]);

figure,imhist(J)

figurejmshow(J)

C)直方图均衡化

在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关

参数,再输出处理后的图像。

I=imread('cameraman.tif');%读取图像

subplot(2,2,l),imshow⑴%输出图像

title('原始图像')%在原始图像中加标题

subplot(2z2z3)zimhist(I)%)输出原图直方图

title('原始图像直方图')%在原图直方图上加标题

a=histeq(Iz256);%宜方图均衡化,灰度级为256

%输出均衡化后图像

subplot(2,2z2),imshow(a)

title。均衡化后图像')%在均衡化后图像中加标题

subplot(2,2,4),imhist(a)%输出均衡化后直方图

title。均衡化后图像直方图')%在均衡化后直方图上加标题

分别对图像'pout.tif'和'tire.tif'进行官方图均衡化处理,比较处理前

后图像及直方图分布的变化。

^imreadCpout.tif');

imshow(I)

figurezimhist(I)

J=histeq(I);

figure,imhist(J)

figureJmshow(J)

I=imread('tire.tif');

imshow(I)

figurejmhist(l)

J=histeq(I);

figure,imshow(J)

figure,imhist(J)

三、思考题

1.MATLAB程序的IPT中有哪些图像亮(灰)度变换函数?写出函数的语法。

直方图的物理含义是什么?

结合实验内容,定性评价直方图均衡增

强效果?

实验四空域滤波增强

一、实验目的

1.了解空域滤波增强的Matlab实现方法;

2.掌握噪声模拟和图像滤波函数的使用方法;

3.能够将给定图像-噪声,使用均值滤波器、中值滤波器对不同强度的高斯噪声

和椒盐噪声,进行滤波处理;

4.能够正确地评价处理的结果;并从理论上作出合理的解释。

二、实验内容

1.噪声模拟

利用函数imnoise给图像<eighl.tif,分别添加高斯(gaussian)噪声和椒盐(salt&

pepper)噪声。

I=imread('eight.tif');

imshow(I)

Il=imnoise(I/gaussian'z0z0.01);

figurezimshow(U)

I2=imnoise(I/salt&pepper');

figure,imshow(I2)

2.均值滤波和中值滤波

A)均值滤波

在matlab环境中,程序首先读取图像,然后调用图像增强()函数,设置

相关参数,再输出处理后的图像。

I=imread('cameraman.tif');

figurejmshow(l);

,

J=filter2(fspecial('averagez3),I)/255;

figureJmshow(J);

B)中值滤波

在matlab环境中,程序首先读取图像,然后调用图像增强(中值滤波)函

数,设置相关参数,再输出处理后的图像。

I=imread('cameraman.tif');

figurejmshow(I);

J=medfilt2(Iz[5,5]);

figure,imshow(J);

3.空域滤波

对上述噪声图像进行均值滤波和中值滤波,比较滤波效果。

I=imread(,Sample2-l.jpg,);

J=imnoise(I/gauss',0.02);%添加高斯噪声

%J=imnoise(I/salt&pepper',0.02);%添加椒盐噪声

K=filter2(fspecial('average'z3)/J)/255;%均值滤波3x3

L=filter2(fspecial('average',5),J)/255;%均值滤波5X5

M=medfilt2(Jz[33]);%中值滤波3X3模板

N=medfilt2(Jz[44]);%中值滤波4X4模板

imshow(I);

figure,imshow。);

figurejmshow(K);

figure,Imshow(L);

figure,imshow(M);

figurezimshow(N);

A)总结均值滤波和中值滤波的特点及使用场合。

均值滤波器是一种最常用的线性低通平滑滤波器。可抑制图像中的噪声,但同时

也使图像变得模糊

中值滤波器是一种最常用的非线性平滑滤波器。可消除图像中孤立的噪声点,

又可产生较少的模糊

B)*对图像,satum.tif采用」aplacian,高通滤波器进行锐化滤波。

^imreadCsaturn.tif');

imshow(I)

h=fspecial('laplacian');

I2=filter2(hzI);

figure,imshow(I2)

三、思考题

1.简述高斯噪声和啾盐噪声的特点。

2.结合实验内容,定性评价平均滤波器/中值滤波器对高斯噪声和椒盐噪声的

去噪效果?

3.结合实验内容,定性评价滤波窗口对去噪效果的影响?

4.图像亮(灰)度变换与空间滤波有什么不同?

实验五空间变换

一、实验目的

1.了解空间变换函数及图像匹配方法

二、实验内容

1.图像极值的处理方法

对于下图所示的图像矩阵A,利用函数imregionalmax寻找其局部极大值

A=[10101010101010101010;

10131313101011101110;

10131313101010111010;

10131313101011101110;

10101010101010101010;

10111010101818181010;

10101011101818181010;

10101110101818181010;

10111011101010101010;

10101010101011101010];

B=imregionalmax(A)

A)利用函数imextendedmax寻找像素值大于其邻域像素值2个单位的局部极

大值。

C=imextendedmax(A,2)

2.*创建一幅图像,求其距离矩阵。

bw=zeros(5,5);

bw(2z2)=l;bw(4z4)=l;

D=bwdist(bw)

centerl=-10;

center2=-centerl;

dist=sqrt(2*(2*centerl)A2);

radius=dist/2*1.4;

lims=[floor(centerl-1.2*radius)ceil(center2+1.2*radius)];

[xzy]=meshgrid(lims(l):lims(2));

bwl=sqrt((x-centerl).A2+(y-center2).A2)<=radius;

bw2=sqrt((x-center2).A2+(y-center2).A2)<=radius;

bwl=sqrt((x-centerl).A2+(y-centerl).A2)<=radius;

bw=bwl|bw2;

imshow(bw)

D=bwdist(bw);

figure,imshow(D,[])

Dl=bwdist(〜bw);

figure,imshow(Dl,[])

3.*使用伪彩色显示标记矩阵。

BW=[00000000;

01100111;

01i00Oil;

01100000;

00011000;

00011000;

00Oil000;

00000000]

X=bwlabel(BWz4)

RGB=label2rgb(Xz@jetz'k');

imshow(RGB/notruesize')

4.利用选择控制点实现图像匹配。

Matlab图像匹配的步骤:

将标准图像和待匹配图像读入Matlab;指定图像中的控制点对并保存;使用互

相关性进一步协调控制点对(可选);制定所需变换类型并根据控制点对推断变换参

数;变换未匹配的图像。

%读入待匹配图像和标准图像

unregistered=imread('westconcordaerial.png');

imshow(unregistered)

orthophoto=imread('westconcordorthophoto.png');

figure,imshow(orthophoto)

%选择图像中对应的控制点

cpselect(unregistered(:/:/l),orthophoto)

%保存控制点对

input_points

base_points

%使用相关性进一步协调控制点对

input_points_corr=cpcorr(input_pointszbase_points,unregistered

orthophoto);

input_points_corr

%根据控制点对推断空间变换参数

mytform=cp2tform(input_pointszbase_points/projective');

%变换未匹配的图像

registered=imtransform(unregisteredzmytform);

figurejmshow(registered)

实验六像变换与滤波器设计

一、实验目的

1.了解傅立叶变换、离散余弦变换及Radon变换在图像处理中的应用

2.了解Matlab线性滤波器的设计方法

二、实验内容

1.傅立叶变换

A)傅里叶变换基本操作

I=imread('at3_lm4_04.tif');

imshow(I);

title('源图像)

J=fft2(I);

figure,imshow(J);

title。傅立叶变换,);

%频移

JSh=fftshift(J);

figure,imshow(JSh);

title('傅立叶变换频移');

%直接傅立叶反变换

Ji=ifft2(J);

figure,imshow(Ji/256);

title('直接傅立叶变换');

%幅度

JA=abs(J);

□A=ifft2(JA);

figure,imshow(iJA/256);

title('幅度傅立叶反变换');

%相位

JP=angle(J);

□P=ifft2(JP);

figure,imshow(abs(iJP)*100);

title(相位傅立叶反变换’);

B)利用MATLAB软件实现数字图像傅立叶变换的程序

I=imread('原图像名.gif');%读入原图像文件

imshow(I);%显示原图像

fftl=fft2(l);%二维离散傅立叶变换

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

RR=real(sfftI);%取傅立叶变换的实部

II=imag(sfftI);%取傅立叶变换的虚部

A=sqrt(RR.人2+H.人2);%计算频谱幅值

A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225;

%归一化

figure;%设定窗口

imshow(A);%显示原图像的频谱

C)绘制一个二值图像矩阵,并将其傅立叶函数可视化。

f=zeros(30,30);

f(5:24,13:17)=1;

imshow(f/notruesize')

F=fft2(f);

F2=log(abs(F));

figurezimshow(F2,[-l5]/notruesize');colormap(jet);

F=fft2(f,256,256);%零填充为256X256矩阵

rigurezimshow(log(abs(F)),[-l5]/nolruesize');colormap(jel);

F2=fftshift(F);%将图像频谱中心由矩阵原点移至矩阵中心

figure,imshow(log(abs(F2)),[-l5]/notruesize');colormap(jet);

利用傅立叶变换分析两幅图像的相关性,定位图像特征。读入图像'text.tif',

抽取其中的字母‘a'。

bw=imread('text.tif');

a=bw(59:71z81:91);

imshow(bw);

figurejmshow(a);

^^1。佬2(m227\/).*依2(「0190(3,2),256,256)));%求相关性

figure,imshow(C,口);

thresh=max(C(:));

figurezimshow(C>thresh-10)

figurezimshow(C>thresh-15)

2.离散余弦变换(DCT)

A)使用dct2对图像'autumn.〔if'进行DCT变换。

RGB=imread(,autumn.tif,);

imshow(RGB)

I=rgb2gray(RGB);%转换为灰度图像

figurezimshow(I)

J=dct2(I);

figurejmshow(log(abs(J))z[]),colormap(jet(64));colorbar;

将上述DCT变换结果中绝对值小于10的系数舍弃,使用idct2重构图像并

与原图像比较。

RGB=imread('autumn.tif,);

I=rgb2gray(RGB);%转换为灰度图像

J=dct2(I);

figure,imshow(T)

K=idct2(J);

figure,imshow(K,[0255])

J(abs(J)<10)=0;%舍弃系数

K2=idct2(J);

figure,imshow(K2,[0255])

B)利用DCT变换进行图像压缩。

I=imread('cameraman.tif');

I=im2double(I);

T=dctmtx(8);

B=blkproc(Iz[8z8]z'Pl*x*R2'zTzT);

mask=[l1110000

11100000

11000000

10000000

00000000

00000000

00000000

00000000];

B2=blkproc(B,[88]/Pl.*x'/mask);

I2=blkproc(B2,[88]z'Pl*x*P2'zTzT);

imshow(I)

figurejmshow(I2)

3.Radon变换

使用Radon逆变换重建图像。

P=phantom(256);%创建256灰度级大脑图

imshow(P)

theta1=0:10:170;[Rlzxp]=radon(Pzthetal);%18个投影

theta2=0:5:175;[R2zxp]=radon(Pztheta2);%36个投影

theta3-0:2:178;[R3zxp]-radon(Pztheta3);%90个投影

figurejmagesc(theta3zxpzR3);colormap(hot);colorbar%使用逆变

换重构图像

Il=iradon(Rlr10);%用R1重构图像

I2=iradon(R2r5);%用R2重构图像

I3=iradon(R3r2);%用R3重构图像

figurezimshow(U)

figure,imshow(I2)

figure,imshow(T3)

4.*Matlab线形滤波器设计

采用频率变换方式,通过一维最优波纹FIR滤波器创建二维FIR滤波器

296)。

b=remez(10,[00.40.6l]z[l100]);

%阶次,频率向量,对应的理想幅频响应

h=ftrans2(b);

LHzwJ=freqz(b/lz64/whole');

colormap(jet(64))

plot(w/pi-lzfftshift(abs(H)));%使x轴取值0处对应曲线中心

figurezfreqz2(hz[3232])

三、思考题

1.傅里叶变换有哪些重要的性质?

2.简述傅立叶频谱被移的原理

3.简述Fourier系数幅度、相位的物理意义。

4.图像的二维频谱在显示和处理时应注意什么?

5.简述离散余弦变疾(DCT)的原理。

实验七形态学操作

一、实验目的

1.了解膨胀和腐蚀的Matlab实现方法

2.掌握图像膨胀、腐蚀、开启、闭合等形态学操作函数的使用方法

3.了解二进制图像的形态学应用

二、实验内容

1.图像膨胀

A)对包含矩形对象的二进制图像进行膨胀操作。

BW=zeros(9z10);

BW(4:6,4:7)=l;

imshow(BW/notruesize')

se=strel('square'/3);%正方形结构元素

BW2=imdilate(BW,se);

figure,imshow(BW2/notruesize')

改变上述结构元素类型(如:line,diamond,disk等),重新进行膨胀操作。

对图像'text.tif'进行上述操作,观察不同结构元素膨胀的效果。

BW3=imread('text.tif');

imshow(BW3)

se2=strel('line'/ll/90);%线型结构元素

BW4=imdilate(BW3zse2);

figure,imshow(BW4)

2.图像腐蚀

A)对图像4circbw.tifJ进行腐蚀操作。

BWl=imread('circbw.tif');

se=strel('arbitrary'zeye(5));

BW2=imerode(BWl,se);

imshow(BWl)

figure,imshow(BW2)

B)对图像'text.tif'进行腐蚀操作。

BW=imread('text.tif');

se=strel('line'zllz90);

BW2=imerode(BWzse);

imshow(BW)

figure,imshow(BW2)

3.膨胀与腐蚀的综合使用

A)从原始图像'circbw.lif,中删除电流线,仅保留芯片对象。

方法一:先腐蚀(imerode),再膨胀(imdilate);

BWl=imread('circbw.tif');

imshow(BWl)

se=strel('rectangle'z[4O30]);%选择适当大小的矩形结构元素

BW2=imerode(BWl,se);%先腐蚀,删除较细的直线

figure,imshow(BW2)

BW3=imdilate(BW2zse);%)再膨胀,恢复矩形的人小

figurezimshow(BW3)

方法二:使用形态开启函数(imopen)。

BWl=imread('circbw.tif');

imshow(BWl)

se=strel('rectangle'z[4030]);

BW2=imopen(BWl,se);%开启操作

figure,imshow(BW2)

改变结构元素的大小,重新进行开启操作,观察处理结果。

z

se=strel('rectanglez[2010]);

,

se=strel('rectangle/[5040]);

置结构元素大小为[43],同时观察形态开启(imopen)与闭合(imclose)的

效果,总结形态开启与闭合在图像处理中的作用。

I=imread('circbw.tif');

imshow(I)

se=strel('rectangle'z[43]);

Il=imopen(Izse);%开启操作

I2=imclose(I/se);%闭合操作

figure,imshow(Il)

figurejmshow(12)

B)综合实例

I=imread('Plane2.jpg,);

level=graythresh(I);%得到合适的阈值

bw=im2bw(IJevel);%二值化

SE=strel('square',3);%设置膨胀结构元素

BW1=imdilate(bwzSE);%膨胀

SEI=strel('arbitrary',eye(5));%设置腐蚀结构元素

BW2=imerode(bw,SEl);%腐蚀

BW3=bwmorph(bw,'open');%开运算

BW4=bwmorph(bw,'close');%闭运算

imshow(I);

figurejmshow(bw);

figurejmshow(BWl);

figure,imshow(BW2);

figurezimshow(BW3);

figure,imshow(BW4);

4.*高帽与低帽变换

读入图像'pearlite.tif',分别显示其高帽变换与低帽变换结果,并与原图

像比较。(设se=st「el('disk',5);)。

^imreadCpearlite.tif');

subplot(221),imshow(I)

se=strel('disk',5);

J=imtophat(I,se);

subplot(222),imshow(J)

K=imbothat(I,se);

subplot(223)zimshow(K)

L=imsubtract(imadd(JzI)zK);

subplot(224),imshow(L)

A)要求显示在一个窗口中。

三、思考题

1.结合实验内容,评价腐蚀运算与膨胀运算的效果。

结合实验内容,评价开运算与闭运算的

效果。

腐蚀、膨胀、开、闭运算的适用条件是

什么?

实验八像复原

一、实验目的

1.掌握噪声模拟和图像滤波函数的使用方法

2.了解图像复原的Matlab实现方法

二、实验内容

1.模糊与噪声

A)对图像'flowers.tif'分别采用运动PSF和均值滤波PSF进行模糊。

^imreadCflowers.tif');

I=I(10+[l:256],222+[l:256],:);%剪切图像

imshow(I)

len=30;%运动位移

theta=10;%运动角度

PSF=fspecial('motion'Jenztheta);

blurred=imfilter(I/PSP/circular'/conv');

figurezimshow(blurred)

I=imread('flowers.tif');

imshow(I)

H=fspecial('motion'/50/45);%运动PSP

motionblur=imfilter(IzH);

figurezimshow(motionblur)

H=fspecial('disk',10);%均值滤波PSP

averageblur=imfilter(IzH);

figurezimshow(averageblur)

B)在上述模糊图像上再添加噪声

J=imnoise(motionblui;'salt&pepper');

figure,imshow(J)

2.维纳滤波复原

A)使用维纳滤波复原函数deconvwnr复原无噪声模糊图像。

len=30;theta=10;PSF=fspecial('motion,Jen,theta);

blurred=imfilter(IzPSF,'circular'/conv');

figure,imshow(blurred)

wnrl=deconvwnr(blurredzPSF);%真实PSF

figure,imshow(wnrl)

%非真实PSF

wnr2=deconvwnr(blurred/special('motion'z2*lenztheta));

figure,imshow(wnr2)

%非真实PSF

wnr3=deconvwnr(blurredzfspecial('motion'zlen,2*theta));

figure,imshow(wnr3)

B)*使用维纳滤波复原函数dcconvwnr复原模糊噪声图像。

,

PSF=fspecial('motionzlenztheta);

blurred=imfilter(IzPSF/circular'/conv');

noise=0.1*randn(size(I));

BlurredNoisy=imadd(blurred,im2uint8(noise));

figure,imshow(BlurredNoisy)

wnr4=deconvwnr(BlurredNoisyzPSF);

figure,imshow(wnr4)

C)*设置信噪比和相关函数的维纳滤波复原(pl79图9.12)o

NSR=sum(noise(:).A2)/sum(im2double(I(:)).A2);%计算信噪

wnr5=deconvwnr(BlurredNoisyzPSFzNSR);

figurezimshow(wnr5)%设置信噪比的复原结果

NP=abs(fftn(noise)).A2;%噪声能量谱密度

NCORR=fftshift(real(ifftn(NP)));%噪声自相关函数

IP=abs(fftn(im2double(I))).A2;%图像能量谱密度

ICORR=fftshift(real(ifftn(IP)));%图像自相关函数

wnr6=deconvwnr(BlurredNoisyzPSFzNCORR,ICORR);

figure,imshow(wnr6)%设置自相关函数的复原结果

三、思考题

1.常见的图像退化模型有哪些种类?

不同的PSF对复原效果有什么影响?

实验九图像分析与理解及图像压缩

一、实验目的

1.了解DCT变换在图像压缩中的应用

2.掌握边缘检测的Matlab实现方法

3.了解用四叉数分解函数进行区域分割的方法

4.了解Matlab区域操作函数的使用方法

5.了解图像分析和理解的基本方法

二、实验内容

1.图像分析与理解

A)边缘检测

<i>使用edge函数对图像'rice.png'进行边缘检测。

^imreadCrice.png');

imshow(I)

bwl=edge(I/roberts');

bw2=edge(I/sobel');

bw3=edge(I/prewitt');

bw4=edge(I/canny');

bw5=edge(I/log');

figure,imshow(bwl)

figure,imshow(bw2)

figure,imshow(bw3)

figure,imshow(bw4)

figure,imshow(bw5)

<ii>使用edge函数对图像4cameraman.pngJ进行边缘检测。

在matlab环境中,程序首先读取图像,然后调用图像边缘检测(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论