实验三 信源编码实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三信源编码实验
一、实验目的:
1、掌握哈夫曼编码的Matlab实现方法。
2、掌握VC++读取信源数据的方法。
3、运行编译好的霍夫曼编码、算术编码、游程编码编码程序,比较霍夫曼
编码、算术编码、游程编码编码的编码效果
二、实验内容与步骤
1、Huffman编码实验
1)编写计算信息熵的M文件
参考程序:
function h=entropy(p)
%H=ENTROPY(P)返回概率矢
% 量P的熵函数
if length (find(p<0))~=0
error('Not a prob.vector,negative component(s)')
end
if abs (sum(p)-1)>10e-10
error ('Not a prob.vector,components do not add up to 1') end
h=sum(-p.*log2(p));
求信源X=[x1,x2,…,x9],其相应的概率为p=[0.2,0.15,0.13,0.12,0.1,0.09,0.08,0.07,0.06];利用编写的程序计算信息熵,并记录数值。
2)编写程序实现Huffman编码
编写实现Huffman编码的M文件,编译后运行,验证程序的正确性并记录编码结果。
参考程序:
function [h,l]=huffman(p);
%HUFFMAN 哈夫曼编码生成器
% [h,l]=huffman(p),返回哈夫曼编码矩阵H及码字长度
if length (find (p<0))~=0,
erro('Not a prob.vector,negative component(s)')
end
if abs(sum(p)-1)>10e-10,
error('Not a prob.vector,components do not add up to 1') end
n=length(p);
q=p;
m=zeros(n-1,n);
for i=1:n-1
[q,l]=sort(q);
m(i,:)=[l(1:n-i+1),zeros(1,i-1)];
q=[q(1)+q(2),q(3:n),1];
end
for i=1:n-1
c(i,:)=blanks(n*n);
end
c(n-1,n)='0';
c(n-1,2*n)='1';
for i=2:n-1
c(n-i,1:n-1)=c(n-i+1,n*(find(m(n-i+1,:)==1))-(n-2):n*(fi nd(m(n-i+1,:)==1)));
c(n-i,n)='0';
c(n-i,n+1:2*n-1)=c(n-i,1:n-1);
c(n-i,2*n)='1';
for j=1:i-1
c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(m(n-i+1,:)==j+1 )-1)+1:n*find(m(n-i+1,:)==j+1));
end
end
for i=1:n
h(i,1:n)=c(1,n*(find(m(1,:)==i)-1)+1:find(m(1,:)==i)*n); ll(i)=length(find(abs(h(i,:))~=32));
end
l=sum(p.*ll);
在命令行后输入
》p=[0.1 0.3 0.05 0.09 0.21 0.25];
》[H,l]=huffman(p)
记录运行结果,并说明编码结果是否正确,计算编码效率。
2、VC++下图像的显示
双击实验程序文件夹下的openimagefile可执行文件,出现如下对话框后
选择相应的图片文件,则可显示图片。
双击实验程序文件夹下的MyYUViewer可执行文件,出现如下对话框,选择打开文件,则可显示第一帧图像,点击播放后可看到按设定的帧率播放的图像。
3、比较霍夫曼编码、算术编码、游程编码编码的编码效果
运行实验程序文件夹下的liftingscheme可执行文件,出现如下对话框,
分别选择各种编码方式完成编码及解码,并记录源文件,编码文件及解码文件的大小。
下面以霍夫曼编解码为例说明使用的方法。
点击霍夫曼编解码后出现以下界面:
选择好文件后,选打开,出现以下界面,选择编码,编码后的文件后缀为.huf。
若进行解码操作,要重新选择输入及输出文件,如下图所示:
点击解码,则生成解码后的文件lena_De.raw。
比较源文件、编码文件及解码文件的大小,并记录。
4、运用photoshop软件打开原始图片和解码后图片,比较结果。
三、实验结果:
1、1)信息熵的结果:
2)M文件编码结果:
2、原始图片:
霍夫曼编码解码后的图片:
算术编码解码后的图片:与霍夫曼编码解码后的图片一样。
游程编码解码后的图片:。