数字图像处理实验报告
学院:信息院
姓名:汪才华
学号:0902061305
指导老师:梁毅雄
时间:2009.6.1
0
目录
实验一:数字图像基本操作及灰度调整
1.实验目的****************************************1
2.实验基本原理************************************1
3.实验内容与要求**********************************3
4. 实验具体实现************************************4
实验二:数字图像的空间域滤波和频域滤波
1.实验目的****************************************9
2.实验基本原理************************************9
3.实验内容与要求**********************************12
4. 实验具体实现************************************14
实验三:图像分割与边缘检测
1.实验目的****************************************32
2.实验基本原理************************************32
3.实验内容与要求**********************************34
4. 实验具体实现************************************35
实验四:数学形态学及其应用
1.实验目的****************************************39
2.实验基本原理************************************39
3.实验内容与要求**********************************41
4. 实验具体实现************************************42
1
实验一:数字图像基本操作及灰度调整
1.实验目的
1) 掌握读、写图像的基本方法。
2) 掌握 MATLAB 语言中图像数据与信息的读取方法。
3) 理解图像灰度变换处理在图像增强的作用。
4) 掌握绘制灰度直方图的方法,理解灰度直方图的灰度变换及均衡化的方法。
2.实验原理
1. 灰度变换
灰度变换是图像增强的一种重要手段,它常用于改变图象的灰度范围及分布,是图象数
字化及图象显示的重要工具。
1) 图像反转
灰度级范围为[0, L-1]的图像反转可由下式获得
1
r
L
s
2) 对数运算:有时原图的动态范围太大,超出某些显示设备的允许动态范围,如直接
使用原图,则一部分细节可能丢失。解决的方法是对原图进行灰度压缩,如对数变
换:
3) 幂次变换:
s = clog(1 + r),c为常数,r≥ 0
s
cr
,
c
,0
0
4) 对比拉伸:在实际应用中,为了突出图像中感兴趣的研究对象,常常要求局部扩展
拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理,即分段线性
拉伸:
其对应的数学表达式为:
2. 直方图均衡化
灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的频度,它是图像最基本的统计
2
特征。依据定义,在离散形式下, 用 rk 代表离散灰度级,用 pr(rk)代表 pr(r),并且有下式
成立:
(
rP
r
k
)
n
k
n
0
rk
1
k
,2,1,0
,
l
1
式中:nk 为图像中出现 rk 级灰度的像素数,n 是图像像素总数,而 nk/n 即为频数。
直方图均衡化处理是以累积分布函数变换法为基础的直方图修正法。假定变换函数为
)(
rTs
r
0
p
r
(
d
)
(a) Lena图像
(b) Lena图像的直方图
图1.2 Lena图像及直方图
当灰度级是离散值时,可用频数近似代替概率值,即
(
rp
r
k
)
n
k
n
0
r
k
1
k
,1,0
,
l
1
式中:l 是灰度级的总数目,pr(rk)是取第 k级灰度值的概率,nk 是图像中出现第 k 级
灰度的次数,n 是图像中像素总数。
所以积分可以表示为下列累计分布函数(cumulative distribution function, CDF)
s
k
(
rT
k
)
k
j
0
n
j
n
k
j
0
(
rp
r
j
)
0
r
j
1
k
,1,0
,
l
1
3、实验内容与要求
复制若干图形文件(如 forest.tif 和 b747.jpg)至 MATLAB 目录下 work 文件夹中。
1. 熟悉 MATLAB 语言中对图像数据读取,显示等基本函数
特别需要熟悉下列命令:熟悉 imread()函数、imwrite()函数、size()函数、Subplot
()函数、Figure()函数。
1) 将 MATLAB 目录下 work 文件夹中的 forest.tif 图像文件读出.用到 imread,imfinfo
等文件,观察一下图像数据,了解一下数字图像在 MATLAB 中的处理就是处理一个矩阵。
将这个图像显示出来(用 imshow)。尝试修改 map 颜色矩阵的值,再将图像显示出来,观
察图像颜色的变化。
2) 将 MATLAB 目录下 work 文件夹中的 b747.jpg 图像文件读出,用 rgb2gray()将其
转化为灰度图像,记为变量 B。
3
2. 图像灰度变换处理在图像增强的作用
读入不同情况的图像,请自己编程和调用 Matlab 函数用常用灰度变换函数对输入图像
进行灰度变换,比较相应的处理效果。
3. 绘制图像灰度直方图的方法,对图像进行均衡化处理
请自己编程和调用 Matlab 函数完成如下实验。
1) 显示 B 的图像及灰度直方图,可以发现其灰度值集中在一段区域,用 imadjust 函
数将它的灰度值调整到[0,1]之间,并观察调整后的图像与原图像的差别,调整后的灰度直
方图与原灰度直方图的区别。
2) 对 B 进行直方图均衡化处理,试比较与源图的异同。
3) 对 B 进行如图所示的分段线形变换处理,试比较与直方图均衡化处理的异同。
图1.1 分段线性变换函数
4. 实验具体实现
1. 熟悉 MATLAB 语言中对图像数据读取,显示等基本函数
1) 文件读取与信息显示:
load trees;
[X,map]=imread('forest.tif');
subimage(X,map);
I=imread('forest.tif');
imshow(I);
imfinfo('forest.tif');
4
ans =
Filename:
'F:\MATLAB\R2007a\toolbox\images\imdemos\forest.tif'
FileModDate: '04-Dec-2000 13:57:58'
FileSize: 124888
Format: 'tif'
FormatVersion: []
Width: 447
Height: 301
BitDepth: 8
ColorType: 'indexed'
FormatSignature: [73 73 42 0]
ByteOrder: 'little-endian'
NewSubFileType: 0
BitsPerSample: 8
Compression: 'PackBits'
PhotometricInterpretation: 'RGB Palette'
StripOffsets: [17x1 double]
SamplesPerPixel: 1
RowsPerStrip: 18
StripByteCounts: [17x1 double]
XResolution: 72
YResolution: 72
ResolutionUnit: 'Inch'
Colormap: [256x3 double]
PlanarConfiguration: 'Chunky'
TileWidth: []
TileLength: []
TileOffsets: []
TileByteCounts: []
Orientation: 1
FillOrder: 1
GrayResponseUnit: 0.0100
MaxSampleValue: 255
5
MinSampleValue: 0
Thresholding: 1
ImageDescription: 'Carmanah Ancient Forest, British Columbia, Canada'
2) map 颜色矩阵的修改
[X,map]=imread('forest.tif');
map1=map+map;
subimage(X,map1);
新的颜色矩阵值变成原文件的 2 倍,图像明显变亮,颜色的 R、G、B 值增强。
3) 灰度图像的转化
RGB=imread('b747.jpg');
B=rgb2gray(RGB);
2. 图像灰度变换
处理在图像增
强的作用
g1=imadjust(I,[0
1],[1 0]);
g2=imcomplement(g
1);
g3=im2uint8(mat2gr
ay(log(1+double(I))))
6
;
图中对图像文件进行了基本的灰度变换,包括用式 s = L – 1 – r 得到的图像反转,对反
转图像的求补,以及对数变换的采用。
3. 绘制图像灰度直方图的方法,对图像进行均衡化处理
1) 图像灰度直方图的显示与灰度调整
imhist(B);
J = imadjust(B,[],[0 1]);
imhist(J);
subimage(J);
在原始图像中,直方图的组成成分集中在高灰度等级(亮)一侧,且图像灰度范围为[0,1],
故将灰度值调整到[0,1]间后直方图无明显变化。类似的,将灰度值调整到[0,0.5]时,整个图
像变暗,直方图横向压缩 1 倍。
2) 对 B 进行直方图均衡化处理,试比较与原图的异同。
I = imread('pout.tif');
[J,T] = histeq(I);
figure,plot((0:255)/255,T);
原图像中目标物的灰度主要集中于高亮度部分,而且象素总数较多,所占的灰度等级
较少。经过直方图均衡后,目标物的所占的灰度等级得到扩展,对比度加强,使整个图像得
7