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