f=[119 123 168 119;123 119 168 168];
f=[f;119 119 107 119;107 107 119 119]; %f有8个不同的值
p=hist(f(:),8); %求得p中每个元素出现的次数
p=p/sum(p); %求得p中每个值出现的概率
h=entropy(f); %求得f的熵
f2=uint8([2 3 4 2; 3 2 4 4; 2 2 1 2; 1 1 2 2]); %f2是4x4数组
whos('f2') ; %打印f2的相关信息
%先统计f2中的数据出现的概率,然后进行Huffman编码
c=huffman(hist(double(f2(:)),4)); %c是码表,共4个元素
hlf2=c(f2(:))' %利用码表c对原矩阵f2进行编码,显示编码后的数据
whos('hlf2') %由于采用double类型编码,编码后长度加大
h3f2=mat2huff(f2);%利用mat2huff函数对f2进行Huffman编码,输出为二进制流的形式
whos('h3f2') %输出h3f2为一个结构体,存储有码表信息和编码信息
hcode=h3f2.code; %hcode 是编码后的码流
%以二进制的方式显示编码流
dec2bin(double(hcode))
f=imread('你的图');
c=mat2huff(f); %对f进行Huffman编码
cr1=imratio(f,c) %计算图像压缩比率
f1=imread('你的图');
imshow(f1);
c1=mat2huff(f1); %对f2进行Huffman编码
entropy(f1) %打印f1的熵
imratio(f1,c1) %打印图像压缩比率
f2=imread('你的图')
figure,imshow(f2);
c2=mat2huff(f2); %对f2进行Huffman编码
entropy(f2) %打印f2的熵
imratio(f2,c2) %打印图像压缩比率
%**************************无损预测编码************************
f=imread('你的图');
e=mat2lpc(f); %对f进行线性预测编码,e是预测误差图像
imshow(mat2gray(e)); %将预测误差图像缩放到[0,1]之间,然后显示出来
entropy(e) %打印预测误差图像的熵
c=mat2huff(e); %对预测误差图像进行Huffman编码
f=imread('你的图');
imshow(f); %对f进行IGS量化,q是量化系数
q=quantize(f,4,'igs'); %quantize 是量化函数
qs=double(q)/16; %对q的值进行缩小
e=mat2lpc(qs); %对量化系数进行线性预测编码
c=mat2huff(e); %对预测误差进行Huffman编码
imratio(f,c) %计算并打印图像压缩比率
%**************************解码过程***********************************
ne=huff2mat(c); %ne是Huffman解码后的矩阵
nqs=lpc2mat(ne);
nq=16*nqs; %反量化
compare(q,nq); %比较q和nq之间的差值
rmse=compare(f,nq); %图像压缩后的均方根误差,由量化引起
f=imread('你的图');
imshow(f);
% 调用im2jpeg函数对图像进行JPEG压缩,采用默认量化参数。
c1 = im2jpeg(f);
f1=jpeg2im(c1); % JPEG图像解压
imratio(f, c1) % 计算并打印图像压缩比率
compare(f, f1, 3) % 计算图像压缩后的误差
c4 = im2jpeg(f, 4); % 图像压缩,采用4倍的量化参数
f4 = jpeg2im(c4); % JPEG图像解压
imratio(f, c4); % 计算并打印图像的压缩比
compare(f, f4, 3); % 计算并打印图像压缩后的误差