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), '%']);
To embed this project on your website, copy the following code and paste it into your website's HTML: