当前位置:文档之家› MATLAB数字图像处理几何变换傅里叶变换

MATLAB数字图像处理几何变换傅里叶变换

Matlab数字图像处理实验指导实验目的:通过实验,深入理解和掌握图像处理的基本技术,提高动手实践能力。

实验环境:Matlab变成实验一图像的几何变换实验内容:设计一个程序,能够实现图像的各种几何变换。

实验要求:读入图像,打开图像,实现图像的平移变换、比例缩放、转置变换、镜像变换、旋转变换等操作。

实验原理:图像几何变换又称为图像空间变换,它将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置。

学习几何变换的关键就是要确定这种空间映射关系,以及映射过程中的变化参数。

几何变换不改变图像的像素值,只是在图像平面上进行像素的重新安排。

一个几何变换需要两部分运算:首先是空间变换所需的运算,如平移、镜像和旋转等,需要用它来表示输出图像与输入图像之间的(像素)映射关系;此外,还需要使用灰度插值算法,因为按照这种变换关系进行计算,输出图像的像素可能被映射到输入图像的非整数坐标上。

设原图像f(x0,y0)经过几何变换产生的目标图像为g(x1,y1),则该空间变换(映射)关系可表示为:x1=s(x0,y0)y1=t(x0,y0)其中,s(x0,y0)和t(x0,y0)为由f(x0,y0)到g(x1,y1)的坐标换变换函数。

一、图像平移图像平移就是将图像中所有的点按照指定的平移量水平或者垂直移动。

二、图像镜像镜像变换又分为水平镜像和垂直镜像。

水平镜像即将图像左半部分和右半部分以图像竖直中轴线为中心轴进行对换;而竖直镜像则是将图像上半部分和下半部分以图像水平中轴线为中心轴进行对换。

三、图像转置图像转置是将图像像素的x坐标和y坐标呼唤。

图像的大小会随之改变——高度和宽度将呼唤。

四、图像的缩放图像缩放是指将图像大小按照指定的比率放大或者缩小。

图像缩放函数imresize();调用格式如下:B=imresize(A,Scale,method);参数A为要进行缩放的原始图像。

Scale为统一的缩放比例。

如果希望在x和y方向上以不同比例进行缩放,可用如下调用形式。

B= imresize(A,[mrows ncols],method);向量参数[mrows ncols]指明了变换后目标图像B 的具体行数和列数。

可选参数method允许imresize()函数指定的插值方法。

其合法值同imtransform()函数,但默认为最近邻插值。

五、图像旋转图像旋转一般是指将图像围绕某一指定点旋转一定的角度。

旋转通常也会改变图像的大小。

1)以原点为中心的图像旋转2)以任意点为中心的图像旋转图像旋转变换的效果受具体插值方法的影响较为明显,本实验给出的旋转采用最近邻插值。

1)围绕图像中心的旋转变换函数imrotate(),调用方式如下:B=imrotate(A,angle,method,’crop’);A是要旋转的图像。

Angle为旋转角度,单位为度,如为其指定一个正直,则按逆时针方向旋转图像。

可选参数method允许imrotote()函数指定的插值方法。

‘crop’选项会裁剪旋转后增大的图像,使得到的图像和原图像大小一致。

2)以任意点为中心的图像旋转(自学)通过调用imtransform()函数来实现以任意点为中心的图像旋转。

提示:读取图像文件:I=imread('filename.fmt’)写入图像:imwrite(I,’filename.fmt’)显示图像:imshow(I)显示子图:subplot(m,m,p)二维空间变换:B=imtransform(A,TFORM,method);参数A为要进行几何变换的图像。

空间变换结构TFORM指定了具体的变换类型。

可以通过两种方法来创建TFORM结构,即使用maketform()函数和cp2tform()函数。

这里给出使用maketform()函数获得TFORM结构的方法。

T=maketform(transformtype,Matrix);参数transformtype指定了变换的类型,如常见的’affine’为二维或多维仿射变换,包括平移、旋转、比例、拉伸和错切等。

Matrix为相应的仿射变换矩阵。

可选参数method允许imtransform()函数选择的插值方法。

其合法值’bicubic’- 三次插值,’bilinear’-双线性插值,’nearest’-最近邻插值。

默认时为’bilinear’-双线性插值。

函数输出B 为经imtransform()变换后的目标图像。

插值算法实现几何运算时,有两种方法。

第一种为向前映射法,其原理是将输入图像的灰度一个像素一个像素地转移到输出图像中,即从原图像坐标计算出目标图像坐标:g(x1,y1)=f(s(x0,y0),t(x0,y0))。

第二种为向后映射法,它是向前映射变换的逆,即输出像素一个一个地映射回输入图像中。

如果一个输出像素映射到的不是输入图像的采样栅格的整数坐标处的像素点,则其灰度值就需要基于整数坐标的灰度值进行推断,这就是插值。

实验二 图像的傅里叶变换内容:设计一个或多个程序,实现二维傅里叶变换和逆变换,并对图像进行傅里叶变换平移。

要求:读入图像,打开图像,实现二维傅里叶变换和逆变换,等操作。

实验原理:图像变换在图像处理和图像分析中占有重要的地位。

将图像从空间域变换到其它域(如频域)的数学变换,便于进行图像处理和图像分析。

常用的变换有:傅里叶变换、离散余弦变换、K-L 变换等。

一、 傅立叶变换若f(x)为一维连续实函数,则它的傅里叶变换可定义为傅立叶逆变换定义如下:函数f(x)和F(u)被称为傅立叶变换对.即对于任一函数f(x),其傅立叶变换F(u)是惟一的; 反之,对于任一函数F(u),其傅立叶逆变换f(x)也是惟一的.F(u)可以表示为如下形式:|F(u)|称为F(u)的模,也称为函数f(x)的傅立叶谱,φ(u)称为F(u)的相角。

⎰∞∞--=dxe xf u F ux j π2)()(⎰∞∞-=due u F xf ux j π2)()(2122)]()([|)(|u I u R u F +=)()()(u jI u R u F +=))()(tan(arg )(u R u I u =φE (u )称为函数f(x)的能量谱或功率谱。

二、 离散余弦变换(DCT 变换)傅立叶变换的一个最大的问题是:它的参数都是复数,在数据的描述上相当于实数的两倍。

为此,我们希望有一种能够达到相同功能但数据量又不大的变换。

在此期望下,产生了DCT 变换。

余弦变换实际上是傅立叶变换的实数部分.余弦变换主要用于图像的压缩,如目前的国际压缩标准的JPEG 格式中就用到了DCT 变换.具体的做法与DFT 相似.给高频系数大间隔量化,低频部分小间隔量化。

三、 K-L 变换K-L 变换(Karhunen-Loeve Transform )是数字图像处理中具有广泛应用的一类重要变换; 又称为特征向量变换、主分量变换或霍特林变换;K-L 变换既有连续形式的变换也有离散形式的变换;它是完全从图像的统计性质出发实现的变换。

数字图像中主要应用离散K-L 变换,优点是去相关性好,该变换在数据压缩、图像旋转、遥感多光谱图像的特征选择和统计识别等方面具有重要意义。

K-L 变换形式: 操作提示:1,傅里叶变换读入图像;imread();傅里叶变换要求输入的矩阵为双精度浮点类型,需进行数据类型转换;im2doubel(); 快速傅里叶变换;fft2();傅里叶逆变换;ifft2();把傅里叶变换的零频率部分移到频谱的中间,使用fftshift 函数,调用格式为:Y= fftshift(X); 把 fft 函数 、fft2函数输出的 结果的 零频率 部分 移到 数组 的 中间 ,对于 观察 傅里叶变换频谱 中间 零 频率部分十分有效。

在同一窗口显示3幅图像;subplot();imshow();2,离散余弦变换二维离散余弦变换;dct2();二维离散余弦逆变换;idct2();实验三 灰度变换和直方图均衡处理内容:设计一个程序,达到空域图像增强和频域图像增强的目的。

要求:读入图像,打开图像,实现空域图像增强和频域图像增强等操作。

)(x m X A Y -=2|)(|)(u F u E =操作提示:Matlab傅立叶变换、余弦变换和小波变换1.离散傅立叶变换的Matlab实现Matlab 函数fft、fft2 和fftn 分别可以实现一维、二维和N 维DFT 算法;而函数ifft、ifft2 和ifftn 则用来计算反DFT 。

这些函数的调用格式如下:A=fft(X,N,DIM)其中,X 表示输入图像;N 表示采样间隔点,如果X 小于该数值,那么Matlab 将会对X 进行零填充,否则将进行截取,使之长度为N ;DIM 表示要进行离散傅立叶变换。

A=fft2(X,MROWS,NCOLS)其中,MROWS 和NCOLS 指定对X 进行零填充后的X 大小。

别可以实现一维、二维和N 维DFTA=fftn(X,SIZE)其中,SIZE 是一个向量,它们每一个元素都将指定X 相应维进行零填充后的长度。

函数ifft、ifft2 和ifftn的调用格式于对应的离散傅立叶变换函数一致。

别可以实现一维、二维和N 维DFT例子:图像的二维傅立叶频谱1. 离散傅立叶变换的Matlab实现% 读入原始图像I=imread('lena.bmp');imshow(I)% 求离散傅立叶频谱J=fftshift(fft2(I));figure;别可以实现一维、二维和N 维DFTimshow(log(abs(J)),[8,10])2. 离散余弦变换的Matlab 实现2.1. dct2 函数功能:二维DCT 变换Matlab格式:B=dct2(A)B=dct2(A,m,n)B=dct2(A,[m,n])函数fft、fft2 和fftn 分说明:B=dct2(A) 计算 A 的DCT 变换 B ,A 与 B 的大小相同;B=dct2(A,m,n) 和B=dct2(A,[m,n]) 通过对A 补0 或剪裁,使B 的大小为m×n。

2.2. dict2 函数功能:DCT 反变换格式:B=idct2(A)B=idct2(A,m,n)别可以实现一维、二维和N 维DFTB=idct2(A,[m,n])说明:B=idct2(A) 计算A 的DCT 反变换B ,A 与 B 的大小相同;B=idct2(A,m,n) 和B=idct2(A,[m,n]) 通过对A 补0 或剪裁,使B 的大小为m×n。

Matlab2.3. dctmtx函数功能:计算DCT 变换矩阵格式:D=dctmtx(n)说明:D=dctmtx(n) 返回一个n×n 的DCT 变换矩阵,输出矩阵D 为double 类型。

相关主题