关于MQ编码(算术编码、JPEG2000、JBIG2)常见问题的一些思考

2009-03-06

12:24:41

by http://blog.csdn.net/KXY_tech/

 

关于MQ编码(算术编码、JPEG2000JBIG2)常见问题的一些思考

       JPEG2000的官方文件ISE/ISO 15444已经给出了MQ编码的详细流程,开发者如果只是为了实现MQ的功能,其实照着文档的流程图写程序就行了,并不需要理解其内在原理。然而做JPEG2000的朋友大都是硕士研究生以上的学历,仅仅是实现功能更而不理解原理似乎自降身价;更重要的是,像MQ编码这种编码原理,其实跟其他编码有强烈的类似性,理解一种方法就有举一反三的效果。而,只做实现极其容易陷进"代码搬运工"的困境。

 

1、为什么要用MQ编码?

       考虑MQ之前,先看看小波变换和位平面编码。JPEG2000编码的顺序的小波变换→位平面编码→MQ编码。

       小波变换把图片分成了具有统计特性的子带(即知道了哪个子带的数据更重要)。而小波变换本身能实现数据压缩吗?答案是肯定不能的。反而,由于小波变换后的系数有可能超出原来数据的范围,还要加上1~2个保护位(Guard bits),输出数据量甚至比输入还要大。

       位平面编码有什么用?位平面的作用有二:1)把一个平面分成三个通道,方便以后的率控制。2)把每个像素点的每一位都判断(根据子带信息和位本身邻居的信息),输出判决结果和上下文序号提供给MQ用作输入。位平面本身也不可能进行数据压缩(输入1位,却输出1位的判决和一个CX上下文标号,压个P)。

       也就是说,小波变换和位平面编码都是给MQ打下手的。MQ是JPEG2000标准中实现无损压缩的唯一途径。

       从上面也可以看出,JPEG2000中产生的中间数据量巨大,编程时需要大量的malloc分配。

 

2、JPEG2000的MQ编码为什么使用查表法?

       传统的算术编码概率更新时要浮点运算,众所周知,浮点运算要比定点运算慢近30倍,定点DSP弄浮点算法更麻烦。现在我连定点运算都不用了,直接查表来更新概率,谁比我快?

       当然,为了要得到查概率表的索引号,就必须进行位平面编码,为了位平面编码,就必须进行小波变换,加起来到底谁快还不一定。不过既然专家们选择了查表的方法,我想他们经过测试了。本人认为查概率表的方法在压缩率和速度上都达到了最优。

 

3、最简单的MQ原理?(先看看Elias的算术

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值