采用哈夫曼编码对图像进行压缩MATLAB代码
时间: 2023-10-04 21:14:07 浏览: 51
以下是MATLAB代码,实现对图像采用哈夫曼编码进行压缩:
```matlab
% 读入图像
img = imread('test.jpg');
% 将图像转换为灰度图像
img_gray = rgb2gray(img);
% 统计图像中每个像素值的出现次数
counts = imhist(img_gray);
% 构建哈夫曼树
symbols = [0:255]';
[dict, ~] = huffmandict(symbols, counts/sum(counts));
% 将图像中的像素值编码为二进制码
img_encoded = huffmanenco(img_gray(:), dict);
% 计算压缩比
original_size = numel(img_gray) * 8;
compressed_size = numel(img_encoded);
compression_ratio = original_size / compressed_size;
% 解码压缩后的二进制码
img_decoded = huffmandeco(img_encoded, dict);
% 将解码后的像素值还原为图像
img_reconstructed = reshape(img_decoded, size(img_gray));
% 显示原图像和压缩后的图像
figure;
subplot(1,2,1);imshow(img_gray);title('Original Image');
subplot(1,2,2);imshow(img_reconstructed);title('Reconstructed Image');
```
该代码首先读入图像并将其转换为灰度图像,然后统计图像中每个像素值的出现次数,利用这些统计信息构建哈夫曼树,并将图像中的像素值编码为二进制码。此后,计算压缩比并解码压缩后的二进制码,将解码后的像素值还原为图像,并显示原图像和压缩后的图像。