图形变换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 大小。
 
              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,[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。
 
2.3.  dctmtx函数
功能:计算 DCT 变换矩阵
格式:D=dctmtx(n)
说明:D=dctmtx(n) 返回一个 n×n 的 DCT 变换矩阵,输出矩阵 D 为 double 类型。
 
 
3.  图像小波变换的 Matlab 实现
 
3.1  一维小波变换的 Matlab 实现
(1) dwt 函数
功能:一维离散小波变换
格式:[cA,cD]=dwt(X,'wname')
              [cA,cD]=dwt(X,Lo_D,Hi_D)
说明:[cA,cD]=dwt(X,'wname') 使用指定的小波基函数 'wname' 对信号 X 进行分解,cA、cD 分别为近似分量和细节分量;[cA,cD]=dwt(X,Lo_D,Hi_D) 使用指定的滤波器组 Lo_D、Hi_D 对信号进行分解。
(2) idwt 函数
功能:一维离散小波反变换
格式:X=idwt(cA,cD,'wname')
              X=idwt(cA,cD,Lo_R,Hi_R)
              X=idwt(cA,cD,'wname',L)
              X=idwt(cA,cD,Lo_R,Hi_R,L)
说明:X=idwt(cA,cD,'wname') 由近似分量 cA 和细节分量 cD 经小波反变换重构原始信号 X 。
              'wname' 为所选的小波函数
              X=idwt(cA,cD,Lo_R,Hi_R) 用指定的重构滤波器 Lo_R 和 Hi_R 经小波反变换重构原始信号 X 。
              X=idwt(cA,cD,'wname',L) 和 X=idwt(cA,cD,Lo_R,Hi_R,L) 指定返回信号 X 中心附近的 L 个点。
 
3.2  二维小波变换的 Matlab 实现
 
                  二维小波变换的函数
-------------------------------------------------
        函数名                              函数功能
---------------------------------------------------
        dwt2                      二维离散小波变换
    wavedec2            二维信号的多层小波分解
        idwt2                    二维离散小波反变换
    waverec2              二维信号的多层小波重构
    wrcoef2                  由多层小波分解重构某一层的分解信号
    upcoef2                  由多层小波分解重构近似分量或细节分量
    detcoef2                提取二维信号小波分解的细节分量
    appcoef2              提取二维信号小波分解的近似分量
    upwlev2                二维小波分解的单层重构
    dwtpet2                二维周期小波变换
    idwtper2              二维周期小波反变换
-------------------------------------------------------------
 
(1) wcodemat 函数
功能:对数据矩阵进行伪彩色编码
格式:Y=wcodemat(X,NB,OPT,ABSOL)
              Y=wcodemat(X,NB,OPT)
              Y=wcodemat(X,NB)
              Y=wcodemat(X)
说明:Y=wcodemat(X,NB,OPT,ABSOL) 返回数据矩阵 X 的编码矩阵 Y ;NB 伪编码的最大值,即编码范围为 0~NB,缺省值 NB=16;
            OPT 指定了编码的方式(缺省值为 'mat'),即:
                                OPT='row' ,按行编码
                                OPT='col' ,按列编码
                                OPT='mat' ,按整个矩阵编码
            ABSOL 是函数的控制参数(缺省值为 '1'),即:
                                ABSOL=0 时,返回编码矩阵
                                ABSOL=1 时,返回数据矩阵的绝对值 ABS(X)
 
(2) dwt2 函数
功能:二维离散小波变换
格式:[cA,cH,cV,cD]=dwt2(X,'wname')
              [cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D)
说明:[cA,cH,cV,cD]=dwt2(X,'wname')使用指定的小波基函数 'wname' 对二维信号 X 进行二维离散小波变幻;cA,cH,cV,cD 分别为近似分量、水平细节分量、垂直细节分量和对角细节分量;[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D) 使用指定的分解低通和高通滤波器 Lo_D 和 Hi_D 分解信号 X 。
 
(3) wavedec2 函数
功能:二维信号的多层小波分解
格式:[C,S]=wavedec2(X,N,'wname')
              [C,S]=wavedec2(X,N,Lo_D,Hi_D)
说明:[C,S]=wavedec2(X,N,'wname') 使用小波基函数 'wname' 对二维信号 X 进行 N 层分解;[C,S]=wavedec2(X,N,Lo_D,Hi_D) 使用指定的分解低通和高通滤波器 Lo_D 和 Hi_D 分解信号 X 。
 
(4) idwt2 函数
功能:二维离散小波反变换
格式:X=idwt2(cA,cH,cV,cD,'wname')
              X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R)
              X=idwt2(cA,cH,cV,cD,'wname',S)
              X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S)
说明:X=idwt2(cA,cH,cV,cD,'wname') 由信号小波分解的近似信号 cA 和细节信号 cH、cH、cV、cD 经小波反变换重构原信号 X ;X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R) 使用指定的重构低通和高通滤波器 Lo_R 和 Hi_R 重构原信号 X ;X=idwt2(cA,cH,cV,cD,'wname',S) 和 X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S) 返回中心附近的 S 个数据点。
 
(5) waverec2 函数
说明:二维信号的多层小波重构
格式:X=waverec2(C,S,'wname')
              X=waverec2(C,S,Lo_R,Hi_R)
说明:X=waverec2(C,S,'wname') 由多层二维小波分解的结果 C、S 重构原始信号 X ,'wname' 为使用的小波基函数;X=waverec2(C,S,Lo_R,Hi_R) 使用重构低通和高通滤波器 Lo_R 和 Hi_R 重构原信号。


 

   

 

你可能感兴趣的:(图形变换Matlab)