matlab dct2图像压缩
时间: 2023-12-12 09:35:19 浏览: 57
MATLAB中的DCT(离散余弦变换)在JPEG图像压缩中有着广泛的应用。下面是一个MATLAB实现的DCT图像压缩的例子:
```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);
% 保留DCT系数的前50%
dct_coef = dct_img;
dct_coef(26:end,:) = 0;
dct_coef(:,26:end) = 0;
% 对DCT系数进行逆变换
idct_img = idct2(dct_coef);
% 显示压缩后的图像
subplot(2,2,3);
imshow(idct_img);
title('Compressed Image (50%)');
% 计算压缩率
ori_size = numel(gray_img);
com_size = nnz(dct_coef);
ratio = com_size/ori_size;
% 显示压缩率
subplot(2,2,4);
text(0.1,0.5,sprintf('Compression Ratio: %.2f%%',ratio*100));
axis off;
```
上述代码中,我们首先读取一张图像,然后将其转换为灰度图像。接着,我们对灰度图像进行DCT变换,并保留DCT系数的前50%。最后,我们对DCT系数进行逆变换,得到压缩后的图像,并计算压缩率。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)