图像编码(二)

统计编码

统计编码也称为熵编码,假设图像中灰度级别X(i)出现的概率为P(i)。

1.哈弗曼编码

依据变长最佳编码定理,应用Huffman算法而成。编码步骤如下:
1)将灰度级别x(i)按照其对应的概率按照降序排列;
2)将两个最小概率的灰度级别组合相加,始终将较大的概率分值放在上部分,并重复次步骤;
3)对每个组合,上面的一个级别设为1,下面一个级别设为0;
4)画出每个级别到概率1的路径,并将所有的0和1按照顺序组合;
5)对每个级别写出的二进制序列,从右到左则可得非等长的哈弗曼编码;

优缺点:
1)编码不唯一,首先上下部的01编码是可以选择的,其次对于同概率的的级别选择也可能会有变化;
2)各级别码长不一样,虽说高效,但是硬件实施困难;
3)Huffman编码只能近似的用整数而不是小数,这就使得无法达到更高的精确度。

2.香农编码

香农(shannon-Fano)编码和哈弗曼编码类似,只不过采用的是从上至下的方式。
依据变长最佳编码定理,编码步骤如下:
1)对灰度级别按概率大小进行降序排列;
2)将灰度级别分为两大部分,使得两部分的概率和尽可能的相等,重复此步骤,使得整个‘’分’布‘’呈树状结构,最后一层上的‘’叶子‘’全是单个灰度级别;
3)从左到右以此标记上下两部分为0或者1;
4)从左至右按照路径记录串联所有的二进制数得到该灰度级别的编码。

3.算术编码

算术编码不是将单个灰度级别映射成一个码字,而是把整个灰度级别映射到一个[0 1]的区间上,其长度等于对应的概率。然后在这个区间内选择一个合适的小数转化为二进制来作为编码。

4.行程编码

行程编码(Run Length Encoding)是一种利用空间冗余度压缩图像的方法。对某些相同灰度级别成片连续出现的图像,行程编码能够进行有效的压缩。设(x1,x2,x3...xn)为图像中的某一行像素,每一行像素都是由K个长度为L(k),灰度值为g(i)的片段组成。那么该行像素可以表示为{(g1,l1),(g2,l2),(g3,l3)...(gk,lk)},其中,每一个偶对(g(i),l(i))称为灰度行程。其中二值图像甚至在编码是只用一组l(i)的序列表示。

预测编码

预测编码建立在信号数据的相关性上,根据某一模型利用以往的样本值对新样本进行预测,减少数据在时间和空间上的相关性,以达到压缩数据的目的。但实际情况中,并不是利用数据源所建立的某个特定的模型,而是基于估计理论、统计学理论来设计预测器。预测器对样本的预测,通常采用样值的线性或者非线性函数关系来预测显示的系统输出。常见的预测编码方法是DCPM法。

变换编码

图像数据一般具有较强的相关性,若所选用的正交矢量空间的基矢量与图像本身的主要特征相近,那么在该正交矢量空间中图像的表示将会变得非常的简单。对图像进行正交变换,把图像映射到新的坐标系下使得图像的数据更加集中。对于大多数的图像,大量交换系数很少,只要删除接近0的系数,并对小的系数进行粗量化,从而保留图像的主要信息的系数(稀疏化?),之后就可以对其进行压缩编码。值得注意的是,变换并不会产生压缩,所以需要结合其他编码方式来对变换后的图像进行压缩。常用的变化有傅里叶变换、哈达玛变换等。

你可能感兴趣的:(图像处理,图像压缩,图像编码)