圖像處理 二維離散傅裡葉變換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
未完待續