乘码
乘码(Product code),是借由许多小型编码簿相乘而形成。如果一个向量可以用某个独立的特性来描述的话,例如长度或方向,那么就可以针对每一个特性分别为此设计一个编码簿,最后所要的乘码向量便是将各个小型编码簿的向量相乘而得到。
概要
在相同数目的码向量下,乘码编码簿的效率比完全搜寻的编码簿差。但是在相同的复杂度与位元率下,它的效果比完全搜寻的编码簿好。这是因为在相同的复杂度下,乘码编码簿的有效码向量会远比完全搜寻的编码簿之码向量多许多,而且乘码编码簿可以在同样位元率下编码更大维度的向量。
以下介绍三种乘码,分别为增益/形状VQ(Gain/Shape vector quantization, G/S VQ)、平均值/余值VQ(Mean/Residual vector quantization, M/R VQ)及内插法/余值VQ(Interpolating/Residual vector quantization, I/R VQ)。
增益/形状VQ
增益/形状VQ(Gain/Shape vector quantization, G/S VQ)使用两个编码簿,分别用以编码向量的增益(Gain)和形状(Shape)。向量的增益指的是这个向量的能量或方差,而向量的形状则是原影像向量去掉增益后之正常化向量(Normalized vector)。
算法
- 第一步:
将原影像切割成不重叠的方块形成影像向量,令其大小为n(一般取n = 4 x 4 = 16)。
- 第二步:
从形状编码簿中,找出和影像向量内积(Inner product)所得值最大的单位能量形状码向量, 。
- 第三步:
给定所选择的形状码向量 后,找出标量的增益值 ,其中标量 使得重建向量 ,与原向量X之间的失真最小。
- 第四步:
送出形状码向量的指标及增益的码给接收端。
- 第五步:
将解码所得知形状码向量与增益值相乘,即 得到重建向量。
平均值/余值VQ
平均值/余值VQ(Mean/Residual vector quantization, M/R VQ),是将影像方块的平均值重复拷贝做为该方块内所有像素的预测值,最后产生整个预测影像。再将原影像减去预测影像,便形成我们的余值影像。
使用M/R VQ的优点是许多的影像向量(由影像方块所组成)都在不同的平均值附近展现类似的方差,只要将每一个向量的平均值(方块平均值)在做量化之前予以去除,那么我们所需要用以表示余值向量的码向量就会比较少。
算法
- 第一步:
将原影像切割成不重叠的方块,其大小为n(一般n = 4 x 4 = 16),以形成影像向量,并计算每一个方块的平均值。
- 第二步:
以标量量化器编码平均值(一般使用8个位元)并送出给接收端,也可以用传统的压缩法,如DPCM,做平均值的编码以更进一步降低位元率。
- 第三步:
将该方块之原影像向量减去量化后之平均值得到平均约等于0的余值。
- 第四步:
以VQ做余值向量之量化,然后将最接近之余值码向量的指标送给接收端。
- 第五步:
将平均值加回解码所得之余值向量得到重建方块。
内插法/余值VQ
内插法/余值VQ(Interpolating/Residual vector quantization, I/R VQ),是借由原影像之次取样(Subsampling)与内插(Interpolating)得到预测影像,然后再将原影像减去预测影像得到的余值影像。这个方法基本上和Mean/Residual vector quantization(M/R VQ)很像,只不过在此用的是次取样值而非平均值,以及内插法而不是简单的重复拷贝。
使用I/R VQ的优点是,其预测影像会比M/R VQ的重复拷贝平均值所得的预测影像还平滑,因此方块假象(Blocking artifacts)会减少。实验结果也显示,在相同的位元率下,I/R VQ的重建影像品质会比M/R VQ的好。
算法
- 第一步:
以L:1的比例(一般L = 8)为原影像做次取样得到 的次取样影像(原影像为分辨率为NxN),每一个次取样值以标量量化器予以量化,并送出给接收端。
- 第二步:
传送端与接收端都利用将量化后之次取样影像以内插法扩张成NxN的预测影像,将原影像减去预设影像得到传送端的预测影像。
- 第三步:
将余值影像切割成不重叠的方块以形成向量(一般大小为n = 4 x 4 = 16)。
- 第四步:
使用VQ为余值向量做量化,并送出最接近的余值码向量之指标给接收端。
- 第五步:
将解码所得之余值码向量加回次取样/内插后之预测影像得到重建影像。