简单短序列的算术编码的MATLAB实现.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
简单短序列的算术编码的MATLAB实现

简单短序列的算术编码的MATLAB实现正确实现的算术编码算法压缩能力Shannond定理描述的理论极限,是目前已知的压缩能力最强的无损压缩算法。 ???不过,由于算术编码算法的实现比较复杂,使用它作为默认压缩算法的应用程序还相当少。在Unix平台上非常流行的bzip2(这个工具有命令行模式的Windows版本)使用的就是经过修改的算术编码算法。 ???目前为止还没有使用算术编码作为默认压缩算法的Windows应用程序,WinRAR和WinIMP能够支持bzip2的解压。除此之外,在必威体育精装版的JPEG标准中也用到了经过修改的算术编码压缩算法,但JPEG所用的那种算法受专利保护,因此使用时必须获得授权。 ????在之后的文章会很好的研究这个算法的实现: 现在给出一个简单的实例: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 算术编码过程实例ssbm.m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% about={... 本实例说明: 字符串不能太长,程序不加判断,请注意溢出; 本实例只限定少数字符串 a b c d e; 实例只是说明一下算术编码过程。}; disp(about); str=input(请输入编码的字符串(本程序仅仅是一个实例,请仅输入a b c d e):); l=0;r=1;d=1; %初始间隔 %程序限定字符为:a、b、c、d、e p=[0.2 0.3 0.1 0.15 0.25]; %字符的概率分布,sum(p)=1 n=length(str); disp(a b c d e) disp(num2str(p)) for i=1:n ??switch str(i) ????case a ??????m=1; ????case b ??????m=2; ????case c ??????m=3; ????case d ??????m=4; ????case e ??????m=5; ????otherwise ??????error(请不要输入其它字符!); ????end ????%判断字符 ????pl=0;pr=0; ?????for j=1:m-1 ????????pl=pl+p(j); ?????end ?????for j=1:m ????????pr=pr+p(j); ?????end ?????%概率统计 ??????l=l+d*pl; ??????r=l+d*(pr-pl); ??????strl=strcat(输入第,int2str(i),符号的间隔左右边界:); ??????disp(strl); ??????format long ??????disp(l);disp(r); ??????d=r-l; end 运行过程如下: 本实例说明: 字符串不能太长,程序不加判断,请注意溢出; 本实例只限定少数字符串 a b c d e; 实例只是说明一下算术编码过程。 请输入编码的字符串(本程序仅仅是一个实例,请仅输入a b c d e):aaabded a b c d e 0.2 0.3 0.1 0.15 0.25 输入第1符号的间隔左右边界: 0 0.200000000000000 输入第2符号的间隔左右边界: 0 0.040000000000000 输入第3符号的间隔左右边界: 0 0.008000000000000 输入第4符号的间隔左右边界: 0.001600000000000 0.004000000000000 输入第5符号的间隔左右边界: 0.003040000000000 0.003400000000000 输入第6符号的间隔左右边界: 0.003310000000000 0.003400000000000 输入第7符号的间隔左右边界: 0.003364000000000 0.003377500000000 ?%I=imread(001.bmp) %imshow(I); clear I=[3 3 1 1 3 3 1 2;2 3 3 1 3 2 3 2;1 2 3 3 3 3 1 2]; %I=[1 1 1 1 0 0 1 0 1 1 1 0]; [m,n]=size(I); % 第一列为灰度值,第二列为个数,第三列为概率百分数,应该也可以用imhist table = tabulate(I(); ?% 注意的是,tabulate要求I的元素必须为非负整数 % 否则,以采用如下方法求解 % 如[1 2 3;1 2 2],则统计出结果1是2个,2是3个,3是1个 % sortM=sort(M(); ????????????????????????????????

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档