Transform Coding(TC)是一种很流行的压缩编码的方式。今天才算完全弄明白。写个备忘录^_^
设一个图像原始VLAD矩阵(uncompressed matrix)A为64*64维。经过PCA降维以后为1*64,设为矩阵B。注意到B是经过PCA降维后得到的,因此其已经过eigenvector的排序,其主成分靠前。
TC编码器会根据算法为B的每一维分配n个bit来储存编码。其类心的个数为2^n。最后有很多维得出的n=0,舍去。如为第一维分配3个bit,则第一维需训练8个类心。47位置后n=0,舍去,则最后的向量变为了47维。而算法中巧妙的在于,所有的n(n1,n2...n47)之和正好为64(原维度)。找出每个维度对应的类心,如第一维对应的是7,第二维是3,等等等等。因此所得向量为(7,3,...,1,1)共47维。而7按位展开为111,正好是3位,(还有000,001,010等类心)。因此最后每幅图像用64bits保存,便可以搞定。
最后query时也有一些要注意的地方。
(1)将query向量与类心算距离,并保存。
(2)最后判断query与base中向量谁近时,用非对称距离 ,而不是对称距离计算(即用对应类心的距离之和)。
因此,TC将图像的压缩存储以及query都很好的解决了。
Transform Coding
最新推荐文章于 2024-09-23 22:44:18 发布