霍夫曼算法计算压缩率

为什么我的这段代码计算出的压缩率为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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值