- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
华侨高校工学院
试验报告
课程名称: 信息论与编码
试验项目名称: 算术编码
学 院: 工学院
专业班级: 11 级信息工程姓 名:
学 号: 1195111016
指导老师: 傅玉青
2013 年 11 月 25 日
一、 试验目的
进一步生疏算术编码算法
把握MATLAB语言程序设计和调试过程中数值的进制转换、数值与字符串之 间的转换等技术。
二、 试验仪器
计算机
编程软件MATLAB
三、 试验原理
算术编码是图像压缩的主要算法之一。 是一种无损数据压缩方法,也是一种熵编码的方法。和其它熵编码方法不同的地方在于,其他的熵编码方法通常是把输入的消息分割为符号,然后对每个符号进行编码,而算术编码是直接把整个输入的消息编码为一个数,一个满足(0.0 ≤ n 的1.小0)数 n。
当全部的符号都编码完毕,最终得到的结果区间即唯一的确定了已编码的符号串行。任何人使用该区间和使用的模型参数即可以解码重建得到该符号串行。
实际上我们并不需要传输最终的结果区间,实际上,我们只需要传输该区间中的一个小数即可。在有用中,只要传输足够的该小数足够的位数(不论几进制),以保证以这些位数开头的全部小数都位于结果区间就可以了。
四、试验内容及步骤
计算信源符号的个数 n
将第 i(i=1~n)个信源符号变换成二进制数
P
i
计算 i(i=1~n)个信源符号的累加概率 Pi 为
? ?i?1
k ?1
p ?a ?
k
A ?? ? ? 1,C ?? ? ? 0 ?
预先设定两个存储器,起始时令 , 表示空集
按以下公式迭代求解 C 和 A
C ?S , r ? ? C ?S ?? A ?S ?P
rA ?S , r ? ? A ?S ? p
r
r
对于二进制符号组成的序列,r=0,1。
留意事项:计算 C(S,r)时的加法运用的是二进制加法
? 1 ?
L ? ?log
2
p ?S ??
计算序列 S 编码后的码长度 L 为 ? ?
假如 C 在第 L 位后没有尾数,则 C 的小数点后 L 位即为序列 S 的算术编码; 假如 C 在第 L 位后有尾数,则取 C 的小数点后 L 位,再进位到第 L 位,即为序列 S 的算术编码。
实 验 报 告
五、 试验原始数据试验程序:
clc
clear;
p=input(输入信源分布 p=); S=input(输入待编码的序列 S=); [x,y]=size(p);
n=y;
n ;输出信源符号个数 n for i=1:n
z=p(i); for L=1:2
temp=z.*2; if(temp1)
s(L)=0;
z=temp;
else
end
z=temp-1; s(L)=1;
end
end % 将信源符号概率转化为二进制
disp(二进制数),disp(s); s=0;
P(1:n)=0;
for t=1:n-1
P(t+1)=p(t)+P(t);
end
disp(累加概率),disp(P); %计算累加概率并输出
x=length(S);
A=1;C=0;
for k=1:1:x
C=C+A*P(1,S(1,k)+1);
A=A*p(1,S(1,k)+1);
end
L=ceil(abs(log2(1/A))); %编码后码长q=quantizer([3*x,3*x-1]);
c=num2bin(q,C); %将累积分布概率转化为二进制
c_B=c(2:L+1); %取小数点后长度为 L 的码字
%推断 L 位以后是否有尾数,若有尾数就进位到第L 位c_D=bin2dec(c_B); %转换成十进制
c2=c(L+2:3*x) ; %取 C 的 L+1 后几位
c2_D=bin2dec(c2); %将后几位转换成十进制
if c2_D~=0 %C 后有位数进 1
c_D=c_D+1;
mc_B=dec2bin(c_D,L); %转换成十进制
else %C 后没有位数则保持不变
mc_B=c_B;
end
disp(编码后的码字为),disp(mc_B); %输出编码后的码字
图 1 运行结果
指导老师签名: 时 间:
六、 数据处理
信源消息符号
表 1 算术编码结果
A(s)
C(s)
空
1
0
s1
0.11
0.1
s2
0.1001
0.1
s3
0.011011
0.11
s4
00.11
s5
0.0011110011
0.111
s6
0.001011011001
0.111
s7
0.00001011011001
0.11011
s8
0.000001011011001
0.1101010
七、 试验结论及分析争辩
通过这次试验,加深了我对算术编码的理解,尤其是算术编码定理及其对信源进行编码的具体过程。
算术编码用到两个基本的参
原创力文档


文档评论(0)