一个理想的图像压缩器应具备:重构图像失真率低、压缩比高以及设计编码器和解码器的计算复杂度低等。但实际中这些要求是互相冲突的,一个编码器好的设计是在这些要求中求得一个折中的方法。香农的信源编码理论是建立在平均的比特率和平均的失真率这一相互冲突的矛盾之上。
在比特率和失真率两者之间取得平衡可以用几种等价的方式定义:给定比特率R的约束下,使失真D最小;或给定失真值D的约束下,使所需传输的比特率R最小;或最小化拉格朗日函数D+kR,不同的拉格朗日算子k可以在比特率和失真率之间起着权衡作用。 1.1 图像信息率
一般静止灰度图像中每个像素用8bit来表示,那么一副图像的平均信息率可以用下面的熵值来表示:
LH(u)pilogi12pi
其中pi表示像素u取ri值的概率,ri的取值范围为0~255。上式也成为零阶熵,因为它不考虑相邻像素之间的相关性。如果考虑当前像素的前一个像素的状态已知,就可以得到图像的第一阶熵:
LLH(uk|uk-1)i11i21pi1,i2log2(pi1,i2|pi2)
其中pi1,i2=prob[uk=ri1,uk1=ri2],uk1是uk的前一个像素。pi1和pi2分别为uk,uk1的条件概率。
根据香农的无噪声新源编码定理:在没有失真的情况下,一个熵为H的信源可以用H+g比特来表示,其中g为任意小的正数,数据最大压缩率C为:
CnHgnH
其中n为原始数据的平均比特率,实际上计算这个最大的压缩率是不实际也是不可能的。对于一幅N*M的数字图像,如果每个像素点用n比特来表示,那么总的图像模式有L2nMN种可能,所以实际上是不可能计算出像素u取ri值的概率pi。 1.2 香农的率失真理论
在实际情况中信道是存在噪声的,如果从信源发出的信息uk,经过编、译码的组合,接受端得到的信息为vi,这是由信道的噪声所造成的,我们定义信源经过编、译码的平均互信息量为: I(uk;vi)k,iP(uk,vi)logP(uk,vi)P(uk)P(vi)
我们可以找到一个在一定允许的失真D条件下最低的平均互信息量,这个平均互信息
量成为失真函数:
R(D)minI(uk;vi)
R(D)是在平均失真小于允许失真D以内能够得到的编码的码率下届。
香农的信源编码定理为:一个具有率失真函数 R ( D )的信源,若有平均失真 D ,并有两个任意小的正数σ与δ,则必存在一种信源编码、译码方法使信息率 R > R ( D )+δ,而平均失真DDÒ 。香农信源编码定理只说明了码率在一个界限以上编码的可能性,并没有给出具体的编码方案.图像也是一种信息,香农的信源编码理论对图像编码起着重要的指导作用。 1.3 哈夫曼编码
香农的无噪声信源编码只是指出存在一种无失真的编码,使得编码平均码长逼近熵值这个下限,但它并没有给出具体的编码方法。哈夫曼(Huffiman)编码是一种利用信息符号
概率分布特性的变字长的编码方法,即对于出现概率大的信息符号编以短字长的码,对于出现概率小的信息符号编以长字长的码。
哈夫曼编码方法把信源符号按概率大小顺序排列,并设法按逆次序分配码字的长度。在分配码字长度时,首先将出现概率最小的两个符号的概率相加,合成一个概率;第二步把这个合成概率看成是一个新组合符号的概率,重复上述做法,直到最后只剩下两个符号的概率为止。完成以上概率相加顺序排列后,再反过来逐步向前进行编码,每一步有两个分支,各赋予一个二进制码,可以对概率大的编码赋予0,概率小的编码赋予1。反之,也可以对概率大的编码赋予 l ,概率小的编码赋予 0 。哈夫曼编码是一种前缀码,即一个码字不能成为另一个码字的前缀部分。 符号 出现概率 1 2 3 4 5 6 7 8 熵值 0.20 0.19 0.18 0.17 0.15 0.10 0.005 0.005 2.618 组成的二元码 11 10 011 010 001 0001 00001 00000 平均字长 码长 2 2 3 3 3 4 5 5 2.73
1.4游程编码
游程编码的主要思路是将一个连续相同值的串用一个代表值和串长来代替,以图像编码为例,可以定义沿特定方向上具有相同灰度值的相邻象元为一轮,其延续长度称之为延续的行程,简称为“游程”。游程终点位置由前一游程终点的相对距离确定,这样就可以由(灰度游程)串来表示图像数据。例如,若沿水平方向有一串 M 个象元具有相同的灰度 N ,则游程编码后,只传递两个值( N , M )就可以代替 M 个象元的 M 个灰度值N。 游程编码分为定长游程编码和变长游程编码两种。定长游程编码是指编码的游程所使用的二进制位数固定。如果灰度连续相等的个数超过了固定二进制所能表示的最大值,则进行下一轮游程编码。变长游程变码是指对不同范围的游程使用不同位数的二进制位数进行编码。使用变长游程编码需要增加标志位来指明使用的二进制位数,因此也存在一定的问题。
游程编码一般不直接应用于多灰度图像,但比较适合于二值图像的编码,例如传真图像
的编码等。为了达到较好的压缩效果,有时游程编码和其他一些编码方法混合使用。例如,在 JPEG 中,游程编码和 DCT 及哈夫曼方法一起使用,对分块做完 DCT 变换及量化后的频域图像数据作之字形扫描,然后做游程编码,对游程编码的结果再做哈夫曼编码。
因篇幅问题不能全部显示,请点此查看更多更全内容