搜索
您的当前位置:首页正文

图像处理实验报告

来源:二三娱乐


实 验 报 告

实验课程名称: 数字图像处理

班级: 学号: 姓名:

实验名称 实验一: 图像的二维离散 傅立叶变换 实验二: 图像的增强 实验三 圆形物体的 图像分割与分析 报告规范程度(10分) 实验过程与结果(10分) 实验成绩 平均成绩 注:1、每个实验中各项成绩按照10分制评定,每个实验成绩为两项总和20分。

2、平均成绩取三个实验平均成绩。

2016年 4 月18日

实验一 图像的二维离散傅立叶变换

一、实验目的

掌握图像的二维离散傅立叶变换以及性质 二、实验要求

1) 建立输入图像,在6464的黑色图像矩阵的中心建立1616的白色矩形图像点阵,

形成图像文件。对输入图像进行二维傅立叶变换,将原始图像及变换图像(三维、中心化)都显示于屏幕上。

2) 调整输入图像中白色矩形的位置,再进行变换,将原始图像及变换图像(三维、中

心化)都显示于屏幕上,比较变换结果。

3) 调整输入图像中白色矩形的尺寸(4040,44),再进行变换,将原始图像及变

换图像(三维、中心化)都显示于屏幕上,比较变换结果。

三、实验仪器设备及软件

HP D538、MATLAB 四、实验原理

傅里叶变换作为分析数字图像的有利工具,因其可分离性、平移性、周期性和共轭对称性可以定量地方分析数字化系统,并且变换后的图像使得时间域和频域间的联系能够方便直观地解决许多问题。实验通过MATLAB实验该项技能。

设f(x,y)是在空间域上等间隔采样得到的M×N的二维离散信号,x和y是离散实变量,u和v为离散频率变量,则二维离散傅里叶变换对一般地定义为

1F(u,v)MNM1N1x0y0f(x,y)exp[j2(xuyu)],u0,1,…,M-1;y=0,1,…N-1 MNf(x,y)F(u,v)exp[j2(x0y0M1N1uxuy)], x0,1,…,M-1;y=0,1,…N-1 MN在图像处理中,有事为了讨论上的方便,取M=N,这样二维离散傅里叶变换对就定义为

1F(u,v)Nx0y0N1N1f(x,y)exp[j2(xuyu)], u,v0,1…,N-1

N1f(x,y)NF(u,v)exp[u0v0N1N1j2(uxvy)], x,y0,1,…,N-1

N其中,exp[j2(xuyv)/N]是正变换核,exp[j2(uxvy)/N]是反变换核。将二维离散傅里叶变换的频谱的平方定义为f(x,y)的功率谱,记为

P(u,v)|F(u,v)|2R2(u,v)I2(u,v)

功率谱反映了二维离散信号的能量在空间频率域上的分布情况。 五、实验步骤、程序及结果:

1、实验步骤: (1)、编写程序建立输入图像; (2)、对上述图像进行二维傅立叶变换,观察其频谱 (3)、改变输入图像中白框的位置,在进行二维傅里叶变换,观察频谱;

(4)、改变输入图像中白框的大小,进行二维傅里叶变换,观察频谱。 2、实验程序: (1)、原始图像及变换程序: %clear

%原始图象

f=zeros(64,64);%输入64*64的黑色图像矩阵

f(25:40,25:40)=1;%建立16*16的白色矩行图像点阵 figure(1); subplot(231); imshow(f);

title('原始图像')%显示原图像 F=fft2(f);%傅立叶变换 subplot(232); imshow(abs(F));

title('傅里叶变换图像');%显示傅里叶变换图像 F2=fftshift(abs(F));%频谱中心化 subplot(233); imshow(abs(F2));

title('中心化傅里叶频谱图');%显示中心化傅里叶频谱图 x=1:64; y=1:64;

subplot(234);

mesh(abs(real(F)));

title('三维频谱图');%显示三维频谱图 subplot(235);

mesh(x,y,F2(x,y)); title('FFT')

(2)、调整输入图像中白色矩形的位置,再进行变换后的程序 %原始图象

f=zeros(64,64);%输入64*64的黑色图像矩阵

f(47:63,47:63)=1;%建立16*16的白色矩行图像点阵 figure(1);

subplot(231),imshow(f); title('原始图像')%显示原图像

F=fft2(f);%傅立叶变换 subplot(232);

imshow(abs(F));title('傅里叶变换图像');%显示傅里叶变换图像 F2=fftshift(abs(F));%频谱中心化 subplot(233);

imshow(abs(F2));title('中心化傅里叶频谱图');%显示中心化傅里叶频谱图 x=1:64; y=1:64;

subplot(234);

mesh(abs(real(F)));title('三维频谱图');%显示三维频谱图 subplot(235);

mesh(x,y,F2(x,y)); title('FFT')

(3)、整输入图像中白色矩形的尺寸(40*40),再进行变换的程序:

clear %原始图象

f=zeros(64,64);%输入64*64的黑色图像矩阵

f(13:52,13:52)=1;%建立40*40的白色矩行图像点阵 figure(1);

subplot(231),imshow(f); title('原始图像')%显示原图像 F=fft2(f);%傅立叶变换 subplot(232);

imshow(abs(F));title('傅里叶变换图像');%显示傅里叶变换图像 F2=fftshift(abs(F));%频谱中心化 subplot(233);

imshow(abs(F2));title('中心化傅里叶频谱图');%显示中心化傅里叶频谱图 x=1:64; y=1:64;

subplot(234);

mesh(abs(real(F)));title('三维频谱图');%显示三维频谱图 subplot(235);

mesh(x,y,F2(x,y)); title('FFT')

(4)、整输入图像中白色矩形的尺寸(4*4),再进行变换的程序: clear

%原始图象

f=zeros(64,64);%输入64*64的黑色图像矩阵

f(31:34,31:34)=1;%建立4*4的白色矩行图像点阵 figure(1);

subplot(231),imshow(f); title('原始图像')%显示原图像 F=fft2(f);%傅立叶变换 subplot(232);

imshow(abs(F));title('傅里叶变换图像');%显示傅里叶变换图像 F2=fftshift(abs(F));%频谱中心化 subplot(233);

imshow(abs(F2));title('中心化傅里叶频谱图');%显示中心化傅里叶频谱图 x=1:64; y=1:64; subplot(234);

mesh(abs(real(F)));title('三维频谱图');%显示三维频谱图 subplot(235);

mesh(x,y,F2(x,y)); title('FFT')

六、实验分析:

1、 原图像的频谱图不能明显地反映图像的完整频谱。经过中心化后可以看出频谱

中的较大值集中在中心。可以很好地反映出图像的完整频谱。

2、 从实验运行结果可以看出,图像的原尺寸平移,只改变了图像的傅里叶变换,

对其三维频谱图没有影响,任然在中心处有最大频率,频谱中的较大值集中于四个角的低频部分。

3、 通过对比40*40和4*4的图像运行结果可知,图像越小其三维频谱的低频分布

更强,中心化频谱更集中,从图中可以看出能量主要集中在中心,也就是低频部分,说明高频分量所占比重少。傅里叶频谱的低频主要决定图像的平坦区域中灰度的总体分布,而高频主要决定于图像的边缘和噪声等细节。按照图像空间域和频率域的对应关系,空域中的强相关性,即由于图像中存在大量的平坦区域,使得图像中的相邻或相近像素一般趋向于取相同的灰度值,反映在频率域中,就是图像的能量主要集中于低频部分。因此在三维频谱图中可以清楚地看出原图像的频谱中的较大值集中于四个角的低频部分。

实验二 图像的增强

一、实验目的

1) 掌握在计算机上进行直方图统计,以及直方图均衡化、线性变换的图像增强的方法 2) 掌握在计算机上进行图象平滑、图象锐化特别是中值滤波平滑及拉普拉斯算子锐化

的方法

二、实验要求

1) 显示图像(cameraman.tif)及灰度直方图。

2) 对指定图像(cameraman.tif)进行直方图均衡化和线性变换,将原始图像及增强

后的图像都显示于屏幕上,比较增强的效果。

3) 对指定图像(lena.bmp)加入椒盐噪声,然后进行邻域平滑、中值滤波,将原始图

像及平滑后的图像都显示于屏幕上,比较效果。

4) 对指定图像(lena.bmp)进行锐化(简单梯度算法、ROBERT算子,Prewitt边缘算

子和拉普拉斯算子),将原始图像及锐化后的图像都显示于屏幕上,比较锐化的效果。

三、实验仪器设备及软件

HP D538、MATLAB 四、实验原理

1、对比度调整

如果原图像f(x, y)的灰度范围是[m, M],我们希望对图像的灰度范围进行线性调整,调整后的图像g(x, y)的灰度范围是[n, N],MATLAB图像处理工具箱中提供的imadjust函数,可以实现上述的线性变换对比度调整。imadjust函数的语法格式为:J = imadjust(I,[low_in high_in], [low_out high_out]);J = imadjust(I, [low_in high_in], [low_out high_out])返回原图像I经过直方图调整后的新图像J,[low_in high_in]为原图像中要变换的灰度范围,[low_out high_out]指定了变换后的灰度范围,灰度范围可以用 [ ] 空矩阵表示默认范围,默认值为[0, 1]。不使用imadjust函数,利用matlab语言直接编程也很容易实现灰度图像的对比度调整。但运算的过程中应当注意以下问题,由于我们读出的图像数据一般是uint8型,而在MATLAB的矩阵运算中要求所有的运算变量为double型(双精度型)。因此读出的图像数据不能直接进行运算,必须将图像数据转换成双精度型数据。

MATLAB中提供了这样的数据类型转换函数:im2double函数,其语法格式为: I2 = im2double(I1),运算之后的图像数据再显示时可以再转化成uint8型,格式为:I3 = uint8 (I2) 2、直方图均衡化

直方图均衡化的目的是将原始图像的直方图变为均衡分布的形式,即将一已知灰度概率密度分布的图像,经过某种变换变成一幅具有均匀灰度概率密度分布的新图像,从而改善图像的灰度层次。MATLAB图像处理工具箱中提供的histeq函数,可以实现直方图的均衡化。对于灰度图像,histeq函数的基本调用格式为:J=histeq(I, n),该函数返回原图像I经过直方图均衡化处理后的新图像J。n为指定的均衡化后的灰度级数,缺省值为64。对于索引图像,调用格式为:Newmap=histeq(X, map),返回值Newmap将是输出图像的新的调色板。

3、图像噪声的消除:

由于成像传感器噪声、图像在传输过程中的通道传输误差等,会使图像上出现一些随机的、离散的和鼓励的像素点,影响图像的视觉效果,因此需要消噪。 平滑滤波器主要有:(1)、邻域平均(2)、中值滤波平滑滤波器的作用:减小噪声,模糊处理

4、 图像的锐化:图像锐化的目的是加强图像中景物的细节边缘和轮廓。锐化的作用是

使灰度反差增强。因为边缘和轮廓都位于灰度突变的地方。所以锐化算法的实现是基于微分作用。常用的微分算子有:简单梯度算法、ROBERT算子,Prewitt边缘算子和拉普拉斯算子等等。 五、实验步骤、程序及结果: 1、实验步骤:

1) 编写程序显示图像(cameraman.tif)及灰度直方图。

2) 对指定图像(cameraman.tif)进行直方图均衡化和线性变换,将原始图

像及增强后的图像都显示于屏幕上,比较增强的效果。

3) 对指定图像(lena.bmp)加入椒盐噪声,然后进行邻域平滑、中值滤波,

将原始图像及平滑后的图像都显示于屏幕上,比较效果。 4) 对指定图像(lena.bmp)进行锐化(简单梯度算法、ROBERT算子,Prewitt 边缘算子和拉普拉斯算子),将原始图像及锐化后的图像都显示于屏幕上,比较锐化的效果。

2、实验程序: (1)、显示图像(cameraman.tif)及灰度直方图并进行直方图均衡化和线性变换,

将原始图像及增强后的图像都显示于屏幕上:

clc;

clear all;

I=imread('cameraman.tif');%读图 subplot(321); imshow(I); title('original image') subplot(322);

imhist(I);%取直方图 title('histogram')

A=histeq(I);%灰度均衡化 subplot(323); imshow(A);

title('conveid image') subplot(324); imhist(A);

title('histogram of conveid image') subplot(325)

b=imadjust(I,[0.2 0.8],[0 1]); %映射,对比度拉伸 imshow(b); subplot(326); imhist(b);

(2)、对指定图像(lena.bmp)加入椒盐噪声,然后进行邻域平滑、中值滤波,将原

始图像及平滑后的图像都显示于屏幕上: I=imread('LENA.bmp'); %读图

%灰度线性变化

J=imnoise(I,'salt & pepper',0.05);%加入椒盐噪声 subplot(131); imshow(J);

title('added noise');

a=medfilt2(J); %中值滤波 subplot(132); imshow(a); title('medfilt');

h=fspecial('average'); %指定算子类型为均值滤波 b=imfilter(J,h); subplot(133); imshow(b); title('average')

(3)、对指定图像(lena.bmp)进行锐化(简单梯度算法、ROBERT算子,Prewitt边

缘算子和拉普拉斯算子),将原始图像及锐化后的图像都显示于屏幕上,比较

锐化的效果:

J=imread('lena.bmp'); I=double(J);

[Gx,Gy]=gradient(I); G=sqrt(Gx.*Gx+Gy.*Gy); subplot(231);

imshow(J);title('原始图像') Ax=[1,0;0,-1];Ay=[0,1;-1,0];

A=abs(imfilter(J,Ax))+abs(imfilter(J,Ay)); subplot(233);

imshow(A);title('robert锐化') Ax=[-1,1;0,0];Ay=[1,0;-1,0];

A=abs(imfilter(J,Ax))+abs(imfilter(J,Ay)); subplot(232);imshow(A);title('梯度锐化') H3=fspecial('prewitt'); H5=fspecial('laplacian'); H6=fspecial('sobel'); Z3=imfilter(J,H3); Z5=imfilter(J,H5); Z6=imfilter(J,H6); subplot(234);

imshow(Z3);title('prewitt水平边缘锐化') subplot(235);

imshow(Z5);title('laplacian锐化') subplot(236);

imshow(Z6);title('sobel锐化')

六、实验分析:

(1)、从上图灰度直方图可以看出,cameraman.tif图像的灰度值概率密度主要分布在

100到200之间,呈现出一种尖峰效果。而在进行了直方图均衡化之后,如图2.2所示,使得图形的直方图趋向于平缓,直方图均衡化改变了图像的灰度层次,从整体上看,图像的亮度变大了,直方图线性变换增强了图像的对比度。由于成像、记录设备的非线性动态范围太窄,使原图中细节分辨不清,在进行了图像线性变

换后可以明显改变图形质量。 (2)、中值滤波器是一种去除噪声的非线性处理方法,因此对于随机性质的噪声输入,

数学分析是相当复杂的,中值滤波器输出与输入噪声噪声的密度分布有关,输出噪声方差与输入噪声密度函数的平方成反比,对于椒盐噪声,中值滤波的效果很好。 (3)、图像锐化处理的目的是为了使图像的边缘、轮廓线以及图像的细节变的清晰,经

过平滑的图像变得模糊的根本原因是因为图像受到了平均或积分运算,因此可以对其进行逆运算(如微分运算)就可以使图像变的清晰。从图2.4可以看出,Sobel算子和Prewitt算子对灰度渐变和噪声较多的图像处理效果较好,所以最终出现图像在Sobel算子和 Prewitt算子的处理下表现出更好的效果。Laplacian算子能有效的检测边界,但是这个算子会产生虚假边界和定位精度不高,造成了某些边缘点的丢失。

实验三 圆形物体的图像分割与分析

一、实验目的

掌握在计算机上进行图像分割与形态学图像处理和分析的方法 二、实验要求

应用所学方法完成coins.tif图像的分割,用图像分析的方法估算整幅图像中钱币的总额。

1) 对指定图像(coins.tif)完成图像分割、将分割后的图像显示于屏幕上。 2) 对分割后图像中不同目标的尺寸(面积或半径)分布进行直方图显示。 3) 讨论你的方法的误差和局限。

4) 图像中有2元、1元、5角和1角的四种硬币,计算图像中钱币的总额。 三、实验仪器设备及软件

HP D538、MATLAB 四、实验原理:

1)图像腐蚀:设A为目标图像,B为结构元素,则目标图像A被结构元素B腐蚀可定

义为:A⊙B={x|(B)yA} 其中,y是一个表示集合平移的位移量。

2)图像膨胀:设A为目标图像,B为结构元素,则目标图像A被结构元素B膨胀可定

义为:AB ={x|((^B)yA) } 其中,y是一个表示集合平移的位移量。

五、实验步骤、程序及结果: (1)、实验流程: 中值滤波 腐蚀 求出总钱数

(2)、实验程序:

I=imread('coins.bmp'); BW=im2bw(I,graythresh(I)); figure(1);

subplot(231);imshow(I);title('原图像')

subplot(232);imshow(BW);title('二值图像') H=medfilt2(BW); SE=strel('disk',4);

G=imdilate(H,SE); %膨胀运算 D=bwdist(G); L=watershed(-D);

subplot(235);imshow(L);title('分水岭分割图') R=(L==0);

Q=imerode(G,SE); %腐蚀运算 S=((~R)&(~Q));

subplot(233);imshow(S);title('分割图像')

subplot(234);imshow(H);title('中值滤波图像') [Ilabel num]=bwlabel(S,8); %联通区域标号 T=regionprops(Ilabel,'EquivDiameter'); U =[T.EquivDiameter];

yimao=length(find(U>=22.5&U<25.5)); wumao=length(find(U>=25.5&U<29)); yikuai=length(find(U>=29&U<33));

liangkuai=length(find(U>=33));

sum=liangkuai*2+yikuai*1+wumao*0.5+yimao*0.1;%计算总共币值 %subplot(235);imshow(L);title('分水岭分割图') yimao wumao yikuai liangkuai sum

subplot(236);hist(U,6);grid title('直方图')

Yimao=6;Wumao=15;Yikuai=20;Liangkuai=5;Sum=38.1000

六、实验分析:

从上图中可以看出,单纯用膨胀无法将有连粘的硬币分开,之后用了风水岭分割却

达到了很好的效果。MATLAB通过分水岭分割的方法试验准确度较低,通过检测图像大小确定面值,一面值对应的数量进行计算得出最终硬币总钱数为38.1,但是由于腐蚀和膨胀过程中结构元素每在图像中移动一个像素就要对新的像素点做一次运算,而实际上两次相邻的运算之间有很大的重叠区域,在这样的重叠区域中重复进行,是导致程序运行时间过长的主要原因,因此MATLAB也一定程度上提高了图像分割的速度。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top