数字图像处理实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字图像处理实验报告
中南⼤学
数字图像处理实验报告
⽬录
⼀、实验⼀:数字图像基本操作及灰度调整
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.实验⽬的
1) 掌握读、写图像的基本⽅法。

2) 掌握MATLAB 语⾔中图像数据与信息的读取⽅法。

3) 理解图像灰度变换处理在图像增强的作⽤。

4) 掌握绘制灰度直⽅图的⽅法,理解灰度直⽅图的灰度变换及均衡化的⽅法。

2.实验原理
1. 灰度变换
灰度变换是图像增强的⼀种重要⼿段,它常⽤于改变图象的灰度范围及分布,是图象数字化及图象显⽰的重要⼯具。

1) 图像反转
灰度级范围为[0, L-1]的图像反转可由下式获得
r L s --=1
2) 对数运算:有时原图的动态范围太⼤,超出某些显⽰设备的允许动态范
围,如直接使⽤原图,则⼀部分细节可能丢失。

解决的⽅法是对原图进⾏灰度压缩,如对数变换:
s = c log(1 + r ),c 为常数,r ≥ 0
3) 幂次变换:
0,0,≥≥=γγc cr s
4) 对⽐拉伸:在实际应⽤中,为了突出图像中感兴趣的研究对象,常常要求
局部扩展拉伸某⼀范围的灰度值,或对不同范围的灰度值进⾏不同的拉伸处理,即分段线性拉伸:
其对应的数学表达式为:
2. 直⽅图均衡化
灰度直⽅图的横坐标是灰度级,纵坐标是该灰度级出现的频度,它是图像最基本的统计特征。

依据定义,在离散形式下,⽤r k 代表离散灰度级,⽤p r (r k )代表p r (r ),并且有下式成⽴:
n
n
r P k k r =)( 1,,2,1,010-=≤≤l k r k
式中:n k 为图像中出现r k 级灰度的像素数,n 是图像像素总数,⽽n k /n 即为频数。

直⽅图均衡化处理是以累积分布函数变换法为基础的直⽅图修正法。

假定变换函数为
ωωd p r T s r r
)()(0
==
(a) Lena 图像 (b) Lena 图像的直⽅图
图1.2 Lena 图像及直⽅图
当灰度级是离散值时,可⽤频数近似代替概率值,即
1,,1,010)(-=≤≤=
l k r n
n r p k k k r
式中:l 是灰度级的总数⽬,p r (r k )是取第k 级灰度值的概率,n k 是图像中出现第k 级灰度的次数,n 是图像中像素总数。

所以积分可以表⽰为下列累计分布函数(cumulative distribution function, CDF)
1,,1,01
0)
()(0
-=≤≤===∑∑
==l k r r p n
n r T s j k
j j r k
j j k k
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。

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');
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
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(g1);
g3=im2uint8(mat2gray(log(1+double(I))));
图中对图像⽂件
进⾏了基本的灰度变换,包括⽤式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);
原图像中⽬标物的灰度主要集中于⾼亮度部分,⽽且象素总数较多,所占的灰度等级较少。

经过直⽅图均衡后,⽬标物的所占的灰度等级得到扩展,对⽐度加强,使整个图像得到增强。

数字图像均衡化后,其直⽅图并⾮完全均匀分布,这是因为图像的象素个数和灰度等级均为离散值,⽽且均衡化使灰度级并归。

因此,均衡化后,其直⽅图并⾮完全均匀分布。

3)对B进⾏如图所⽰的分段线形变换处理,试⽐较与直⽅图均衡化处理的
异同。

x1=0:0.01:0.125;
x2=0.125:0.01:0.75;
x3=0.75:0.01:1;
y1=2*x1;
y2=0.25+0.6*(x2-0.125);
y3=0.625+1.5*(x3-0.75);
x=[x1,x2,x3];
y=[y1,y2,y3];
subplot(2,2,4);
plot(x,y);
通过在所关⼼范围内为所有灰度值指定⼀个较⾼值,⽽为其他灰度指定⼀个较低值,或将所需范围变亮,分段线性变换可提⾼图像中特定灰度范围的亮度,常⽤于图像特征值的提取。

这⾥将原始图像位于[0.125,0.75]间的灰度值调低,放⼤其余的灰度值,突出显⽰图像低频域和⾼频域的部分。

实验⼆:数字图像的空间域滤波和频域滤波
1.实验⽬的
1.掌握图像滤波的基本定义及⽬的。

2.理解空间域滤波的基本原理及⽅法。

3.掌握进⾏图像的空域滤波的⽅法。

4.掌握傅⽴叶变换及逆变换的基本原理⽅法。

5.理解频域滤波的基本原理及⽅法。

6.掌握进⾏图像的频域滤波的⽅法。

2.实验基本原理
1.空间域增强
空间域滤波是在图像空间中借助模板对图像进⾏领域操作,处理图像每⼀个像素的取值都是根据模板对输⼊像素相应领域内的像素值进⾏计算得到的。

空域滤波基本上是让图像在频域空间内某个范围的分量受到抑制,同时保证其他分量不变,从⽽改变输出图像的频率分布,达到增强图像的⽬的。

空域滤波⼀般分为线性滤波和⾮线性滤波两类。

线性滤波器的设计常基于对傅⽴叶变换
的分析,⾮线性空域滤波器则⼀般直接对领域进⾏操作。

各种空域滤波器根据功能主要分为
平滑滤波器和锐化滤波器。

平滑可⽤低通来实现,平滑的⽬的可分为两类:⼀类是模糊,⽬
的是在提取较⼤的⽬标前去除太⼩的细节或将⽬标内的⼩肩端连接起来;另⼀类是消除噪
声。

锐化可⽤⾼通滤波来实现,锐化的⽬的是为了增强被模糊的细节。

结合这两种分类⽅法,
可将空间滤波增强分为四类:
线性平滑滤波器(低通)
⾮线性平滑滤波器(低通)
线性锐化滤波器(⾼通)
⾮线性锐化滤波器(⾼通)
空间滤波器都是基于模板卷积,其主要⼯作步骤是:
1)将模板在图中移动,并将模板中⼼与图中某个像素位置重合;
2)将模板上的系数与模板下对应的像素相乘;
3)将所有乘积相加;
4)将和(模板的输出响应)赋给图中对应模板中⼼位置的像素。

2.平滑滤波器
1)线性平滑滤波器
线性低通平滑滤波器也称为均值滤波器,这种滤波器的所有系数都是正数,
对3×3
的模板来说,最简单的是取所有系数为1,为了保持输出图像任然在原来图像的灰度值范围内,模板与象素邻域的乘积都要除以9。

MATLAB 提供了fspecial 函数⽣成滤波时所⽤的模板,并提供filter2 函数⽤指定的滤
波器模板对图像进⾏运算。

函数fspecial 的语法格式为:
h=fspecial(type);
h=fspecial(type,parameters);
其中参数type 指定滤波器的种类,parameters 是与滤波器种类有关的具体参数。

表2.1 MATLAB中预定义的滤波器种类
MATLAB 提供了⼀个函数imnoise 来给图像增添噪声,其语法格式为:
J=imnoise(I,type);
J=imnoise(I,type,parameters);
参数type 指定噪声的种类,parameters 是与噪声种类有关的具体参数。

参数的种类见
表2.2。

表2.2 噪声种类及参数说明
2)⾮线性平滑滤波器
中值滤波器是⼀种常⽤的⾮线性平滑滤波器,其滤波原理与均值滤波器⽅法类似,但计
算的⾮加权求和,⽽是把领域中的图像的象素按灰度级进⾏排序,然后选择改组的中间值作为输出象素值。

MATLAB 提供了medfilt2 函数来实现中值滤波,其语法格式为:
B=medfilt2(A,[m n]);
B=medfilt2(A);
其中,A 是原图象,B 是中值滤波后输出的图像。

[m n]指定滤波模板的⼤⼩,默认模
板为3×3。

3.锐化滤波器
图像平滑往往使图像中的边界、轮廓变得模糊,为了减少这类不利效果的影响,需要利
⽤图像锐化技术,使图像的边缘变得清晰。

1)线性锐化滤波器
线性⾼通滤波器是最常⽤的线性锐化滤波器。

这种滤波器的中⼼系数都是正的,⽽周围
的系数都是负的,所有的系数之和为0。

对3×3 的模板来说,典型的系数取值为:
[-1 -1 -1;
-1 8 -1;
-1 -1 -1]
事实上这是拉普拉斯算⼦。

语句h=-fspecial(‘laplacian’,0.5)得到的拉普拉斯算⼦为:
h =-0.3333 -0.3333 -0.3333
-0.3333 2.6667 -0.3333
-0.3333 -0.3333 -0.3333
2)⾮线性锐化滤波
邻域平均可以模糊图像,因为平均对应积分,所以利⽤微分可以锐化图像。

图像处理中
最常⽤的微分⽅法是利⽤梯度。

常⽤的空域⾮线性锐化滤波微分算⼦有sobel 算⼦、prewitt 算⼦、log 算⼦等。

4.频域增强
频域增强是利⽤图像变换⽅法将原来的图像空间中的图像以某种形式转换到其他空间
中,然后利⽤该空间的特有性质⽅便地进⾏图像处理,最后再转换回原来的图像空间中,从
⽽得到处理后的图像。

频域增强的主要步骤是:
选择变换⽅法,将输⼊图像变换到频域空间。

在频域空间中,根据处理⽬的设计⼀个转移函数,并进⾏处理。

将所得结果⽤反变换得到增强的图像。

常⽤的频域增强⽅法有低通滤波和⾼通滤波。

5.低通滤波
图像的能量⼤部分集中在幅度谱的低频和中频部分,⽽图像的边缘和噪声对应于⾼频部
分。

因此能降低⾼频成分幅度的滤波器就能减弱噪声的影响。

由卷积定理,在频域实现低通
滤波的数学表达式:
G(u,v) =H(u,v)F(u,v)
1)理想低通滤波器(ILPF)
2)巴特沃斯低通滤波器(BLPF)
3)指数型低通滤波器(ELPF)
6.⾼通滤波
由于图像中的细节部分与其⾼频分量相对应,所以⾼通滤波可以对图像进⾏锐化处理。

⾼通滤波与低通滤波相反,它是⾼频分量顺利通过,使低频分量受到削弱。

⾼通滤波器和低通滤波器相似,其转移函数分别为:
1)理想⾼通滤波器(IHPF)
2)巴特沃斯⾼通滤波器(BLPF)
3)指数型⾼通滤波器(ELPF)
图像经过⾼通滤波处理后,会丢失许多低频信息,所以图像的平滑区基本上会消失。


以,可以采⽤⾼频加强滤波来弥补。

⾼频加强滤波就是在设计滤波传递函数时,加上⼀
个⼤于0⼩于1的常数c,即:
H′(u,v) =H(u,v)+c
3.实验内容与要求
1.平滑空间滤波:
1)读出eight.tif这幅图像,给这幅图像分别加⼊椒盐噪声和⾼斯噪声后
并与前⼀张图
显⽰在同⼀图像窗⼝中。

2)对加⼊噪声图像选⽤不同的平滑(低通)模板做运算,对⽐不同模板所
要求在同⼀窗⼝中显⽰。

3)使⽤函数imfilter时,分别采⽤不同的填充⽅法(或边界选项,如零填充、’replicate’、’symmetric’、’circular’)进⾏低通滤波,显⽰处理后的图像。

4)运⽤for循环,将加有椒盐噪声的图像进⾏10次,20次均值滤波,查
看其特点,显
⽰均值处理后的图像(提⽰:利⽤fspecial函数的’average’类型⽣成均值滤波器)。

5)对加⼊椒盐噪声的图像分别采⽤均值滤波法,和中值滤波法对有噪声的
图像做处
理,要求在同⼀窗⼝中显⽰结果。

6)⾃⼰设计平滑空间滤波器,并将其对噪声图像进⾏处理,显⽰处理后的
图像。

2.锐化空间滤波
1)读出blurry_moon.tif这幅图像,采⽤3×3的拉普拉斯算⼦w = [ 1, 1,
1; 1 – 8 1; 1, 1,
1]对其进⾏滤波。

2)编写函数w = genlaplacian(n),⾃动产⽣任⼀奇数尺⼨n的拉普拉斯算
⼦,如5×5
的拉普拉斯算⼦
w = [ 1 1 1 1 1
1 1 1 1 1
1 1 -24 1 1
1 1 1 1 1
1 1 1 1 1]
3)分别采⽤5×5,9×9,15×15和25×25⼤⼩的拉普拉斯算⼦对
blurry_moon.tif进
⾏锐化滤波,并利⽤式2
=-?完成图像的锐化增强,观
g x y f x y f x y
(,)(,)(,)
察其有何不同,要求在同⼀窗⼝中显⽰。

4)采⽤不同的梯度算⼦对blurry_moon.tif进⾏锐化滤波,并⽐较其效果。

5)⾃⼰设计锐化空间滤波器,并将其对噪声图像进⾏处理,显⽰处理后的
图像;
3.傅⽴叶变换
1)读出woman.tif这幅图像,对其进⾏快速傅⽴叶变换,分别显⽰其幅度
图像。

仅对相位部分进⾏傅⽴叶反变换后查看结果图像。

2)仅对幅度部分进⾏傅⽴叶反变换后查看结果图像。

3)将图像的傅⽴叶变换F置为其共轭后进⾏反变换,⽐较新⽣成图像与原
始图像的差
异。

4.平滑频域滤波
1)设计理想低通滤波器、巴特沃斯低通滤波器和⾼斯低通滤波器,截⾄频
率⾃选,分
别给出各种滤波器的透视图。

2)读出test_pattern.tif这幅图像,分别采⽤理想低通滤波器、巴特沃斯
低通滤波器和⾼
斯低通滤波器对其进⾏滤波(截⾄频率⾃选),再做反变换,观察不同的截⽌频率下采⽤不同低通滤波器得到的图像与原图像的区别,特别注意振铃效应。

(提⽰:1)在频率域滤波同样要注意到填充问题;2)注意到(-1)x+y;)
5.锐化频域滤波
1)设计理想⾼通滤波器、巴特沃斯⾼通滤波器和⾼斯⾼通滤波器,截⾄频
率⾃选,分
别给出各种滤波器的透视图。

2)读出test_pattern.tif这幅图像,分别采⽤理想⾼通滤波器、巴特沃斯
⾼通滤波器和⾼
斯⾼通滤波器对其进⾏滤波(截⾄频率⾃选),再做反变换,观察不同的截⽌频率下采⽤不同⾼通滤波器得到的图像与原图像的区别。

4.实验具体实现
1.平滑空间滤波:
1)读出eight.tif这幅图像,给这幅图像分别加⼊椒盐噪声和⾼斯噪声后
并与前⼀张图显⽰在同⼀图像窗⼝中。

I=imread('eight.tif');
imshow(I);
J = imnoise(I,'salt & pepper',0.05); %noise density=0.05
K= imnoise(I,'gaussian',0.01,0.01);
图2.1 初始图像及椒盐噪声图像、⾼斯噪声污染图
2)对加⼊噪声图像选⽤不同的平滑(低通)模板做运算,对⽐不同模板所
形成的效果,要求在同⼀窗⼝中显⽰。

H = fspecial('sobel');
Sobel = imfilter(I,H,'replicate');
H = fspecial('laplacian',0.4);
lap = imfilter(I,H,'replicate');
H = fspecial('gaussian',[3 3],0.5);
gaussian = imfilter(I,H,'replicate');
图2.2 原图像及各类低通滤波处理图像
3)使⽤函数imfilter时,分别采⽤不同的填充⽅法(或边界选项,如零填
充、’replicate’、’symmetric’、’circular’)进⾏低通滤波,显⽰处理后的图像。

originalRGB = imread('peppers.png');
h = fspecial('motion', 50, 45); %motion blurred
filteredRGB = imfilter(originalRGB, h);
boundaryReplicateRGB = imfilter(originalRGB, h, 'replicate'); boundary0RGB = imfilter(originalRGB, h, 'x');
boundary0RGB = imfilter(originalRGB, h, 0);
boundarysymmetricRGB = imfilter(originalRGB, h, 'symmetric'); boundarycircularRGB = imfilter(originalRGB, h, 'circular');
图2.3 原图像及运动模糊图像
图2.4 函数imfilter各填充⽅式处理图像
4)运⽤for循环,将加有椒盐噪声的图像进⾏10次,20次均值滤波,查看
其特点,显⽰均值处理后的图像。

J = imnoise(I,'salt & pepper',0.05);
h=fspecial('average'); %Averaging Filtering
J1=imfilter(J,h);
for i=1:10
J1=imfilter(J,h);
end
for i=1:20
J2=imfilter(J,h);
图2.5 椒盐噪声污染图像经10次、20次均值滤波图像
由图2.5可得,20次滤波后的效果明显好于10次滤波,但模糊程度也更强。

5)对加⼊椒盐噪声的图像分别采⽤均值滤波法,和中值滤波法对有噪声的图像做处理,要求在同⼀窗⼝中显⽰结果。

h=fspecial('average'); %Averaging Filtering
J1=imfilter(J,h);
J2=medfilt2(J); %Median Filtering
图2.6 椒盐噪声污染图像及均值、中值滤波图像
从图2.6中可以看出,对于椒盐噪声污染的图像处理,中值滤波效果要明显好于均值滤波。

经均值滤波器处理后的图像⽐均值滤波器中结果图像更加模糊。

6)设计平滑空间滤波器,并将其对噪声图像进⾏处理,显⽰处理后的图像。

domain=[0 0 8 0 0;
0 0 8 0 0;
8 8 8 8 8;
0 0 8 0 0;
0 0 8 0 0];
K1= ordfilt2(J,5,domain);。

相关文档
最新文档