矢量量化 vector quantization帮忙用自己的语言解释一下什么是矢量量化?它与k-means等聚类有什么关系?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 11:15:17
矢量量化 vector quantization帮忙用自己的语言解释一下什么是矢量量化?它与k-means等聚类有什么关系?

矢量量化 vector quantization帮忙用自己的语言解释一下什么是矢量量化?它与k-means等聚类有什么关系?
矢量量化 vector quantization
帮忙用自己的语言解释一下什么是矢量量化?它与k-means等聚类有什么关系?

矢量量化 vector quantization帮忙用自己的语言解释一下什么是矢量量化?它与k-means等聚类有什么关系?

矢量量化(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)