傅里叶变换、离散余弦变换与小波变换
二维离散傅里叶、余弦、小波变换
专业班级:10 信息安全
学生姓名:王猛涛
学生学号:_ 20101616310049 _
指导教师:姚孝明
完成时间:2013年4月13日
数字图像处理
实验三:二维离散傅里叶、余弦、小波变换
一、实验目的
1. 了解图像正变换和逆变换的原理。
2. 了解图像变换系数的特点。
3. 掌握常用图像变换的实现过程。
4. 掌握图像的频谱分析方法。
5. 了解图像
二、实验主要仪器设备
1. 微型计算机:Intel Pentium 及更高。
2. MATLAB 软件。
三、实验原理
二维离散傅里叶变换、余弦变换、小波变换的正逆变换公式,MATLAB 中的上述变换的实现函数以及讨论正交变换的应用。
1. 二维离散傅里叶变换(Discrete Fourier Transform ,DFT )
对于二维傅立叶变换,其离散形式如式(1)所示;逆变换公式如式(2)所示:
∑∑-=-=+-=101
)//(2),(1),(M x N y N vy M ux j e y x f MN v u F π (1) ∑∑-=-=+=1010)//(2),(),(M u N v N vy M ux j e v u F y x f π (2)
频谱公式如式(3)所示:
)
,(),(|),(|),(),(|),(|),(22),(v u I v u R v u F v u jI v u R e v u F v u F v u j +=+==? (3) 由可傅立叶变换的分离性可知,一个二维傅立叶变换可分解为两步进行, 其中每一步都是一个一维傅立叶变换。先对f(x, y)按列进行傅立叶变换得到F(x, v),再对F(x, v)按行进行傅立叶变换,便可得到f(x, y)的傅立叶变换结果。显然对f(x, y)先按行进行离散傅立叶变换, 再按列进行离散傅立叶变换也是可行的,这里不再一一赘述。
此外,在实际工程应用中分析幅度谱较多,习惯上也常把幅度谱称为频谱。使用DFT 变换进行图像处理时,有如下特点:
(1)频谱的直流成分为∑∑-=-==101
2),(1)0,0(M x N y y x f N F ,说明在频谱原点的傅里
叶变换F (0,0)等于图像的平均灰度级。
(2)幅度谱|),(|v u F 关于原点对称,即),(),(v u F v u F --=。
(3)图像),(y x f 平移后,幅度谱不发生变化,仅有相位发生变化。
DFT 是一种基本和重要的正交变换。为了提高计算效率,应用时往往采用二维FFT 实现。而一般的正交变换图像经过对数变换后便于观察。MATLAB 采用fft2和ifft2分别进行二维DFT 变换和二维DFT 逆变换,采用fftshift 将直流分量移到频谱图的中心以便观察。
2. 二维离散余弦变换(Discrete Cosine Transform ,DCT )
对于二维余弦变换,其离散形式如式(4)所示,逆变换如式(5)所示:
??
????+??????+=∑∑-=-=)21(c o s )21(c o s ),(2)()(),(1010y v MN x u MN y x f MN v C u C v u F M x N y ππ (4) 式中,??
???-≤≤==?????-≤≤==11,10,21)(11,10,21)(N v v v C M u u u C ∑∑-=-=??????+??????+=1010)21(c o s )21(c o s ),()()(2),(M u N v y v N x u M
v u F v C u C MN y x f ππ (5) 在MATLAB 中,采用dct2和idct2分别进行二维DCT 变换和二维DCT 逆变换。
二维DCT 常用于信号和图像处理,典型应用是对静止图像和运动图像进行性能优良的有损数据压缩。在静止图像编码标准JPEG 、运动图像编码标准MJPEG 和MPEG 等标准中都使用了8*8块的离散余弦变换,并将结果进行量化之后进行熵编码。DCT 具有很强的能量集中在频谱的低频部分的特性,而且当信号具有接近马尔科夫过程(Markov processes )的统计特性时,DCT 的去相关性接近于具有最优去相关性的K-L 变换(Karhunen-Loeve 变换)的性能。
另外,改进的离散余弦变换(Modified Discrete Cosine Transform ,MDCT )对交叠的数据进行DCT ,有助于避免由于区块边界所产生的多余数据,被用在高级音频编码(Advanced Audio Coding ,AAC )、Ogg V orbis 、AC —3和MP3音频压缩中。
3. 二维离散小波变换(D Discrete Space Wavelet Transform ,DDSWT )
对于二维小波变换,其离散形式如式(6)所示;逆变换如式(7)所示:
dxdy a
b y a b x y x f a y x f b b a W R b b a y x f y x ),(),(1),(,),,(*,2-->==
da db db a
b y a b x b b a W a y x f y x y x b a y x f R R ),(),,(1
),(,22--=??+ψ (7) 类似地,可以定义二维离散小波变换逼近,并采用Mallat 二维快速算法求解。与DFT 类似,可分离二维小波变换最终可转换为两次一维小波变换。
对图像进行小波变换的MATLAB 常用函数有:
① 对图像进行一层二维小波分解,常见形式为:
[CA,CH,CV ,CD]=dwt2(X,’wname ’)
式中,X 为图像矩阵;’wname ’是使用的小波基函数名称,如可选择双正交样条小波基函数,形式为biorNr.Nd 。
② 查询使用的小波基函数的信息,使用形式为:
Waveinfo(‘wname ’)
式中,小波基名称’wname ’可选用’haar ’(哈尔小波)、’db ’(Daubechies 小波)、’bior ’(双正交样条小波)等。例如,在命令行状态下键入wavainfo(‘bior ’)进行查询双正交样条小波,可知r 表示reconstruction (重建),d 表示decomposition (分解),N 表示相应FIR 滤波器的阶数;CA 、CH 、CV 、CD 分别是输入矩阵X 小波分解的近似系数矩阵、水平细节系数、垂直细节系数和对角线细节系数。
③ 对二维小波分解的图像进行各种分量的重构,常见函数形式为:
Y=upcoef2(O,X,’wname ’,N)
式中,X 是分解后的细节信号,Y 是重构的细节信号分量;N 表示对矩阵X 的系数进行重建的步骤数,即重构的层数,默认值为1。O 是细节信号的类型。如果O=’a ’,则表示对信号的近似系数进行重建;否则,如果O=’h ’、’v ’或’d ’,则分别对水平、垂直或对角线细节进行重建。
④ 对应上述的一层二维小波变换DWT2函数,进行一层二维小波变换逆变换,常见形式为:
X=idwt2(CA,CH,CV ,CD,’wname ’)
idwt2函数采用’wname ’所指示的小波、已重建的基于近似矩阵CA ,以及水平细节CH 、垂直细节CV 和对角线细节CD 计算原图像矩阵X 。
⑤ 对重构的图像进行量化编码,常见函数形式为:
Y=wcodemat(X,NBCODES,OPT,ABSOL)
式中,X 为待进行量化编码的矩阵,Y 为编码矩阵。在编码中,把矩阵X 中元素绝对值最大的作为NBCODES (整数),绝对值最小的作为1,其他元素依其绝对值的大小在1与NBCODES 中排列。当OPT 为’row ’时,做行编码;当
OPT为’col’时,做列编码;当OPT为’mat’时,做全局编码,即把整个矩阵中元素绝对值最大的元素作为NBCODES,最小的作为1.当ABSOL为0时,该函数返回输入矩阵X的一个编码版本,当ABSOL非0时,返回X的绝对值。
四、实验内容
1.在MATLAB环境中,进行图像的离散傅里叶变换和离散余弦变换,观察图像的频谱并减少DCT系数,观察重建信号和误差信号,理解正交变换在压缩编码中的应用。
2.在MATLAB环境中,进行图像的离散小波变换,观察图像的近似图像和各方向的细节图像,观察重建图像,理解小波变换在图像特征检测(如边缘检测、方向检测等)中的应用。
五、实验步骤
1.选择典型图像作为研究对象。
2.显示原始图像。
3.进行图像变换。
4.对图像进行处理(如选择不同个数的变换系数可以进行压缩、选择不同方向的频谱可以进行特征检测等)。
5.对图像进行逆变换复原图像,观察重建图像和误差图像并进行对比。
六、实验结果及分析
1. 二维离散傅里叶变换(Discrete Fourier Transform,DFT)
根据实验内容要求,我们通过编写MATLAB程序(详见附录一),调用函数fft2和ifft2,对所选用的图像(见下图1)进行二维离散傅里叶变换得到如下结果(见图2):
图1 原始图像图2 实验1运行结果截图从现代数学的眼光来看,傅里叶变换是一种特殊的积分变换。它能将满足一
定条件的某个函数表示成正弦基函数的线性组合或者积分。在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变换。当前傅里叶变换在物理学、数论、组合数学、信号处理、概率论、统计学、密码学、声学、光学、海洋学、结构动力学等领域都有着广泛的应用(例如在信号处理中,傅里叶变换的典型用途是将信号分解成幅值分量和频率分量)。
2. 二维离散余弦变换(Discrete Cosine Transform,DCT)
根据实验内容要求,我们通过编写MATLAB程序(详见附录二),调用函数dct2和idct2,对所选用的图像(见下图3)进行二维离散余弦变换得到如下结果(见图4):
图3 原始图像图4 实验2运行结果截图从实验结果中可以看出:离散余弦变换的重要特点是能量集中,信号常将其能量的大部分集中于频率域的一个小范围内,这样描述不重要的分量只需要很少的比特数;频率域分解映射了人类感觉系统的处理过程,并允许后继的量化过程满足其灵敏度的要求。变化后,能量集中的范围可以精细的量化,其他的范围可以粗糙量化,这样处理,不会引起太大的精度问题,符合人体的听觉,视觉需要。这样量化后,可以用小的数据量来保存采集的数据,对处理音频,视频等数据非常有效。
此外,离散余弦变换,在当前音频视频编码中起着非常重要的作用。
3. 二维离散小波变换(D Discrete Space Wavelet Transform,DDSWT)
根据实验内容要求,我们通过编写MATLAB程序(详见附录三),调用函数dwt2和idwt2,对所选用的图像(见图5),进行二维离散小波逆变换得到图
像(见图6)及一层小波变换后的图像(见图7)
,具体如下所示:
图 5 原始图像 图 6 逆变换后的图像
Approximation A1
50100150200250
50
100
150
200
250
Horizontal Detail H15010015020025050100150200
250Vertical Detail V1
5010015020025050
100
150
200
250
Diagonal Detail D1
5010015020025050100150200
250
图 7 一层小波变换的四个分量
经过上述实验,从结果分析并结合查找的资料,我们可以得到小波变换具有如下优点:
(1)小波分解可以覆盖整个频域(提供了一个数学上完备的描述) ;
(2)小波变换通过选取合适的滤波器,可以极大的减小或去除所提取得不同特征之间的相关性;
(3)小波变换具有“变焦”特性,在低频段可用高频率分辨率和低时间分
辨率(宽分析窗口),在高频段,可用低频率分辨率和高时间分辨率(窄分析窗口);
(4)小波变换实现上有快速算法(Mallat小波分解算法)。
由于傅里叶变换分析处理信号的方法也存在着一定的局限性与弱点,傅里叶变换提供了信号在频率域上的详细特征,但却把时间域上的特征完全丢失了。小波变换是80年代后期发展起来的新数学分支,它是傅里叶变换的发展与扩充,在一定程度上克服了傅里叶变换的弱点与局限性。本文从信号分析与处理的角度来介绍小波变换的基本理论与应用,使具有微积分基础的读者通过本文能对这一新的数学分支有一初步了解。小波变换在函数论、微分方程、数值计算等方面也有着重要的应用。
附录:
附录一:
%傅里叶变换
I=imread('pout.tif'); %读入图像
subplot(2,2,1),imshow(I); %在位置1显示图像
title('原始图像');
F1=fft2(I); %计算二维傅立叶变换
subplot(2,2,2),imshow(F1); %显示二维傅立叶变换后的图像
title('二维离散傅里叶变换后的图像');
subplot(2,2,3),imshow(log(abs(F1)+1),[0 10]); %显示对数变换后的频谱图
title('图像的频谱图');
F2=fftshift(F1); %将直流分量移到频谱图的中心
subplot(2,2,4),imshow(log(abs(F2)+1),[0 10]);%显示对数变换后中心化的频谱图
title('中心化的频谱图');
F3=ifft2(F1); %计算傅立叶变换的逆变换
figure,imshow(uint8(F3)); %重新显示图像,类似于imread('pout.tif') title('原始图像');
附录二:
%二维DCT的应用
I=imread('kids.tif'); %读入图像
subplot(1,2,1),imshow(I); %显示原图像
title('原始图像');
C1=dct2(I); %对图像做DCT变换
C2=fftshift(C1); %将直流分量移到频谱图的中心
subplot(1,2,2),imshow(log(abs(C2))+1,[0 10]); %显示DCT变换结果
title('DCT系数');
C3=idct2(C1); %对矩阵C1做DCT逆变换
figure,imshow(uint8(C3)); %显示逆变换后的结果
title('原始图像');
附录三:
%matlab图像的连续小波变换
load wbarb; %从磁盘调入磁盘文件wbarb.mat
image(X); %将矩阵X显示为图像
colormap(map); %配合函数image()画出连续的灰度图
[cA1,cH1,cV1,cD1]=dwt2(X,'bior3.7'); %对X进行二维小波变换,bior3.7是双正样交条小波对应的滤波器
A1=upcoef2('a',cA1,'bior3.7',1);
H1=upcoef2('h',cH1,'bior3.7',1);
V1=upcoef2('v',cV1,'bior3.7',1);
D1=upcoef2('d',cD1,'bior3.7',1);
figure,colormap(map);title('原始图像');
subplot(2,2,1),image(wcodemat(A1,180)); %将矩阵显示为图像
title('Approximation A1') %显示图像的图头、标题
subplot(2,2,2),image(wcodemat(H1,255));
title('Horizontal Detail H1')
subplot(2,2,3),image(wcodemat(V1,255));
title('Vertical Detail V1')
subplot(2,2,4),image(wcodemat(D1,255));
title('Diagonal Detail D1')
X=2.0*idwt2(A1,H1,V1,D1,'bior3.7');
Y=imresize(X,0.5); %改变图像大小为原图的1/2
figure,image(Y);colormap(map);title('逆变换后的图像');
小波变换与傅里叶变换的对比异同
小波变换与傅里叶变换的对比、异同 一、基的概念 两者都是基,信号都可以分成无穷多个他们的和(叠加)。而展开系数就是基与信号之间的内积,更通俗的说是投影。展开系数大的,说明信号和基是足够相似的。这也就是相似性检测的思想。但我们必须明确的是,傅里叶是0-2pi 标准正交基,而小波是-inf到inf之间的基。因此,小波在实轴上是紧的。而傅里叶的基(正弦或余弦),与此相反。而小波能不能成为Reisz基,或标准稳定的正交基,还有其它的限制条件。此外,两者相似的还有就是PARSEVAL定理。(时频能量守恒)。 二、离散化的处理 傅里叶变换,是一种数学的精妙描述。但计算机实现,却是一步步把时域和频域离散化而来的。第一步,时域离散化,我们得到离散时间傅里叶变换(DTFT),频谱被周期化;第二步,再将频域离散化,我们得到离散周期傅里叶级数(DFS),时域进一步被周期化。第三步,考虑到周期离散化的时域和频域,我们只取一个周期研究,也就是众所周知的离散傅里叶变换(DFT)。这里说一句,DFT是没有物理意义的,它只是我们研究的需要。借此,计算机的处理才成为可能。所有满足容许性条件(从-INF到+INF积分为零)的函数,都可以成为小波。小波作为尺度膨胀和空间移位的一组函数也就诞生了。但连续取值的尺度因子和平移因子,在时域计算量和频域的混叠来说,都是极为不便的。用更为专业的俗语,叫再生核。也就是,对于任何一个尺度a和平移因子b的小波,和原信号内积,所得到的小波系数,都可以表示成,在a,b附近生成的小波,投影后小波系数的线性组合。这就叫冗余性。这时的连续小波是与正交基毫无关系的东西,它顶多也只能作为一种积分变换或基。但它的显微镜特点和相似性检测能力,已经显现出来了。为了进一步更好的将连续小波变换离散化,以下步骤是一种有效方法。第一步,尺度离散化。一般只将a二进离散化,此时b是任意的。这样小波被称为二进小波。第二步,离散b。怎么离散化呢?b取多少才合适呢?于是,叫小波采样定理的东西,就这样诞生了。也就是小波平移的最小距离(采样间隔),应该大于二倍小波基的最高频率(好像类似,记不清了)。所以b取尺度的整数倍就行了。也就是越胖的小波,对应频谱越窄,平移量应该越大,采样间隔越大。当然,第一二两步的频域理解,即在满足频域窗口中心是3倍的频域窗口半径的前提下,频域就在统计上是完美二分的。(但很多小波满足不了这个条件,而且频域窗口能量不?,所以只是近似二分的).这时的小波变换,称为离散二进小波变换.第三步,引入稳定性条件.也就是经过变换后信号能量和原信号能量有什么不等式关系.满足稳定性条件?后,也就是一个小波框架产生了可能.他是数值稳定性的保证.一个稍弱的稳定条件???,就是? 基于二维傅里叶变换和小波变换的图像稀疏表示 一、基于二维傅里叶变换的图像稀疏表示 傅里叶变换是数字图像处理技术的基础,其通过在时空域和频率域来回切换图像,对图像的信息特征进行提取和分析。一幅静止的数字图像可以看成是矩阵,因此,数字图像处理主要是对包含数据的矩阵进行处理。 经过对图像进行二维离散傅里叶变换可以得到它的频谱,进而得到我们所需要的特征。二维离散傅里叶变换及逆变换可以表示为: 其中u=0,1,2,...,M-1和v=0,1,2,...,N-1。其中变量u和v用于确定它们的频率,频域系统是由F(u,v)所张成的坐标系,其中u和v用做(频率)变量。空间域是由f(x,y)所张成的坐标系。 傅立叶频谱图上我们看到的明暗不一的亮点,其意义是指图像上某一点与邻域点差异的强弱,即梯度的大小,也即该点的频率的大小(可以这么理解,图像中的低频部分指低梯度的点,高频部分相反)。一般来讲,梯度大则该点的亮度强,否则该点亮度弱。下图为cameraman原图像及其频谱分布图: cameraman原图像大小为256*256,其傅里叶变换频谱图大小为256*256。 图像从频域到时域的变换过程称为重构过程,通过峰值信噪比(PSNR)对图像进行评价,公式如下: PSNR=10*log10((2^n-1)^2/MSE) MSE是原图像与处理后图像之间均方误差,n是每个采样值的比特数。通过取不同的大系数个数观察图像变化,单独取第1个大系数时: N=1 PSNR=12.2353所取频谱系数对应图 单独取第9个系数时: N=1 PSNR=6.3108第9个频谱系数对应图 N=2 PSNR= 13.1553所取频谱系数对应图 N=10 PSNR=15.4961 所取频谱系数对应图 N=50 PSNR=17.1111 所取频谱系数对应图 拉氏变换和傅里叶变换的关系 一、拉氏变换 1、拉氏变换的定义: 如果有一个以时间t 为自变量的实变函数 ()t f ,它的定义域是 0≥t ,,那么()t f 的的拉普拉斯变换定义为 ()()()0e d st F s L f t f t t ∞ -=?????? (2.10) s 是复变数, ωσj +=s (σ、ω均为实数), ?∞-0e st 称为拉普拉斯积分; )(s F 是函数 )(t f 的拉普拉斯变换,它是一个复变函数,通常也称 )(s F 为 )(t f 的象函数,而称 )(t f 为 )(s F 的原函数;L 是表示进行拉普拉斯变换的符号。 式(2.10)表明:拉氏变换是这样一种变换,即在一定条件下,它能把一实数域中的实变函数变换为一个在复数域内与之等价的复变函数 )(s F 。 2、拉氏变换的意义 工程数学中常用的一种积分变换。它是为简化计算而建立的实变量函数和复变量函数间的一种函数变换。对一个实变量函数作拉普拉斯变换,并在复数域中作各种运算,再将运算结果作拉普拉斯反变换来求得实数域中的相应结果,往往比直接在实数域中求出同样的结果在计算上容易得多。拉普拉斯变换的这种运算步骤对于求解线性微分方程尤为有效,它可把微分方程化为容易求解的代数方程来处理,从而使计算简化。在经典控制理论中,对控制系统的分析和综合,都是建立在拉普拉斯变换的基础上的。 在工程学上,拉普拉斯变换的重大意义在于:将一个信号从时域上,转换为复频域(s 域)上来表示;在线性系统,控制自动化上都有广泛的应用 二、傅里叶变换 1、傅里叶变换的定义: f(t )是t 的函数,如果t 满足狄里赫莱条件:具有有限个间断点;具有有限个极值点;绝对可积。则有下图①式成立。称为积分运算f(t )的傅立叶变换, ②式的积分运算叫做F (ω)的傅立叶逆变换。F (ω)叫做f(t )的像函数,f(t )叫做 F (ω)的像原函数。F (ω)是f(t )的像。f(t )是F (ω)原像。 ① 傅里叶变换 ② 详解傅里叶变换与小波变化 希望能简单介绍一下小波变换,它和傅立叶变换的比较,以及它在移动平台做motion detection的应用。如果不做特殊说明,均以离散小波为例子。考虑到我以前看中文资料的痛苦程度,我会尽量用简单,但是直观的方式去介绍。有些必要的公式是不能少的,但我尽量少用公式,多用图。另外,我不是一个好的翻译者,所以对于某些实在翻译不清楚的术语,我就会直接用英语。我并不claim我会把整个小波变换讲清楚,这是不可能的事,我只能尽力去围绕要点展开,比如小波变换相对傅立叶变换的好处,这些好处的原因是什么,小波变换的几个根本性质是什么,背后的推导是什么。我希望达到的目的就是一个小波变换的初学者在看完这个系列之后,就能用matlab或者别的工具对信号做小波变换的基本分析并且知道这个分析大概是怎么回事。 要讲小波变换,我们必须了解傅立叶变换。要了解傅立叶变换,我们先要弄清楚什么是”变换“。很多处理,不管是压缩也好,滤波也好,图形处理也好,本质都是变换。变换的是什么东西呢?是基,也就是basis。如果你暂时有些遗忘了basis的定义,那么简单说,在线性代 数里,basis是指空间里一系列线性独立的向量,而这个空间里的任何其他向量,都可以由这些个向量的线性组合来表示。那basis在变换里面啥用呢?比如说吧,傅立叶展开的本质,就是把一个空间中的信号用该空间的某个basis的线性组合表示出来,要这样表示的原因,是因为傅立叶变换的本质,是。小波变换自然也不例外的和basis有关了。再比如你用Photoshop去处理图像,里面的图像拉伸,反转,等等一系列操作,都是和basis的改变有关。 既然这些变换都是在搞基,那我们自然就容易想到,这个basis的选取非常重要,因为basis的特点决定了具体的计算过程。一个空间中可能有很多种形式的basis,什么样的basis比较好,很大程度上取决于这个basis服务于什么应用。比如如果我们希望选取有利于压缩的话,那么就希望这个basis能用其中很少的向量来最大程度地表示信号,这样即使把别的向量给砍了,信号也不会损失很多。而如果是图形处理中常见的线性变换,最省计算量的完美basis就是eigenvector basis了,因为此时变换矩阵T对它们的作用等同于对角矩阵(Tv_n= av_n,a是eigenvalue)。总的来说,抛开具体的应用不谈,所有的basis,我们都希望它们有一个共同的特点,那就是,容易计算,用最简单的方式呈现最多的信号特性。 好,现在我们对变换有了基本的认识,知道他们其实就是在搞基。当然,搞基也是分形式的,不同的变换,搞基的妙处各有不同。接下来先看看,傅立叶变换是在干嘛。 小波变换与傅里叶变换 的对比异同 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】基于傅里叶变换和小波变换的图像稀疏表示
拉氏变换和傅里叶变换的关系
详解傅里叶变换与小波变换
小波变换与傅里叶变换的对比异同