资源描述
数字图像处理作业
机电工程学院
学号
姓名
题目:数字图像处理的频域变换有哪些?是对其中三种进行原理分析(含MATLAB程序)。
数字图像处理的频域变换有积分变换,离散傅里叶变换(包括一维离散傅里叶变换,一维快速傅里叶变换,二维离散傅里叶变换和二维快速傅里叶变换),正交变换,离散余弦变换,沃尔什变换和哈达玛变换,哈尔变换,,K-L变换,霍特林变换,拉东变换和小波变换等。
下面就离散傅里叶变换,哈达玛变换和离散余弦变换进行原理分析:
一. 离散傅里叶变换(DFT)
傅立叶变换是数字图像处理中应用最广的一种变换,其中图像增强、图像复原
和图像分析与描述等,每一类处理方法都要用到图像变换,尤其是图像的傅立
叶变换。
(1)二维离散傅里叶变换
设f(x,y)(x=0,1,...,M-1;y=0,1,...,N-1)是一幅M×N的图像,其二维离散傅立叶变换(DFT)为:
逆变换为:
式中,
在DFT变换对中, 称为离散信号 的频谱,而 称为幅度谱, 为相位角,功率谱为频谱的平方,它们之间的关系为:
x,y为空间域采样值,u,v为频率采样值,F(u,v)称为离散信号f(x,y)的频谱。
(2)二维快速离散傅里叶变换
快速傅里叶变换(FFT)并不是一种新的变换,它是离散傅里叶变换(DFT)的一种算法。这种方法是在分析离散傅里叶变换(DFT)中的多余运算的基础上,进而消除这些重复工作的思想指导下得到的,所以在运算中大大节省了工作量,达到了快速的目的。
基于二维离散傅里叶变换的分离性,二维离散FFT算法可以用两个一维FFT算法来实现。
每一列求变换再乘以N
再对F(x,v)每1行求傅里叶变换
求的逆变换得:
图表 1由2步1-D变换计算2-D变换
(3)MATLAB实现数字图像傅立叶变换的程序示例
[I,map]=imread(‘原图像名’); %读入原图像文件
figure(1); imshow(I, map); %设定窗口,显示原图像
colorbar; % colorbar 函数用显示图像的颜色条
J = fft2(I); % fft2 函数用于数字图像的二维傅立叶变换
K = fftshift(J); % 一般在计算图形函数的傅立叶变换时,坐标原点在函数图形的中心位置处,而计算机在对图像执行傅立叶变换时是以图像的左上角为坐标原点。所以使用函数fftshift进行修正,使变换后的直流分量位于图形的中心
RR=real(K); %取傅立叶变换的实部
II=imag(K); %取傅立叶变换的虚部
A=sqrt(RR.^2+II.^2); %计算频谱幅值
A=(A-min(min(A)))/ (max(max(A))-min(min(A)))*225; %归一化
figure(2); imshow(A,[]); %设定窗口,显示原图像的频谱
colorbar;
N=ifft2(J)/255; % ifft2 函数用于数字图像的二维傅立叶反变换
figure(3); imshow(N,[]);
colorbar;
二.哈达玛变换
(1)一维离散哈达玛变换
当N=2n,一维哈达玛正变换核与反变换核相同,为
因此,一维哈达玛变换对可表示为
(u=0,1,2,...,N-1 )
( )
哈达玛变换核除了 因子之外,由一系列的+1和-1组成。如N=8时的哈达玛变换核用矩阵表示为:
由此矩阵可得出一个非常有用的结论,即 2N 阶的哈达玛变换矩阵可由N阶的变换矩阵按下述规律形成
而最低阶(N=2)的哈达玛变换矩阵为
利用这个性质求N阶(N=2n)的哈达玛变换矩阵要比直接用定义式来求此矩阵速度快的多,此结论提供了一种快速哈达玛变换(FHT)。
(2)二维离散哈达玛变换
二维离散哈达玛变换的正变换核和反变换核相同,为
这里M=2m,N=2n。则对应的二维哈达变换对可表示为:
( u=0,1,2,...,M-1;v=0,1,2,...,N-1)
和
(x=0,1,2,...,M-1;v=0,1,2,...,N-1 )
可以看出,二维离散哈达玛变换的正反变换核具有可分离性,因此可以通过两次一维变换来实现一个二维变换。
(3)MATLAB实现数字图像离散一维哈达玛变换的程序示例
clc;
cr=0.5;
I=imread('8.tif');
I1=double(I)/255;%图像为256级灰度图像,对图像进行归一化操作
subplot(1,2,1);imshow(I1);
xlabel('(a) 原始图像');%显示原始图像
disp('原始图像的大小为:');
whos('I1')%对图像进行哈达玛变换
T=hadamard(8);%产生8*8的哈达玛矩阵
htcoe=blkproc(I1,[8 8],'P1*x*P2',T,T);%将图像分割为8*8的子图像进行FFT
coevar=im2col(htcoe,[8 8],'distinct');%降变换系数矩阵重新排列
coe=coevar;
[y,ind]=sort(coevar);
[m,n]=size(coevar);%根据压缩比确定要变0的系数个数
三.离散余弦变换(DCT)
图像处理中常用的正交变换除了傅里叶变换外,还有其它变换。在图像处理中常用到的有离散余弦变换等。
(1)一维离散余弦变换
一维离散余弦变换的定义由下式表示:
设{f(x)|x=0, 1, …, N-1}为离散的信号列。
(u, x=0, 1, 2, …, N-1)
式中F(u)是第u个余弦变换系数,是广义频率变量,u=1,2,3,...N-1;f(x是时域N点实序列.
一维离散余弦反变换由下式表示:
式中, x, u=0, 1, 2, …, N-1。
一维DCT变换实际上就是将信号f(x)分解成直流分量(u=0),基波分量(u=1)和各次谐波分量(u>1),将信号的分析从时域转移到频域。
(2)二维离散余弦变换
二维DCT定义如下:设f(x, y)为M×N的数字图像矩阵,则
式中: x, u=0, 1, 2, …, M-1; y, v=0, 1, 2, …, N-1。
二维DCT逆变换定义如下:
式中:x, u=0, 1, 2, …, M-1; y, v=0, 1, 2, …, N-1。
通常根据可分离性, 二维DCT可用两次一维DCT来完成, 其算法流程与DFT类似, 即
(3)MATLAB实现数字图像离散余弦变换的程序示例
计算并显示真彩图像余弦变换的MATLAB程序如下:
Subplot(2,1,1);
RGB=imread('image2.jpg'); %装入真彩图像
imshow(RGB); %显示彩色图像
GRAY=rgb2gray(RGB); %将真彩图像转换为灰度图像imshow(GRAY); %显示灰度图像如图3.10(a)所示
title('原始图像');
DCT=dct2(GRAY); %进行余弦变换
subplot(2,1,2);
imshow(log(abs(DCT)),[ ]); %显示余弦变换如图3.10(b)所示
title('离散余弦变换');
展开阅读全文