function kompression2D
%Hauptprogramm zur Kompression durch DCT und Quantisierung
clf reset
clc
clear all;
close all;
echo off


%input image
input_s=0;

if input_s==0              %Shannon-Bild
    a=imread ('Shannon_2.jpg');
	b=a(1:336,1:264); %336, 264
	f=double(b);
%	f=a/256;
[N1,N2] = size(f)
end

figure,imagesc(f); axis image
set(gca,'FontSize',15);
colormap(gray);

% Teile Bild in (8 x 8) Blšcke, verschiebe um 128 und wende DCT auf jeden Block an.
% wende danach Quantisierung an und transformiere zurŸck, verschiebe zurŸck
% Voraussetzung: N1, N2 sind durch 8 teilbar.
M1= floor(N1/8);
M2=floor(N2/8);

for j=0:M1-1
	for k= 0:M2-1
	   for j1=1:8
		   for k1=1:8
			   A1(j1,k1)= f(j1+8*j,k1+k*8)-128;
		   end;
	   end;
	  % A1
	   B1= DCT2D(A1);
	 % Quantisierung
	 C1=zeros(8,8);
	 C1(1,1)=B1(1,1);
	 C1(1,2)=B1(1,2);
	 C1(2,1)=B1(2,1);
	 C1(2,2)=B1(2,2);
	 C1(3,1)=B1(3,1);
	 C1(1,3)=B1(1,3);
	 C1(1,4)=B1(1,4);
	 C1(2,3)=B1(2,3);
	 C1(3,2)=B1(3,2);
	 C1(4,1)=B1(4,1);
	 %RŸcktransformation
	 B1=IDCT2D(C1);
	 %B1
	 for j1=1:8
		 for k1=1:8
			   f1(j1+8*j,k1+8*k)= B1(j1,k1)+128;
		 end;
	 end;
 end;
end;

figure,imagesc(f1); axis image
set(gca,'FontSize',15);
title(sprintf( 'Kompressionsrate',10/64), 'FontSize',15);
colormap(gray);

	 
			 
	 
	   
	%	A1= [f(8*(j-1)+1,:);f(8*(j-1)+2,:); f(8*(j-1)+3,:); f(8*(j-1)+4,:); f(8*(j-1)+5,:); f(8*(j-1)+6,:); f(8*(j-1)+7,:); f(8*(j-1)+8,:)]; 
    %    A2=[ (:,8*(k-1)+1), 
		
