每一个影像向量,X,与一组代表性样本或码向量(Codevectors),,作比对的工作。这些码向量共同组成的即为编码簿(Codebook)。
编码簿的产生,一般是从将要压缩的影像集中选出几张具有代表性的影像作为训练集(Training set),然后以此训练集作出编码簿。这个方法的好处是没有必要知道关于这些影像之统计数据或相关信息。
一般而言,要编码某一张特定的影像,最优化的编码簿应为使用这张影像本身为训练集所产生的,此种编码簿称为区域编码簿(Local codebook)。
使用区域编码簿通常会有相当好的压缩效率,这是因为该影像所特有之影像特征(如线、边等等)都会被自己的区域编码簿所充分地考虑进去,因而都找得到足以代表的码向量。
然而,区域编码簿会有两大缺点:首先,每编码一张影像就得产生它所独用的编码簿,这是相当费时的工作,也会让即时处理变的不可能;其次,区域编码也得提交给接收端,这个额外的数据量会大大地降低压缩效率。
要解决区域编码所带来的问题,可以使用多张具代表性的影像作为训练集,并产生通用编码簿(Global codebook)。
如果要编码的影像属于同一类(就分辨率、影像特色、详细内容等等而言),全体编码也将导致很好的效果;反之,如果要编码的影像有很大的不同,通用编码簿的效率可能就会远远不如区域编码,尤其是如果所选用的训练集又很小的情况下。