clc;
clear all;
close all;
I_color=imread('lena.jpg');
I=double(rgb2gray(I_color));
[r,c,p]= size(I);
subplot(2,2,1);
imshow(I_color);
title('Original Image');
bs=8;
nob=r/bs;
xx=0;
% creating cos and sine matrix
C=zeros(8,8);
S=zeros(8,8);
for u=0:7
for x=0:7
C(u+1,x+1)= cos((pi/4)*(u*x)); %cos matrix
S(u+1,x+1)= sin((pi/4)*(u*x)); %sine matrix
end
end
block = zeros(8,8,4096);
Ctransform = zeros(8,8,4096);
Stransform = zeros(8,8,4096);
for k=1:r/bs
for j=1:c/bs
block(:,:,xx+j)= I(bs*(k-1)+1:bs*(k-1)+bs,bs*(j-1)+1:bs*(j-1)+bs);
Ctransform(:,:,xx+j)= immultiply(C,block(:,:,xx+j));
Stransform(:,:,xx+j)= immultiply(S,block(:,:,xx+j));
end
xx=xx+(r/bs);
end
yy=0;
Fblock=zeros(8,8,4096);
F=zeros(512,512);
%calculation for FFT
for M=1:r/bs
for N=1:c/bs
Fblock(:,:,yy+N)=Ctransform(:,:,yy+N) + (imag((Stransform(:,:,yy+N))));
F(bs*(M-1)+1:bs*(M-1)+bs,bs*(N-1)+1:bs*(N-1)+bs)= Fblock(:,:,yy+N);
end
yy=yy+(r/bs);
end
zz=0;
%calculation of IFFT
for K=1:r/bs
for L=1:c/bs
IFblock(:,:,zz+N)= (1/4096)*((Fblock(:,:,zz+N))*C) - (Fblock(:,:,zz+N))*(imag(S) );
original(bs*(M-1)+1:bs*(M-1)+bs,bs*(N-1)+1:bs*(N-1)+bs)= IFblock(:,:,zz+N);
end
zz=zz+(r/bs);
end
subplot(2,2,2);
imshow(uint8(F));
title('FFT Of Image');
subplot(2,2,3);
imshow((original));
title('IFFT of Image');