clear all
close all

% Einlesen des Bildes 
A1 = imread('test.jpg');
s = 'test';
% Transformation ins double Format
A2 = double(A1);

size(A2(:,:,1)) 

% Singulärwertzerlegung der einzelnen 
% RGB-Komponenten bestimmen 
[U1,S1,V1] = svd(A2(:,:,1));
[U2,S2,V2] = svd(A2(:,:,2));
[U3,S3,V3] = svd(A2(:,:,3));
% Anzahl zu verwendender Singulärwerte
k=50;     
kstr=num2str(k);
% komprimierte Matrizen bestimmen
Ak1 = U1(:,1:k)*S1(1:k,1:k)*V1(:,1:k)';
Ak2 = U2(:,1:k)*S2(1:k,1:k)*V2(:,1:k)';
Ak3 = U3(:,1:k)*S3(1:k,1:k)*V3(:,1:k)';
% Rücktransformation in das Bildformat
Ab(:,:,1)=Ak1;
Ab(:,:,2)=Ak2;
Ab(:,:,3)=Ak3;
% Dateinamen für die Zieldatei bestimmen
filename=strcat(s,'_',kstr,'.png');
% Bilddatei unter dem Dateinamen speichern
imwrite(uint8(Ab),filename,'png');
