【图像压缩】基于主成分分析PCA实现图像压缩(含压缩比 贡献率)附Matlab代码

% 加载需要压缩的图像
original_image = imread(‘your_image.jpg’);
imshow(original_image);
title(‘Original Image’);

% 将彩色图像转换为灰度图像
gray_image = rgb2gray(original_image);

% 将灰度图像转换为 double 类型
gray_image = double(gray_image);

% 进行主成分分析(PCA)
[U, S, V] = svd(gray_image);
compressed_ratio = 0.1; % 设定压缩比,这里为 0.1
k = round(compressed_ratio * min(size(gray_image))); % 计算保留的主成分数

% 保留前 k 个主成分
U_compressed = U(:, 1:k);
S_compressed = S(1:k, 1:k);
V_compressed = V(:, 1:k);

% 重构压缩后的图像
compressed_image = U_compressed * S_compressed * V_compressed’;
compressed_image = uint8(compressed_image);

% 计算原始图像和压缩后图像的贡献率
total_energy = sum(diag(S).^2);
compressed_energy = sum(diag(S_compressed).^2);
contribution_rate = compressed_energy / total_energy;

% 显示压缩后的图像
figure;
imshow(compressed_image);
title(‘Compressed Image’);

% 显示压缩比和贡献率
disp(['压缩比: ', num2str(1/compressed_ratio)]);
disp(['贡献率: ', num2str(contribution_rate)]);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值