function f1=IDCT2D(A)

% berechnet die zweidimensionale inverse DCT-II der (M x N)- Matrix A 
% d.h. B= (C_M^II)T* A *(C_N^II)


[M,N]=size(A); %Dimension von A
%Bringe A auf eine Matrix mit Zweierpotenzdimension 

t1=floor(log2(M));
M2=2^t1*2;
if M==M2/2  M2=M; 
end	
t2=floor(log2(N));
N2=2^t2*2;
if N==N2/2 N2=N; 
end	
B=zeros(M2,N2);
for j=1:M for k=1:N B(j,k)=A(j,k); end; end;

f2=zeros(N2,M2);
f1=zeros(M2,N2);

for k=1:N f2(k,:)=IDCT2(B(:,k)'); end
f3=f2';
for j=1:M f1(j,:)= IDCT2(f3(j,:));  end	
	
f1=f1/sqrt(M*N);