矢量量化 vector quantization
2014-07-04
矢量量化(VQ —Vector Quantization)是70年代后期发展起来的一种数据压缩技术基本思想:将若干个标量数据组构成一个矢量,然后在矢量空间给以整体量化,从而压缩了数据而不损失多少信息。矢量量化编码也是在图像、语音信号编码技术中研究得较多的新型量化编码方法,它的出现并不仅仅是作为量化器设计而提出的,更多的是将它作为压缩编码方法来研究的。在传统的预测和变换编码中,首先将信号经某种映射变换变成一个数的序列,然后对其一个一个地进行标量量化编码。而在矢量量化编码中,则是把输入数据几个一组地分成许多组,成组地量化编码,即将这些数看成一个k维矢量,然后以矢量为单位逐个矢量进行量化。矢量量化是一种限失真编码,其原理仍可用信息论中的率失真函数理论来分析。而率失真理论指出,即使对无记忆信源,矢量量化编码也总是优于标量量化。
在矢量量化编码中,关键是码本的建立和码字搜索算法。
码本的生成算法有两种类型,一种是已知信源分布特性的设计算法;另一种是未知信源分布,但已知信源的一列具有代表性且足够长的样点集合(即训练序列)的设计算法。可以证明,当信源是矢量平衡且遍历时,若训练序列充分长则两种算法是等价的。
码字搜索是矢量量化中的一个最基本问题,矢量量化过程本身实际上就是一个搜索过程,即搜索出与输入最为匹配的码矢。矢量量化中最常用的搜索方法是全搜索算法和树搜索算法。全搜索算法与码本生成算法是基本相同的,在给定速率下其复杂度随矢量维数K以指数形式增长,全搜索矢量量化器性能好但设备较复杂。树搜索算法又有二叉树和多叉树之分,它们的原理是相同的,但后者的计算量和存储量都比前者大,性能比前者好。树搜索的过程是逐步求近似的过程,中间的码字是起指引路线的作用,其复杂度比全搜索算法显著减少,搜索速度较快。由于树搜索并不是从整个码本中寻找最小失真的码字,因此它的量化器并不是最佳的,其量化信噪比低于全搜索。
矢量量化的使用:
n如果一个2x2像素的小块,每像素有8位表示,则所有的像素块的可能取值有:232=4G种,可以选择一个远远小于这个数的数n,作为码书中码的个数,然后对图像中的每个块(矢量),用一个码书中的码来近似,这样只需用这个码的编号来编码这个图像矢量即可,因此每一个小块,最后都只需用log2n个位来表示,由此达到压缩的目的。
n如果一个2x2像素的小块,每像素有8位表示,则所有的像素块的可能取值有:232=4G种,可以选择一个远远小于这个数的数n,作为码书中码的个数,然后对图像中的每个块(矢量),用一个码书中的码来近似,这样只需用这个码的编号来编码这个图像矢量即可,因此每一个小块,最后都只需用log2n个位来表示,由此达到压缩的目的。
n如果一个2x2像素的小块,每像素有8位表示,则所有的像素块的可能取值有:232=4G种,可以选择一个远远小于这个数的数n,作为码书中码的个数,然后对图像中的每个块(矢量),用一个码书中的码来近似,这样只需用这个码的编号来编码这个图像矢量即可,因此每一个小块,最后都只需用log2n个位来表示,由此达到压缩的目的。
图像块与码书中码的匹配:
n设图像块B=(b1, b2, …, bn)
码矢量:C=(c1, c2, …, cn)
n图像块与码矢量的匹配程度,由它们之间的“距离”来度量,一般d(B, C)可取如下之一:
nΣ|bi - ci|
nΣ(bi – ci)2
nMax|bi - ci|
nd(B, C) 可以看成失真程度的一种度量(B用C表示时)
LBG算法:
nLBG算法是由Linde, Buzo 和 Gray三位学者提出的方法。其主要的思想是:从一组码矢量出发,将所有的图像矢量进行划分,然后再重新计算码矢量,直到码矢量的变化收敛时,即完成了码书的选择。
主要步骤:
1.随意选取n个图像块作为码矢量
2.由这n个码矢量对所有的图像块进行划分,即分成n个集合,使每个集合中的图像块,都是与各码矢量距离中,与对应的码矢量的距离最小的
3.由这n个集合的重心,得到n个新的码矢量
4.如果这些个码矢量与原来的码矢量变化不大(收敛),就完成码书的训练,否则重新进行2、3步
例子:
n假设每像素8位,分成两个像素的小块。
n图像共有24个像素,12个小块:
B1=(32,32), B2=(60,32), B3=(32,50), B4=(60,50), B5=(60,150), B6=(70,140), B7=(200,210), B8=(200,32), B9=(200,40), B10=(200,50), B11=(215,50), B12=(215,35)
n初始码书:C1=(70,40), C2=(60,120), C3=(210,200), C4=(225, 50)
2023-08-15 广告
矢量量化是k-means的自然应用
refe: https://docs.scipy.org/doc/scipy/reference/cluster.vq.html