哈夫曼编码图像压缩Matlab

哈夫曼编码图像压缩Matlab:

图像压缩有多种方法,请选择一种图像压缩方法实现对图像的压缩,要求显示出解码重建图像。

clear;
clc;
close all;
A=imread('as3.jpg');
I=rgb2gray(A);%将彩色图像转为灰度图像[M,N] = size(I);%将图像转为二维矩阵
I1 = I(:);%转为一维向量
P = zeros(1,256);
%获取各符号的概率;
for i = 0:255P(i+1) = length(find(I1 == i))/(M*N);
endk = 0:255;
dict = huffmandict(k,P); %根据灰度级k和概率数组P生成Huffman字典
enco = huffmanenco(I1,dict); %哈夫曼编码
deco = huffmandeco(enco,dict); %哈夫曼解码
Ide = col2im(deco,[M,N],[M,N],'distinct'); %把向量重新转换成图像块;subplot(1,2,1);imshow(I);title('原始图像');
subplot(1,2,2);imshow(uint8(Ide));title('解码图像');B=length(enco);%原始图像比特长度
sumcode=length(deco);%编码后比特长度
CR=sumcode/B;%计算压缩率
disp(['原始图像 Bit:          ',num2str(B),' bit']);
disp(['压缩图像 Bit:          ',num2str(sumcode),' bit']);
disp(['压缩率:                ',num2str(CR)]);

在这里插入图片描述
在这里插入图片描述
说明:
huffmandict函数建立哈夫曼字典:需要传入的第一个参数是图像的各个灰度值,第二个参数是图像的各个灰度值的出现概率。
调用格式:
在这里插入图片描述
huffmanenco函数建立哈夫曼编码:需要传入的第一个参数是图像的一维矢量数据,第二个参数是dict哈夫曼字典。
调用格式:
在这里插入图片描述
huffmandeco函数进行哈夫曼译码:需要传入的第一个参数是哈夫曼编码数据,第二个参数是哈夫曼字典。
调用格式:
在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部