写一段代码MATLAB图像压缩huffman编码
时间: 2023-08-06 16:21:14 浏览: 46
好的,下面是一个简单的 MATLAB 图像压缩代码,使用 Huffman 编码进行压缩:
```
% 读入图像
img = imread('lena.png');
% 将图像转换为灰度图像
gray_img = rgb2gray(img);
% 计算灰度图像的直方图和概率分布
[counts, ~] = imhist(gray_img);
probs = counts / sum(counts);
% 使用 Huffman 编码进行压缩
dict = huffmandict(0:255, probs);
comp = huffmanenco(gray_img(:), dict);
% 解码压缩数据
decomp = huffmandeco(comp, dict);
% 将解码后的数据转换为图像
decoded_img = reshape(decomp, size(gray_img));
% 显示原始图像和解码后的图像
figure;
subplot(1,2,1);
imshow(gray_img);
title('Original Image');
subplot(1,2,2);
imshow(decoded_img);
title('Decoded Image');
% 计算压缩比率
original_size = numel(gray_img) * 8;
compressed_size = numel(comp);
compression_ratio = original_size / compressed_size;
disp(['Compression ratio: ', num2str(compression_ratio)]);
```
这段代码将图像转换为灰度图像,计算灰度图像的直方图和概率分布,然后使用 Huffman 编码进行压缩。压缩数据可以使用 `huffmanenco` 函数进行编码,解码数据可以使用 `huffmandeco` 函数进行解码。最后,代码将解码后的数据转换为图像,并计算压缩比率。