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

数字图像处理实验报告

来源:知库网


数字图像处理

实验报告

序 号: 姓 名: 学 号: 专业班级 日 期:

马凡凡 6102213958 通信工程134班

目 录

实验一、读取图像、显示图像和保存图像 实验二、图像的灰度变换、取反和二值化处理 实验三、直方图均衡 实验四、图像锐化 实验五、图像的平滑滤波 实验六、图像的正交变换 实验七、高频强调滤波增强图像 实验八、陷波滤波器增强图像

实验九、消除匀速运动造成的图像模糊 实验十、图像的几何变换

实验十一、二维离散傅里叶变换性质验证 实验十二、用领域平均法平滑彩色图像 实验十三、图像的伪彩色处理

1

马凡凡 6102213958 通信工程134班

实验一、读取图像、显示图像和保存图像

一、实验目的和内容

1.通过本次实验,了解和熟悉matlab的实验环境,掌握图片的读取、

显示、存储的方法。

2.利用imread()函数读取一幅图像,假设其名为lily.tif,存入一个数组中。

3.利用imshow()函数来显示这幅图像。

二、实验原理(技术探讨)

1.在 matlab环境中,程序首先读取图像,然后调用直方图函数,

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

读取图像subplot(1,2,1),imshow(I)%输出图像 title('原始图像')%在原始图像中加标题

2.启动matlab双击桌面matlab图标启动matlab环境;

在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像; 浏览源程序并理解含义; 运行,观察显示结果; 结束运行,退出

2

马凡凡 6102213958 通信工程134班

三、实验程序及结果 1.实验程序

I=imread('实验一.jpg'); x=rgb2gray(I); figure(1)

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

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

title('灰度图像');

2.实验结果

3

马凡凡 6102213958 通信工程134班

四、结果分析

通过本实验,我学会了用

Matlab7.0对图像进行读取、存储、显示

的节本操作。

实验二、图像的灰度变换、取反和二值化处理

一、实验目的和内容

1.熟悉MATLAB软件开发环境,掌握读、写图像的基本方法。

2.理解图像灰度变换在图像增强的作用,掌握图像的灰度线性变换和非线性变换方法。

3.掌握绘制灰度直方图的方法,掌握灰度直方图的灰度变换及二值化的方法。 二、实验原理(技术探讨) 1.图像的灰度化处理的基本原理

将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。彩

色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理

4

马凡凡 6102213958 通信工程134班

种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。图像的灰度化处理可用两种方法来实现。

2. 图像的二值化处理就是讲图像上的点的灰度置为0或255,也就是讲整个图像呈现出明显的黑白效果。即将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。在数字图像处理中,二值图像占有非常重要的地位,特别是在实用的图像处理中,以二值图像处理实现而构成的系统是很多的,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像,这样子有利于再对图像做进一步处理时,图像的集合性质只与像素值为0或255的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。为了得到理想的二值图像,一般采用封闭、连通的边界定义不交叠的区域。所有灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。如果某特定物体在内部有均匀一致的灰度值,并且其处在一个具有其他等级灰度值的均匀背景下,使用阀值法就可以得到比较的分割效果。如果物体同背景的差别表现不在灰度值上(比如纹理不同),可以将这个差别特征转换为灰度的差别,然后利用阀值选取技术来分割该图像。动态调节阀值实现图像的二值化可动态观察其分割图像的具体结果。

5

马凡凡 6102213958 通信工程134班

三、实验程序及结果 1.实验程序 %二值化

I=imread('实验二.jpg');

thresh=graythresh(I);%自动确定二值化值 I1=im2bw(I,thresh);%对图像二值化 imshow(I1)

lear all; f=imread('f'); figure(1) imshow(f); figure(2)

imhist(f); %绘制图象f的直方图 ylim('auto');

g=histeq(f,256); %对f进行直方图均衡,输出图象的灰度级数为256 figure(3) imshow(g); figure(4) imhist(g); ylim('auto');

A=imread('trees.tif'); figure(1); subplot(1,2,1); imshow(A); title('原图'); I=double(A);

h=[-1 -1 -1;-1 8 -1;-1 -1 -1]; J=conv2(I,h,'same'); K=uint8(J); subplot(1,2,2); imshow(K);

title('使用拉普拉斯算子锐化处理后的图');

2.实验结果 二值化

6

马凡凡 6102213958 通信工程134班

7

马凡凡 6102213958 通信工程134班

四、结果分析

通过这次的实验,经过广泛查阅书籍和有关知识,掌握了很多不知

道的知识,使我我对图像处理有了更深一步的了解。同时我学到了灰度级越多,图像保存的信息越多,在一定程度上减少灰度级不会明显影响图像质量,但在灰度级过少的情况下图像会失真。

8

马凡凡 6102213958 通信工程134班

实验三、直方图均衡化

一、实验目的和内容

编程实现下列功能:读出存储的黑白灰度图象并显示,显示灰度直方图,对图象进行直方图均衡化处理,显示处理后图象及直方图,画出灰度变换曲线,并存储处理后图象。

二、实验原理(技术探讨)

方图均衡化处理的中心思想是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。直方图均衡化是一种自动调节图象对比度质量的算法,使用的方法是灰度级变换:s=T(r)。它的基本思想是通过灰度级r的概率密度函数,求出灰度级变换。

三、实验程序及结果 1.程序

clear all;

f=imread('cameraman.tif');%读入原图像 figure(1) imshow(f); figure(2)

imhist(f); %绘制图象f的直方图 ylim('auto');

g=histeq(f,256); %对f进行直方图均衡,输出图象的灰度级数为256 figure(3) imshow(g); figure(4)

9

马凡凡 6102213958 通信工程134班

imhist(g); ylim('auto');

A=imread('trees.tif'); figure(1);

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

I=double(A);

h=[-1 -1 -1;-1 8 -1;-1 -1 -1]; J=conv2(I,h,'same'); K=uint8(J);

subplot(1,2,2); imshow(K);

title('使用拉普拉斯算子锐化处理后的图'); 2.结果

10

马凡凡 6102213958 通信工程134班

11

马凡凡 6102213958 通信工程134班

四、结果分析

通过本次试验让我们看到直方图均衡化的效果,其实质就是通过

减少图像的灰度级以换取对比度的增大。通过实验加深了我们对于课本理论知识的理解和运用,提高了我们的学习效率和学习的积极性。

实验四:图像锐化

一、实验目的和内容

1.掌握图像锐化的概念。

2.掌握Prewitt算子对图像进行锐化的原理、过程。 3.熟悉Matlab编程。

4.利用Prewitt算子对图像进行锐化处理。 5.掌握Maltab中和图像锐化相关的函数。

二、实验原理(技术探讨)

12

马凡凡 6102213958 通信工程134班

图像锐化处理是改善图像视觉效果的手段,用来对图像的轮廓或

边缘进行增强,减弱或消除低分频率分量而不影响高频分量。图像锐化处理的主要技术体现在空域和频域的高通滤波,而空域高通滤波主要用模版卷积来实现。

在图像处理中,一阶导数通过梯度来实现,因此利用一阶导数检测边缘点的方法就称为梯度算子法。梯度值正比于像素之差。对于一幅图像中突出的边缘区,其梯度值较大;在平滑区域梯度值小;对于灰度级为常数的区域,梯度为零。 三、实验程序及结果 1.程序

A=imread('b.jpg'); figure(1);

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

I=double(A);

h=[1 1 1;1 -9 1;1 1 1]; J=conv2(I,h,'same'); K=uint8(J);

subplot(2,2,2); imshow(K+A);

title('使用拉普拉斯算子锐化处理后的图');

B=double(A);

h=[0 -1 0;-1 4 -1;0 -1 0]; T=conv2(B,h,'same'); E=uint8(T);

subplot(2,2,3); imshow(-E+A);

title('使用拉普拉斯算子锐化处理后的图')

13

马凡凡 6102213958 通信工程134班

C=double(A);

h=[-1 -1 -1;-1 8 -1;-1 -1 -1]; D=conv2(C,h,'same'); F=uint8(D);

subplot(2,2,4); imshow(-F+A);

title('使用拉普拉斯算子锐化处理后的图') C=double(A);

h=[-1 -1 -1;-1 8 -1;-1 -1 -1]; D=conv2(C,h,'same'); F=uint8(D);

subplot(2,2,5); imshow(F);

title('使用拉普拉斯算子锐化处理后的图')

2.结果

14

马凡凡 6102213958 通信工程134班

四、结果分析

通过本次试验我学到了数字图像处理中图像锐化应从水平和垂直两个方向进行,最后的锐化结果由水平和垂直锐化结果共同得到。锐化结果一方面是模糊的图像变得清晰了,另一方面提取了目标物体的边界,对图像进行分割。锐化的图像质量有所改变,更适合观察。

实验五:图像的平滑滤波

一、实验目的和内容

理解图象平滑的概念,掌握邻域平均技术及中值滤波技术。进一步

加深理解和掌握平滑滤波的原理和具体算法,理解图象平滑滤波的处理过程和特点。

二、实验原理(技术探讨)

邻域平均处理方法是以图像模糊为代价来减小噪声的,且模板尺

寸越大,噪声减小的效果越显著。如果是噪声点,其邻近像素灰度与之相差很大,采用邻域平均法就是用邻近像素的平均值来代替它,这样能明显消弱噪声点,使邻域中灰度接近均匀,起到平滑灰度的作用。因此,邻域平均法具有良好的噪声平滑效果,是最简单的一种平滑方法。平滑方法是一种实用的图像处理技术,能减弱或消除图像中的高频率分量,但不影响低频率分量。因为高频率分量主要对应图像中的区域边缘等灰度值具有较大较快变化的部分,平滑滤波将这些分量滤

15

马凡凡 6102213958 通信工程134班

去可减少局部灰度起伏,使图像变得比较平滑。实际应用中,平滑滤波还可用于消除噪声,或者在提取较大目标前去除过小的细节或将目标内的小间断连接起来。它的主要目的是消除图像采集过程中的图像噪声,在空间域中主要利用邻域平均法、中值滤波法和选择式掩模平滑法等来减少噪声;在频率域内,由于噪声主要存在于频谱的高频段,因此可以利用各种形式的低通滤波器来减少噪声。

三、实验程序及结果 1.程序

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

J=imnoise(I,'gaussian',0,0.01);%加入高斯噪声 subplot(2,2,1);

imshow(I);%输出加入了高斯噪声的图像 title('原始图像'); subplot(2,2,2); imshow(J);

title('加入高斯噪声的的图像'); h=fspecial('average',3); gd=imfilter(J,h); subplot(2,2,3); imshow(gd);

title('3*3模板均值滤波'); h=fspecial('average',4); gd=imfilter(J,h); subplot(2,2,4); imshow(gd);

title('7*7模板均值滤波');

2.结果

16

马凡凡 6102213958 通信工程134班

四、结果分析

通过本次实验我学到了邻域平均时用的模板尺寸越大,对噪声的消

除效果有所增强。不过同时所得到的图像变得更为模糊,可视的细节逐步减少。首先对图像进行加噪,噪声是造成图像退化的重要因素之一。数字图像的噪声主要来源于图像获取和传输。

实验六:图像的正交变换

一、实验目的和内容

1.了解傅立叶变换、离散余弦变换及其在图像处理中的应用 2.了解Matlab线性滤波器的设计方法

3.掌握离散傅里叶变换的实现方法,了解其幅度分布特性。并用一低

17

马凡凡 6102213958 通信工程134班

通频域滤波器实现对图像的平滑滤波。

4.了解频域滤波的内容,学会如何在频域中直接生成滤波器,包括平滑频域滤波器——低通滤波器、锐化频域滤波器——高通滤波器,并利用生成的滤波器对输入图像进行频域处理。

二、实验原理(技术探讨)

快速傅里叶变换FFT的实现

一个大小为M×N的图像矩阵f的快速傅里叶变换FFT可以通过MATLAB函数fft2获得,其简单语法 F=fft2(f)。该函数返回一个大小仍为M×N的傅里叶变换,数据排列如图4.2(a)所示;即数据的原点在左上角,而四个四分之一周期交汇于频率矩形的中心。 傅里叶频谱可以使用函数abs来获得,语法为:S=abs(F)。该函数计算数组的每一个元素的幅度,也就是实部和虚部平方和的平方根,即若某个元素为F=a+bj,则22Sab。通过显示频谱的图像进行可视化分析是频域处理的一个重要方面。例如,图像f(image.bmp)我们计算它的傅里叶变换并显示其频谱: >>F=fft(f) >>S=abs(F)

>>imshow(S,[]) 三、实验程序及结果

1.程序

a=imread('图像锐化.jpg'); b=fftshift(fft2(a)); figure

18

马凡凡 6102213958 通信工程134班

subplot(1,2,1),imshow(a),title('原始图像'); subplot(1,2,2),imshow(b),title('离散傅里叶频谱'); c=rgb2gray(a);%转化为灰度图像 d=dct2(c);

d(abs(d)<10) = 0; %将DCT结果中绝对值小于10的令为0,相当于压缩了数据率(门限为10)

e=idct2(d)/255; %DCT反变换重建图像 figure

subplot(1,3,1),imshow(c),title('原始灰度图像');

subplot(1,3,2),imshow(log(abs(d)),[]),title('余弦变换'); subplot(1,3,3),imshow(e),title('门限为10的反余弦变换');

2.结果

19

马凡凡 6102213958 通信工程134班

四、结果分析

通过这次试验我对傅立叶变换、离散余弦变换及其在图像处理中的

应用有了更深的认识。了解了Matlab线性滤波器的设计方法,并对fft2、colormap、fftshift、dct2、idct2等函数的使用有了一定的了解。

20

马凡凡 6102213958 通信工程134班

实验七:高频强调滤波增强图像

一、实验目的和内容

使用高通滤波器滤波,然后进行高频强调、直方图均衡等处理增强图像并比较结果。

二、实验原理(技术探讨)

频域滤波分为低通滤波和高通滤波两类,对应的滤波器分别为低通

滤波器和高通滤波器。频域低通过滤的基本思想:G(u,v)=F(u,v)H(u,v)。F(u,v)是需要钝化图像的傅立叶变换形式,H(u,v)是选取的一个低通过滤器变换函数,G(u,v)是通过H(u,v)减少F(u,v)的高频部分来得到的结果,运用傅立叶逆变换得到钝化后的图像。

n阶巴特沃兹低通滤波器(BLPF)(在距离原点D0处出现截至频率)的传递函数与理想地通滤波器不同的是,巴特沃兹率通滤波器的传递函数并不是在D0处突然不连续。

相应的高通滤波器也包括:理想高通滤波器、n阶巴特沃兹高通滤波器、高斯高通滤波器。给定一个低通滤波器的传递函数,通过使用如下的简单关系,可以获得相应高通滤波器的传递函数。

三、实验程序及结果 1.程序

I=imread('实验七.jpg');

21

马凡凡 6102213958 通信工程134班

I=rgb2gray(I);

figure(1),imshow(I); title('原图像'); s=fftshift(fft2(I)); figure(2);

imshow(abs(s),[]);

title('图像傅里叶变换所得频谱'); figure(3);

imshow(log(abs(s)),[]);

title('图像傅里叶变换取对数所得频谱'); [a,b]=size(s); a0=round(a/2); b0=round(b/2); d=10;

p=0.2;q=0.5 for i=1:a

for j=1 :b

distance=sqrt((i-a0)^2+(j-b0)^2); if distance<=d h=0; else h=1; end;

s(i,j)=(p+q*h)*s(i,j); end; end;

s=uint8(real(ifft2(ifftshift(s)))); figure(4);

imshow(s);title('高通滤波所得图像'); figure(5);

imshow(s+I);title('高通滤波所得高频增强图像') 2.结果

22

马凡凡 6102213958 通信工程134班

23

马凡凡 6102213958 通信工程134班

24

马凡凡 6102213958 通信工程134班

四、结果分析

这次实验按照低通滤波器和高通滤波器的定义,按照低通滤波的过

程,一步一步写先是进行傅里叶变换,再对其频谱进行平移,使其中心位于中心,再对此时的频谱进行‘圆形滤波’,刚开始纠结于公式,要怎么想出一个H(s)的滤波器的表达式,然后再进行相乘,后来没有想出来,就直接在每次循环里面直接进行乘法运算。

25

马凡凡 6102213958 通信工程134班

实验八 陷波滤波器增强图像

二、实验目的和内容

在原图叠加周期性干扰,使用陷波器滤除干扰,显示滤波后的图像 掌握巴特沃斯陷波滤波器的设计。进一步加深理解和掌握图像频谱的特点和陷波滤波的原理。理解图像陷波滤波的处理过程和特点。

三、实验原理(技术探讨)

陷波滤波器也用于去除周期噪声,虽然带阻滤波器也能可以去除周期

噪声,但是带阻滤波器对噪声以外的成分也有衰减。而陷波滤波器主要对,某个点进行衰减,对其余的成分不损失。从空间域内看,图像存在着周期性噪声。其傅里叶频谱中,也能看到噪声的所在之处。如果使用带阻滤波器的话,是非常麻烦的,也会使得图像有损失。陷波滤波器,能够直接对噪声处进行衰减,可以有很好的去噪效果

四、实验程序及结果 1.程序

close all;

figure(); subplot(1,2,1); imshow(f,[0 1]);

xlabel('a).Original Image');

subplot(1,2,2);

imshow(log(1 + abs(F)),[ ]); xlabel('b).Fourier spectrum of a');

figure(); subplot(1,2,1); imshow(H_NF,[0 1]);

26

马凡凡 6102213958 通信工程134班

xlabel('c).Butterworth Notch filter(D=30 n=2)');

subplot(1,2,2);

h = mesh(1:10:Q,1:10:P,H_NF(1:10:P,1:10:Q)); set(h,'EdgeColor','k'); axis([0 Q 0 P 0 1]); xlabel('u');ylabel('v'); zlabel('|H(u,v)|');

figure(); subplot(1,2,2);

imshow(log(1 + abs(G_1)),[ ]); xlabel('e).Fourier spectrum of d');

subplot(1,2,1); imshow(g_1,[0 1]);

xlabel('d).Result image');

2.结果

27

马凡凡 6102213958 通信工程134班

四、结果分析

通过本次实验我了解了陷波滤波器的原理,陷波滤波器的原理阻止

28

马凡凡 6102213958 通信工程134班

事先定义的中心频率邻域内的频率,设置相应地陷波半径,以合理的程度屏蔽噪声,但不会带来模糊,因此滤波效果比较的好。

实验九、消除匀速运动造成的图像模糊

一、实验目的和内容

1.提高分析问题和解决问题的能力,进一步巩固数字图像处理系统中的基本原理与方法。

2.学习用MATLAB图像复原的方法; 3.恢复一幅由于运动造成的模糊图像

二、实验原理(技术探讨)

图像在形成、记录、处理和传输过程中,由于成像系统、记录设备、

传输介质和处理方法的不完善,从而导致图像质量下降,这种现象就成为图像退化。例如,光学系统中的衍射、光电转换器件的非线性、光学系统中的像差、大气湍流的扰动效应、曝光噪声干扰、图像运动造成的模糊性以及几何畸变等等。

29

马凡凡 6102213958 通信工程134班

图像复原就是对退化的图像进行处理,尽可能恢复原图像的本来面目。图像复原与图像增强的目的都是在某种意义上对图像进行改进,即改善输入图像的质量,但二者使用的方法和评价标准不同。图像增强技术一般要利用人的视觉系统的特性,目的是取得较好的视觉效果,并不需要考虑图像退化的真实物理过程,增强后的图像也不一定要逼近原始图像。而图像复原则认为图像是在某种情况下退化了,即图像品质下降了,现在需要针对图像的退化原因设法进行补偿,这就需要对图像的退化过程有一定的先验知识,利用图像退化的逆过程去恢复原始图像,是复原后的图像尽可能接近原始图像。图像复原技术就是要将图像退化的过程模型化,并且采用相反的过程来恢复出原始图像。

图像复原技术有多种分类方法。图像复原的关键在于建立图像退化模型。这个退化模型应该能够反映图像退化的原因。通常将退化原因作为线性系统退化的一个因素来对待,从而建立系统退化模型来近似描述图像函数的退化。如下图所示,这是一种简单的通用退化模型,它将图像的退化过程模型化为一个退化系统(或退化算子)H。由图可见一幅纯净的图像f(x,y)由于通过一个系统H以及引进外来加性噪声n(x,y)而退化为一幅图像g(x,y)。

三、实验程序及结果 1.实验程序

j=imread('实验九.jpg'); subplot(2,3,1),imshow(j); title('原图像');

30

马凡凡 6102213958 通信工程134班

len=20;theta=30;

psf=fspecial('motion',len,theta);

j1=imfilter(j,psf,'circular','conv'); subplot(2,3,2),imshow(j1); title('PSF模糊图像'); j2=rgb2gray(j);

subplot(2,3,3),imshow(j2); title('灰度图')

FI=abs((fft2(j1))); NFI=255*mat2gray(FI); SFI=fftshift(NFI); imgray=rgb2gray(SFI);

subplot(2,3,4),imshow(imgray); title('傅里叶变换');

INITPSF=ones(size(psf));

[mang,psf]=deconvblind(j1,INITPSF,40); subplot(2,3,5),imshow(mang); title('复原');

P=abs((fft2(mang))); U=255*mat2gray(P); Y=fftshift(U);

imgra=rgb2gray(Y);

subplot(2,3,6),imshow(imgra); title('傅里叶变换');

2.实验结果

31

马凡凡 6102213958 通信工程134班

四、结果分析

通过本次试验我学到了图像复原的主要目的是在给定退化图像g(x,y)以及退化函数H和噪声的某种了解或假设时,估计出原始图像f(x,y)。现在的问题是退化函数H一般是不知道的。因此必须在进行图像复原前对退化函数进行估计。

32

马凡凡 6102213958 通信工程134班

实验十、图像的几何变换

一、实验目的和内容

1.学习几种常见的图像几何变换,并通过实验体会几何变换的效果; 2.掌握图像平移、剪切、缩放、旋转、镜像、错切等几何变换的算法原理及编

3.掌握matlab编程环境中基本的图像处理函数 4.掌握图像的复合变换

二、实验原理(技术探讨)

1.图像的平移

经典的图像平移有两种算法,一种不会改变图像大小,另一种可以相应扩大图像。本程序采用了第一种算法。为了使图像能按照用户指定的水平平移量和垂直平移量移动,作者首先定义了一个参数设定窗,并在图像平移菜单的事件处理函数中对此对话框进行定义,获取平移量。然后调用图像平移函数,从而实现将图像中所有的点(像素)都按照指定的平移量水平、垂直移动,平移后的图像上的每一点都可以在原图像中找到对应的点。2.图像的镜像。

2.图像的水平镜像操作是将图像的左半部分和右半部分以图像垂直中轴线为中心镜像进行对换;图像的垂直镜像操作是将图像上半部分和下半部分以图像水平中轴线镜像进行对换。可以一个个像素进行镜像,也可以利用位图存储的连续性进行整行复制。对于水平镜像作者采用前者,而垂直镜像采用后者,对两种方法都进行了尝试。

33

马凡凡 6102213958 通信工程134班

3.图像的转置

即将图像像素的x坐标和y坐标互换。它和图像的镜像变换类似,不同之处在于图像转置后DIB的头文件也要进行相应的改变,即更新宽度和高度信息。因此传递给图像转置函数的参数是直接指向DIB的指针,而不是直接指向DIB像素的指针。程序首先一个个像素进行转置复制,然后互换DIB中图像的高宽,实现图像转置的功能。 4.图像的缩放

程序将图像按用户设定的X轴方向的缩放比率和Y轴方向的缩放比率进行缩放。此操作产生的图像中的像素可能在原图中找不到相应的像素点,因此必须进行近似处理。此处理有多种方法,可以采用最邻近插值算法,也可以采用别的插值算法。后者处理效果要好一些,但是运算量也相应增加很多,因此本程序采用前者,即最邻近插值算法。最后,

由于缩放改变了图像的高度和宽度,因此还需要对DIB头文件的高度和宽度信息进行更新。 5.图像的旋转。

程序将图像以图像中心为原点,按照用户设定的旋转角度进行旋转。和图像的平移一样,可以采用不同的算法,既可以把转出显示区域的部分图像截去,也可以扩大图像范围以显示所有图像,在本程序中采用后者。同时为了减小运算量,将图像以图像中心为坐标系原点进行旋转,而不是用户指定的任意一点。

34

马凡凡 6102213958 通信工程134班

三、实验程序及结果 1.实验程序

X=imread('shiyanshi.jpg'); figure,imshow(X);title('原图像') %缩放 使用最临近插值算法 A=[0.5 0 0;0 2 0;0 0 1]; T=maketform('affine',A); Z=imtransform(X,T);

figure,imshow(Z),title('图想缩放'); %图像旋转

A=[cos(pi/4) sin(pi/4) 0;-sin(pi/4) cos(pi/4) 0;0 0 1]; T=maketform('affine',A);

Z=imtransform(X,T); %图像的二维仿射变换 figure,imshow(Z);title('图像旋转'); %水平剪切

A=[1 0 0;0.5 1 0;0 0 1]; T=maketform('affine',A); Z=imtransform(X,T);

figure,imshow(Z);title('水平剪切'); %垂直剪切

A=[1 0.5 0;0 1 0;0 0 1]; T=maketform('affine',A); Z=imtransform(X,T);

figure,imshow(Z);title('垂直剪切'); %水平镜像

A=[-1 0 0;0 1 0;1 0 1]; T=maketform('affine',A); Z=imtransform(X,T);

figure,imshow(Z);title('水平镜像'); A=[1 0 0;0 -1 0;0 1 1];

35

马凡凡 6102213958 通信工程134班

3.实验结果

36

马凡凡 6102213958 通信工程134班

37

马凡凡 6102213958 通信工程134班

38

马凡凡 6102213958 通信工程134班

四、结果分析

本次实验是图像的几何变换,顾名思义就是将图像进行均匀的放

大缩小(尺度变换),或者将图像旋转等等一些线性变换。实验涉及到的函数有:imresize、imrotate。这两个函数的用法简单,其中imresize实现的功能是矩阵的尺度变换,我在实验中采用了放大2被和缩小为0.5倍的变换,将函数中的系数分别写成2和0.5即可实现;imrotate实现图像的旋转,将函数的系数写成30,代表将图像顺时针(系统默认)旋转30度角,实验处理后的图像非常容易辨别。

实验十一、二维离散傅里叶变换性质验证

三、实验目的和内容

通过对傅立叶变换原理的学习,掌握并编程验证二维离散傅立叶变换,理解二维傅立叶变换的主要性质。

四、实验原理(技术探讨) 1.、数字图像傅立叶变换的目的

为了有效地和快速地对图像进行处理和分析,常常需要将原定义在图像空间的图像以某种形式转换(正变换)到另外一些空间,并利用在这些空间的特有性质方便地进行一定的加工,最后再转换回图像空间

39

马凡凡 6102213958 通信工程134班

(反变换或逆变换)以得到所需要的效果。傅立叶变换就一种重要的常用的变换,它把图像从图像空间变换到频率空间。

2.对于我们要处理的实际二维图像,其傅氏变换一般是在频率域上有界的,亦即有用成分总是落在一定的频率域范围之内 上述的频率域性质的依据在于:

一是图像中景物的复杂性具有一定的限度,其中大部分内容是变化不大的区域完全像“雪花”点似的图像没有任何实际意义。 二是人眼对空间复杂性(频率)的分辨率以及显示器的分辨能力都是具有一定限度。

若实变量函数f(x)是绝对可积的,即:且F(u)是可积的,则傅立叶变换对一定存在

三、实验程序及结果 1.实验程序

%构造原始图像?

f1=zeros(128,128);%输入128*128的黑色图像矩阵 f1(24:104,48:80)=1;建立白色矩行图像点阵 subplot(3,2,1); imshow(f1);

xlabel('构造原始图像'); %求原始图像的傅里叶频谱 J=fft2(f1);%傅立叶变换

F=abs(J);

J1=fftshift(F);subplot(3,2,2);imshow(J1,[5 50]); xlabel('原始图像的傅里叶频谱');

40

马凡凡 6102213958 通信工程134班

%构造f2的图像?

f2=f1;

for x=1:128 for y=1:128

f2(x,y)=(-1)^(x+y)*f1(x,y); end end

subplot(3,2,3);imshow(f2); xlabel('构造f2的图像');

%求f2的傅里叶频谱?I=fft2(f2);?F=abs(I);?

J2=fftshift(F);subplot(3,2,4);imshow(J2,[5 50]); xlabel('f2的傅里叶频谱'); %将f2顺时针旋转得到f3?

f3=imrotate(f2,-45,'bilinear','crop');subplot(3,2,5);imshow(f3)

xlabel('f2图像顺时针旋转45度');

%求f3的傅里叶频谱?K=fft2(f3);?F=abs(K);? K=fft2(f3);F=abs(K);

J3=fftshift(F);subplot(3,2,6);

imshow(J3,[5 50]);xlabel('f3的傅里叶频谱');

4.实验结果

41

马凡凡 6102213958 通信工程134班

四、结果分析

通过本次实验我学到了幅度谱决定了一幅图像中含有的各种频率

分量的多少,相位谱决定了每一种频率分量在图像中的位置。 只要每一种频率分量保持在图像中的正确位置,那么图像的完整性就能得到很好的保持,这也就是为什么在信号或图像处理中通常只对幅度谱进行处理的原因。

42

马凡凡 6102213958 通信工程134班

实验十二、用领域平均法平滑彩色图像

五、实验目的和内容

了解各种平滑处理技术的特点和用途,掌握平滑技术的仿真与实

现方法。学会用Matlab中的函数对输入彩色图像的计算,感受不同平滑处理方法对最终图像效果的影响。

六、实验原理(技术探讨)

我们把彩色图像处理细分成三个主要类别:(1)颜色变换。它主要

用于处理每个彩色平面的像素,该处理严格地以像素值为基础,而不是以它们的空间坐标为基础;(2)单独彩色平面的空间处理。它主要对各个彩色平面进行空间滤波;(3)颜色向量处理。它主要同时处理彩色图像的所有分量。因为全彩色图像至少有三个分量,彩色像素实际上是向量。

在某些情况下,无论是一次处理彩色图像的一个平面,还是作为向量来处理,都会得到相同的结果。然而,它并不总是如此。为了使独立的彩色分量和以向量为基础的处理都相同,必须满足两个条件:首先,该处理必须对向量和标量都可用;其次,对向量的每个分量的运算必须独立于其他分量。

三、实验程序及结果 1.实验程序

a=imread('实验十二.jpg'); figure;

ar=a(:,:,1); ag=a(:,:,2);

43

马凡凡 6102213958 通信工程134班

ab=a(:,:,3); subplot(3,4,1); imshow(a); title('原图');

subplot(3,4,2); imshow(ar); title('red'); subplot(3,4,3); imshow(ag);

title('green'); subplot(3,4,4); imshow(ab); title('blue'); ah=rgb2hsv(a); h=ah(:,:,1); s=ah(:,:,2); i=ah(:,:,3); subplot(3,4,5); imshow(h); title('h');

subplot(3,4,6); imshow(s); title('s');

subplot(3,4,7); imshow(i); title('i');

w=fspecial('average', 25);

I_filtered=imfilter(i, w, 'replicate'); H_filtered=imfilter(h, w, 'replicate'); S_filtered=imfilter(s, w, 'replicate'); R_filtered=imfilter(ar, w, 'replicate'); G_filtered=imfilter(ag, w, 'replicate'); B_filtered=imfilter(ab, w, 'replicate');

f=cat(3, R_filtered, G_filtered, B_filtered); h=cat(3, h, s, I_filtered); f1=hsv2rgb(h); f1=min(f1,1);

f2=cat(3, H_filtered, S_filtered, I_filtered); subplot(3,4,8); imshow(f);

title('平滑R、G、B图像平面结果') subplot(3,4,9);

44

马凡凡 6102213958 通信工程134班

imshow(f1);

title('仅平滑HSI图像的亮度分量'); subplot(3,4,10); imshow(f2);

title('平滑所有三个HSI分量');

5.实验结果

四、结果分析

从图中我们可以观察到显示了图像平滑后的结果,平滑使用了带

有‘replicate’选项的imfilter函数和大小2525像素的‘average’

滤波器。平均滤波器较大,足以产生有意义的模糊度。选择该尺寸的

45

马凡凡 6102213958 通信工程134班

滤波器目的在于,证明在RGB空间的平滑和仅用被变换到HSI空间后图像的亮度分量达到的结果之间的不同。两种滤波后的结果是十分不同的。例如,除图像有点模糊外,图中顶部还出现了绿色边缘。原因很简单,即色调和饱和度分量没有变化,而平滑处理使得亮度分量的值变化得以减少。合乎逻辑的情况是用相同的滤波器去平滑所有三个分量。然而,这将改变色调和饱和度之间的相对关系,从而产生无意义的颜色。

实验十三、图像的伪彩色处理

七、实验目的

学习和掌握伪彩色处理基本方法,将灰度图像转换为多种颜色的

彩色图像。根据图像特点,了解伪彩色处理技术在实际中的应用。编写密度分割函数,实现灰度图像的伪彩色显示。编写灰度级彩色变换函数,实现灰度图像的伪彩色显示。

八、实验原理(技术探讨)

伪彩色处理是一种将二维图像像素逐点映射到由三基色确定的

三维色度空间中的技术,其目的在于利用人眼对色彩的敏感性,应用伪彩色技术使图像中的不同物体具有一定的色差,从而提高人对图像的分辩能力。伪彩色处理可以分为空域增强和频域增强两种。空域伪彩色处理实际上是将图像的灰度范围划分为若干等级区间,每一个区间映射为某一种颜色。频域伪彩色处理是基于频域运算基础上的伪彩色处理方法。输入图像经过傅立叶变换得到图像的频谱,然后将频谱

46

马凡凡 6102213958 通信工程134班

的各个分量分别送到R、G、B三个通道进行滤波,最后对各通道作傅立叶反变换,得到空域的R、G、B分量,最终产生彩色图像。

三、实验程序及结果 1.实验程序

i1 = imread('实验十三.jpg'); s = rgb2gray(i1); I=double(s); [m,n]=size(I); c=256; for i=1:m for j=1:n if I(i,j)<=c/4 R(i,j)=0;

G(i,j)=4*I(i,j); B(i,j)=c/2;

else if I(i,j)<=c/2 R(i,j)=0; G(i,j)=c/2;

B(i,j)=-4*I(i,j)+2*c; else if I(i,j)<=3*c/4

R(i,j)=4*I(i,j)-2*c; G(i,j)=c/2; B(i,j)=0; else

R(i,j)=c/2;

G(i,j)=-4*I(i,j)+4*c; B(i,j)=0; end end end

end end

for i=1:m for j=1:n

out(i,j,1)=R(i,j); out(i,j,2)=G(i,j); out(i,j,3)=B(i,j); end end

47

马凡凡 6102213958 通信工程134班

out=out/256;

subplot(1,3,3),imshow(out);title('伪彩色处理后图像'); subplot(1,3,2),imshow(s);title('灰度图像'); subplot(1,3,1),imshow(i1);title('原始图像');

2.实验结果

四、结果分析

通过本次试验我学到了图像的伪彩色处理在数字图像处理中的使

用是非常广泛的,所以本次实验的应用价值很高。伪彩色处理的程序参考了网上给的循环写法,具体步骤是:先将Rgb图像转换为灰度图像,然后通过两个循环的嵌套,将每个范围内的像素赋予一定的颜色值,最后组成一个处理后的矩阵,经过图像显示函数,即可将灰度图

48

马凡凡 6102213958 通信工程134班

像转换为伪彩色图像。伪彩色也可以使用Matlab中给定的灰度分层函数和颜色赋值函数进行,这种方法我会留置实验后,在电脑上重新做一遍,然后将两种方法的效果进行对比。

49

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

Top