clc;
clear;
close all;

% بارگذاری تصویر
RGB = imread('autumn.tif');

% تبدیل تصویر رنگی به خاکستری
I = double(rgb2gray(RGB));

% انجام تجزیه SVD
[U, S, V] = svd(I);

% استخراج مقادیر تکین
sigma = diag(S);

% رسم نمودار مقادیر تکین
figure;
semilogy(sigma, 'LineWidth', 1.5);
title('Singular Values');
xlabel('Index');
ylabel('Singular Value');
grid on;

% محاسبه انرژی
Energy = cumsum(sigma.^2) / sum(sigma.^2);

% پیدا کردن رتبه مناسب برای حفظ حداقل ۹۵ درصد انرژی
k = find(Energy >= 0.95, 1);

% بازسازی تصویر با رتبه به دست آمده
I_approx = U(:, 1:k) * S(1:k, 1:k) * V(:, 1:k)';

% نمایش تصاویر
figure;

% نمایش تصویر اصلی
subplot(1, 2, 1);
imshow(uint8(I));
title('Original Grayscale Image');

% نمایش تصویر بازسازی شده
subplot(1, 2, 2);
imshow(uint8(I_approx));
title(['Reconstructed Image, k = ', num2str(k)]);

% نمایش رتبه و درصد انرژی حفظ شده
disp(['Required Rank = ', num2str(k)]);
disp(['Preserved Energy = ', num2str(Energy(k) * 100), '%']);

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: