分类VQ (Classified vector quantization , CVQ) ,采用多个编码簿,每一个编码簿都是专门用来编码具有某一类特殊性质的方块,例如水平方向的边,垂直方向的边,完全一致的领域等等。我们可以利用具有区别不同特殊性质的分类器,来选定编码某一类方块的编码簿。
概要使用CVQ的优点是使用许多小型的编码簿,每一个专门为某一类向量而设计,可以达到和使用单一一个大型编码簿相当的重建质量,且搜索时间会小很多。此外,CVQ也可以用在Mean/Residual vector quantization (参见乘码) 技术的余值向量上。1
算法第一步:
将原视频切割成大小为n (通常n = 4 x 4 = 16) 且不相重叠的方块,每一个方块都经过一个以边的方向来做分类的分类器,将其归类为M类当中的一类;这些类别可能包括暗视频方块 (Shade block,没什么明显梯度的方块) ,中度范围方块 (Midrange block,具有中等梯度但无明显边的方块) ,垂直边方块,水平边方块,或边方块,以及混合型方块 (有边但方向不清楚)。
第二步:
每一个分类后的方块向量各以其所属之编码簿做编码。编码簿的大小可以各有不同,分别为,,而且每一个方块在选择最接近的向量时,也可以采用不同的有损估算函数。整个码向量数目为: 。
第三步:
将所选出的码向量指针送给接收端,接收端则用这些指针解码。1
编码簿每一个视频向量,X,与一组代表性样本或码向量(Codevectors),,作比对的工作。这些码向量共同组成的即为编码簿(Codebook)。
编码簿的产生,一般是从将要压缩的视频集中选出几张具有代表性的视频作为训练集(Training set),然后以此训练集作出编码簿。这个方法的好处是没有必要知道关于这些视频之统计数据或相关信息。
区域编码簿一般而言,要编码某一张特定的视频,最优化的编码簿应为使用这张视频本身为训练集所产生的,此种编码簿称为区域编码簿(Local codebook)。
使用区域编码簿通常会有相当好的压缩效率,这是因为该视频所特有之视频特征(如线、边等等)都会被自己的区域编码簿所充分地考虑进去,因而都找得到足以代表的码向量。
然而,区域编码簿会有两大缺点:首先,每编码一张视频就得产生它所独用的编码簿,这是相当费时的工作,也会让即时处理变的不可能;其次,区域编码也得提交给接收端,这个额外的数据量会大大地降低压缩效率。
通用编码簿要解决区域编码所带来的问题,可以使用多张具代表性的视频作为训练集,并产生通用编码簿(Global codebook)。
如果要编码的视频属于同一类(就分辨率、视频特色、详细内容等等而言),全体编码也将导致很好的效果;反之,如果要编码的视频有很大的不同,通用编码簿的效率可能就会远远不如区域编码,尤其是如果所选用的训练集又很小的情况下。2
本词条内容贡献者为:
尹维龙 - 副教授 - 哈尔滨工业大学