matlab图像傅立叶变换&&逆变换

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/27 16:58:04

matlab图像傅立叶变换&&逆变换

二维傅立叶变换和二维傅立叶逆变换:
i=imread('e:\w01.tif');figure(1);imshow(i);colorbar;j=fft2(i);k=fftshift(j);figure(2);l=log(abs(k));
imshow(l,[]);colorbarn=ifft2(j)/255;figure(3);imshow(n);colorbar;图像的变换
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 大小.
A=fftn(X,SIZE)
其中,SIZE 是一个向量,它们每一个元素都将指定 X 相应维进行零填充后的长度.
函数 ifft、ifft2 和 ifftn的调用格式于对应的离散傅立叶变换函数一致.
例子:图像的二维傅立叶频谱
% 读入原始图像
I=imread('lena.bmp');imshow(I)% 求离散傅立叶频谱
J=fftshift(fft2(I));figure;imshow(log(abs(J)),[8,10])
2. 离散余弦变换的 Matlab 实现
2.1. dct2 函数
功能:二维 DCT 变换
格式:B=dct2(A)
B=dct2(A,m,n)
B=dct2(A,[m,n])
说明: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)
说明:B=idct2(A) 计算 A 的 DCT 反变换 B ,A 与 B 的大小相同;B=idct2(A,m,n) 和 B=idct2(A,[m,n]) 通过对 A 补 0 或剪裁,使 B 的大小为 m×n.