天天看点

图像处理 二维离散傅里叶变换DFT matlab代码图像处理领域离散傅里叶变换的作用二维离散傅里叶变换matlab代码

图像处理 二维离散傅里叶变换DFT matlab代码

  • 图像处理领域离散傅里叶变换的作用
  • 二维离散傅里叶变换
            • 二维离散傅里叶变换公式
            • 将二维的离散傅里叶变换进行转化
            • 将系数转化为矩阵形式
            • 注意,从矩阵的乘积i形式可以看出,原来是N个值,输出后依然是N个值,而且要注意,输出的N个值的每一个值和输入得每一个值都有关系。换句话说,输出的F(0),F(1),F(2)....F(N),之中的每一个值,比如F(1),都需要,输入的所有值做贡献。
            • f(x)的全部值对离散的傅氏变换四项中的每一项都产生影响。反之亦然。
  • matlab代码

图像处理领域离散傅里叶变换的作用

将图像由时空域,转换为频域

二维离散傅里叶变换

二维离散傅里叶变换公式

图像处理 二维离散傅里叶变换DFT matlab代码图像处理领域离散傅里叶变换的作用二维离散傅里叶变换matlab代码

将二维的离散傅里叶变换进行转化

将不好处理的二维离散傅里叶变换转化为进行两次一维处理

先处理行,再处理列

图像处理 二维离散傅里叶变换DFT matlab代码图像处理领域离散傅里叶变换的作用二维离散傅里叶变换matlab代码

公式如下:

图像处理 二维离散傅里叶变换DFT matlab代码图像处理领域离散傅里叶变换的作用二维离散傅里叶变换matlab代码

将系数转化为矩阵形式

图像处理 二维离散傅里叶变换DFT matlab代码图像处理领域离散傅里叶变换的作用二维离散傅里叶变换matlab代码

注意,从矩阵的乘积i形式可以看出,原来是N个值,输出后依然是N个值,而且要注意,输出的N个值的每一个值和输入得每一个值都有关系。换句话说,输出的F(0),F(1),F(2)…F(N),之中的每一个值,比如F(1),都需要,输入的所有值做贡献。

f(x)的全部值对离散的傅氏变换四项中的每一项都产生影响。反之亦然。

所以按照刚才将维的思路,进行矩阵的操作。

权值矩阵A,原函数矩阵FF

采用88的DFT操作,对每一个88图像块,进行一次操作

matlab代码

N=8;
A=zeros(N);
for k=0:N-1
    for m=0:N-1
        A(k+1,m+1)=(1/N)*exp(-2*pi*i*(k*m/N));%8*8的 w 的矩阵
    end
end

[Hh,Hw]=size(WYY);
X=ceil(Hw/8)*8;
Y=ceil(Hw/8)*8;
hall_new=zeros(X,Y);
hall_new(1:Hh,1:Hw)=WYY;%把Y分量赋值进去
%hall_new(Hh+1:X,1:Hw)=repmat(WYY(Hh,1:Hw),X-Hh,1);
%hall_new(1:Hh,Hw+1:Y)=repmat(WYY(1:Hh,Hw),1,Y-Hw);
m=X/8;%行块数
n=Y/8;%列块数
for i1=1:m
     for i2=1:n
         FF=double(hall_new((i1-1)*8+1:i1*8,(i2-1)*8+1:i2*8));%按顺序取8*8的每一块
         BB((i1-1)*8+1:i1*8,(i2-1)*8+1:i2*8)=N*A*FF*A';%DFT变换,变成两次一维度处理,另一个函数,先处理一行,一行的8个值都会产生影响,以行和列为整体看
         KK((i1-1)*8+1:i1*8,(i2-1)*8+1:i2*8)=A'*BB((i1-1)*8+1:i1*8,(i2-1)*8+1:i2*8)*A;%DFT反变换
     end
end
           

未完待续