Matlab图像处理与应用第四章.doc_第1页
Matlab图像处理与应用第四章.doc_第2页
Matlab图像处理与应用第四章.doc_第3页
Matlab图像处理与应用第四章.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章 数字图象的变换技术及其MATLAB实现4.1 数字图象的二维傅立叶变换4.1.1 二维傅立叶变换的概念一、连续傅立叶变换二、离散傅立叶变换4.1.2 二维离散傅立叶变换的性质一、二维傅立叶变换的二步算法分离法二、用二维离散傅立叶变换求其反变换4.1.3 Matlab提供的快速傅立叶变换函数一、fft2函数:该函数用于计算二维快速傅立叶变换,其语法格式为:1. B=fft2(I): 其功能是:返回图象I的二维fft变换矩阵,输入图象I和输出图象B大小相同。2. B=fft2(I,m,n):其功能是:通过对图象I剪切或补零,按用户指定的点数计算fft,返回矩阵B的大小为mn。变换矩阵,输入图象I和输出图象B大小相同。 很多MATLAB图象显示函数无法显示复数图象,为了观察图象傅立叶变换后的结果应对变换后的结果求模,方法是对变换结果调用abs函数。二、fftn函数:该函数用于n维傅立叶变换,其语法格式为:1. B=fftn(I): 其功能是:计算图象I的n维傅立叶变换,输入图象I和输出图象B大小相同。2. B=fftn(I,size):其功能是:函数通过对图象I剪切或补零,按size指定的点数计算给定矩阵n维傅立叶变换,返回矩阵B的大小也是size。三、fftshift函数:该函数用于将变换后图象频谱中心从矩阵的原点移到矩阵的中心,其语法格式为:B=fftshift(I)fftshift(I)可用于调整fft、ff2、fftn的输出结果。对于向量,fftshift(I)将I的左右两半交换位置;对于矩阵I,fftshift(I)将I的一、三象限和二、四象限进行互换;对于高维矢量,fftshift(I)将矩阵各维的两半进行互换。四、ifft函数:该函数用于计算图象的二维傅立叶反变换,其语法格式为:1. B=ifft2(I)其功能是:返回图象I的二维傅立叶反变换矩阵,输入图象I和输出图象B大小相同。2. B=ifft2(I,m,n):其功能是:通过对图象I剪切或补零,按用户指定的点数计算二维傅立叶反变换,返回矩阵B的大小为mn。通常输出矩阵B为复数矩阵,如果要求模,需调用abs函数。五、ifftn函数:该函数用于计算n维傅立叶反变换,其语法格式为:1. B= ifftn(I): 其功能是:计算图象I的n维傅立叶反变换,输入图象I和输出图象B大小相同。2. B=ifftn(I,size):其功能是:函数通过对图象I剪切或补零,按size指定的点数计算给定矩阵n维傅立叶反变换,返回矩阵B的大小也是size。4.1.4 二维傅立叶变换的的MATLAB实现例:给出一幅图象(saturn2.tif),其傅立叶变换程序如下:figure(1);load imdemos saturn2; %装入原始图象imshow(saturn2); %显示图象figure(2);B=fftshift(fft2(saturn2); %进行傅立叶变换imshow(log(abs(B),),colormap(jet(64),colorbar; %显示变换后的系数分布4.1.5 快速傅立叶变换的应用一、滤波器频率响应利用傅立叶变换可得到线性滤波器的频率响应,其过程如下:首先求出滤波器的脉冲响应,然后利用快速傅立叶变换算法对滤波器的脉冲响应进行变换,得到的结果就是线性滤波器的频率响应。MATLAB工具箱中提供的freqz2函数就是利用这个原理可同时计算和显示滤波器的频率响应。例:利用freqz2 函数得到高斯滤波器的频率响应h=fspecial(gaussian);freqz2(h)二、快速卷积假设A是一个MN的矩阵,B是一个PQ的矩阵,则快速计算矩阵的方法如下:对A和B进行零填充,将A和B填充为2的幂次矩阵;使用fft计算A和B的二维DFT;将两个DFT计算结果相乘;使用ifft2计算步骤所得到的二维DFT的反变换。例:计算魔方阵和1矩阵的程序清单:A=magic(3);B=ones(3);A(8,8)=0; %对A进行零填充,使之成为88矩阵B(8,8)=0; %对B进行零填充,使之成为88矩阵C=ifft2(fft2(A).*fft2(B);C=C(1:5,1:5); %抽取矩阵中的非零部分C=real(C) %去掉错误的,由四舍五入产生的虚部三、图象特征识别 傅立叶变换还能够用来分析两幅图象的相关性,相关性可用来确定一幅图象的特征,在这个意义下,相关性通常被称为模板匹配。例:假设希望在图象text.tif中定位字母“a”,可采用下面的定位方法。将包含字母“a”的图象与text.tif图象进行相关运算,即首先将字母a和图象text.tif进行傅立叶变换,然后利用快速卷积的方法,计算字母a和图象text.tif的卷积,提取卷积运算的蜂值,即得到在图象text.tif中对字母“a”定位的结果。程序代码如下:I=imread(text.tif) %读入图象text.tifa=I(59:71,81:91); %从图象中抽取字母a的图象subplot(2,2,1),imshow(I);subplot(2,2,2),imshow(a);C=real(ifft(fft2(I).*fft2(rot90(a,2),256,256);subplot(2,2,3),imshow(C,);thresh=max(C(:); %找到C中的最大值,选择一个略小于该数的数值作为域值subplot(2,2,4),imshow(Cthresh); %显示像素值超过域值 4.2 数字图象的离散余弦变换4.2.1 离散余弦变换的定义4.2.2 MATLAB提供的DCT变换函数一、dct2函数:该函数用于实现图象的二维离散余弦变换,其语法格式为:1.B=dct2(A):其功能是:返回图象A的二维离散余弦变换值,它的大小与A相同,且各元素为离散余弦变换的系数F(k1,k2)。2. B=dct2(A,m,n)3. B=dct2(A,m n)其功能是:在对图象A进行二维离散余弦变换之前,先将图象A补零至mn,如果m和n比图象A小,则进行变换之前,将图象A剪切。二、idct2函数:该函数可实现图象的二维离散余弦反变换,其语法格式为:1.B=idct2(A):其功能是:计算矩阵A的二维离散余弦反变换值,返回图象B的大小与A相同。2. B=idct2(A,m,n)3. B=idct2(A,m n)其功能是:在对矩阵A进行二维离散余弦反变换之前,先将图象A补零至mn,如果m和n比矩阵A小,则进行变换之前,将矩阵A进行剪切操作,返回图象大小为mn。三、dctmtx函数:该函数用于计算二维离散余弦变换矩阵,其语法格式为:D=dctmtx(n):其功能是:返回nn的DCT变换矩阵,如果矩阵A的大小为nn,D*A是A矩阵每一列的DCT变换值,D*A是A每一列的DCT反变换值。如果矩阵A为nn的方阵,则A的DCT变换可用来D*A*A计算。特别是对于A很大的情况,比利用dct2计算二维离散DCT变换要快。4.2.3 离散余弦变换的MATLAB实现例:RGB=imread(autumn.tif); %装入图象figure(1),imshow(RGB); I=rgb2gray(RGB); %将真彩图像转化为灰度图象figure(2),imshow(I

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论