matlab实现图片压缩
时间: 2023-12-06 16:38:56 浏览: 90
基于Matlab的图像压缩实现
4星 · 用户满意度95%
以下是使用DCT算法实现图像无损压缩的Matlab代码示例:
```matlab
% 读取原始图像
img = imread('lena.bmp');
% 显示原始图像
subplot(2,2,1);
imshow(img);
title('Original Image');
% 将图像转换为灰度图像
gray_img = rgb2gray(img);
% 显示灰度图像
subplot(2,2,2);
imshow(gray_img);
title('Gray Image');
% 对灰度图像进行DCT变换
dct_img = dct2(gray_img);
% 设置压缩比
ratio = 0.5;
% 计算需要保留的系数个数
coeff_num = round(ratio * numel(dct_img));
% 对DCT系数进行排序
[~, idx] = sort(abs(dct_img(:)), 'descend');
% 保留前coeff_num个系数,其余系数置零
dct_img(idx(coeff_num+1:end)) = 0;
% 对DCT系数进行逆变换
idct_img = idct2(dct_img);
% 显示压缩后的图像
subplot(2,2,3);
imshow(idct_img);
title(sprintf('Compressed Image (Ratio=%.2f)', ratio));
% 计算压缩率
compress_ratio = numel(dct_img) / coeff_num;
% 显示压缩率
subplot(2,2,4);
text(0.1, 0.5, sprintf('Compression Ratio=%.2f', compress_ratio));
axis off;
```
该代码将lena.bmp图像进行了DCT变换,并根据设定的压缩比对DCT系数进行了保留和置零操作,最后进行了逆变换得到压缩后的图像,并计算了压缩率。
阅读全文