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');