图像变换实验报告

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

实验三图像变换

一、实验目的

1、结合实例学习几种常见的图像变换,并通过实验体会图像变换的效果;

2、理解和掌握图像旋转、缩放、离散傅里叶变换和离散余弦变换的原理和应用,掌握利用MATLAB编程实现图像变换的方法。

二、实验内容

1、图像的几何变换,主要实现图像的缩放与旋转,要求变换中用最近邻插值算法实现,或用双线性变换法实现并比较;

2、图像的正交变换,主要实现离散傅里叶变换(DFT)与离散余弦变换(DCT)。

三、实验要求

1、独立完成;

2、编写MATLAB程序,并对程序中所调用函数的功能进行必要的说明(可用“help 函数名”进行查询);

3、调试运行后保存实验结果(注意保存的文件格式);

4、完成实验报告。

四、实验原理

(一)图像的几何运算(变换)

1、比例缩放

比例缩放是指将给定的图像在x轴方向按比例缩放fx倍,在y轴方向按比例缩放fy倍,从而获得一副新的图像。

在MATLAB中,进行图像比例缩放的函数是imresize,它的常见调用方法如下:

B=imresize(A,scale)

B=imresize(A,[mrows ncols])

B=imresize(A,scale,method)

其中,A是要进行缩放的图像矩阵,scale是进行缩放的倍数,如果scale小于1,则进行缩小操作,如果scale大于1,则进行放大操作。[mrows ncols]用于指定缩放后图像的行数和列数,method用于指定的图像插值方法,有nearest、bilinear、bicubic 等算法。

2、图像旋转

一般的旋转是以图像的中心为原点,将图像上的所有像素都旋转一个相同的角度。

在MATLAB中,进行图像旋转的函数是imrotate,它的常见调用方法如下:

B=imrotate(A,angle)

B= imrotate(A,angle,method)

B= imrotate(A,angle,method,bbox)

其中,A是要旋转的图像,angle是旋转的角度;method是插值方法,可以为nearest、bilinear、bicublic等;bbox是指旋转后的显示方式,有两种选择,一种是crop,旋转后的图像效果跟原图像一样大小,一种是loose,旋转后的图像包含原图。

(二)图像的正交变换

1、离散傅里叶变换(DFT)

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

F(u,v)=√1

MN ∑∑f(x,y)exp

N−1

y=0

M−1

x=0

[−j2π(

xu

M

+

yv

N

)]

(u=0,1,…,M-1;v=0,1,…,N-1)

f(x,y)=√1

MN ∑∑F(u,v)exp

N−1

v=0

M−1

u=0

[j2π(

xu

M

+

yv

N

)]

(x=0,1,…,M-1;y=0,1,…,N-1)

傅里叶变换有快速算法FFT,使用FFT可以快速提高傅里叶变换的速度。MATLAB工具箱中有常见的傅里叶变换函数和反变换函

数。

Y=fft2(X)Y=fft2(X,m,n)

Y=ifft2(X)Y=ifft2(X,m,n)

以正变换为例,X是要进行二维傅里叶变换的矩阵,m、n是返回的变换矩阵Y的行数和列数,如果m、n大于X的维数,则在Y相应的位置补0。

Y=fftsℎift(X)

把傅里叶变换操作得到的结果中零频率成分移到矩阵的中心,这有利于观察频谱。

2、离散余弦变换(DCT)

二维正DCT表示形式为:

F(0,0)=1

N

∑∑f(x,y)

N−1

y=0

N−1

x=0

F(u,0)=√2

N

∑∑f(x,y)cos[

π(2x+1)u

2N

] (u≠0) N−1

y=0

N−1

x=0

F(0,v)=√2

N

∑∑f(x,y)cos[

π(2x+1)v

2N

] (v≠0) N−1

y=0

N−1

x=0

F(u,v)=2

N

∑∑f(x,y)cos[

π(2x+1)u

2N

]cos[

π(2x+1)v

2N

] N−1

y=0

N−1

x=0

其中,f(x,y)是二维空间向量元素,F(u,v)是变换系数矩阵之元素。

在MATLAB中,提供两种进行图像处理的DCT变换函数:

B=dct2(A)

B=dct2(A,[m,n])

B=dct2(A,[m n])

其中,A是输入的图像,B是返回的DCT的变换系数,m、n分别是返回的DCT变换系数B的行数和列数。

B=idct2(A)

idct2用于计算二维离散余弦逆变换,是dct2的逆变换,其调用格式与dct2函数相同。

五、实验步骤

(一)图像的几何变换

1、编写MATLAB文件,读取索引图像文件“rice.png”,分别执行以下操作:

(1)放大0.2倍;

(2)放大8倍,并用最近邻插值算法进行插值;

(3)放大8倍,并用双线性变换法进行插值;

(4)在一幅图上显示原图、以及(1)~(3)的结果图像。

2、编写MATLAB文件,读取索引图像文件“cameraman.tif”,分别

相关文档
最新文档