霍夫曼算法计算压缩率

本文档探讨了一个关于计算霍夫曼编码压缩率的问题,代码读取并处理图像,转换为灰度图,计算像素值概率,构建霍夫曼树并编码图像。然而,计算出的压缩率仅为1.4294e-07,可能存在错误。作者寻求帮助以修正这个问题。代码中包括`huffbuild`和`huffmanEncode`函数,用于构建霍夫曼树和编码图像。
摘要由CSDN通过智能技术生成

为什么我的这段代码计算出的压缩率为1.4294e-07,是哪里出问题了麻烦大神帮忙纠正

% 读入原始图像
X = imread('D:\图像处理实验\第五次实验\实验五_图像编码\lenna_8.bmp');

original = numel(X)*8

% 将图像转换成灰度图,并将图像数据格式转换为double类型
Y = double(im2gray(X));
Y = round(Y);
[M, N] = size(Y);

% 计算图像像素值的直方图
h = imhist(Y);

% 计算每个像素值出现的概率
p = h / (M * N);

% 构建霍夫曼树
[~, leaves, code] = huffbuild(p);

% 对图像进行编码
comp = huffmanEncode(Y, code, leaves);

% 计算压缩率
bits_per_pixel = numel(comp) / (M * N);
compression_ratio = bits_per_pixel / original;

disp(['压缩率为: ' num2str(compression_ratio)]);

function [root, leaves, code] = huffbuild(p)
% 构建霍夫曼树
%
% 输入参数:
% p:每个像素值出现的概率
%
% 输出参数:
% root:霍夫曼树的根节点
% leaves:霍夫曼树的叶子节点
% code:每个像素值对应的霍夫曼编码

n = numel(p

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值