matlab图像压缩代码
时间: 2023-09-17 07:07:58 浏览: 46
下面是一个基于离散余弦变换(DCT)的 MATLAB 图像压缩代码示例:
```matlab
% 读取图像
img = imread('example.jpg');
imshow(img);
% 将图像转换为灰度图
gray_img = rgb2gray(img);
imshow(gray_img);
% 对图像进行 DCT 变换
dct_img = dct2(gray_img);
imshow(log(abs(dct_img)), []);
% 量化 DCT 系数
quantization_matrix = [16 11 10 16 24 40 51 61;
12 12 14 19 26 58 60 55;
14 13 16 24 40 57 69 56;
14 17 22 29 51 87 80 62;
18 22 37 56 68 109 103 77;
24 35 55 64 81 104 113 92;
49 64 78 87 103 121 120 101;
72 92 95 98 112 100 103 99];
quantized_dct_img = round(dct_img ./ quantization_matrix);
imshow(log(abs(quantized_dct_img)), []);
% 反量化 DCT 系数
dequantized_dct_img = quantized_dct_img .* quantization_matrix;
imshow(log(abs(dequantized_dct_img)), []);
% 对反量化的 DCT 系数进行反变换
reconstructed_img = idct2(dequantized_dct_img);
imshow(reconstructed_img, []);
```
这段代码将图像加载到 MATLAB 中,将其转换为灰度图像,对其进行 DCT 变换,然后将 DCT 系数量化以减少图像的大小。然后,DCT 系数被反量化,并进行逆 DCT 变换以重建图像。量化矩阵可以根据需要进行更改。