代码改变世界

Vector quantization向量化编码

2013-04-16 20:18  youxin  阅读(734)  评论(0编辑  收藏  举报

Vector Quantization 这个名字听起来有些玄乎,其实它本身并没有这么高深。大家都知道,模拟信号是连续的值,而计算机只能处理离散的数字信号,在将模拟信号转换为数字信号的时候,我们可以用区间内的某一个值去代替着一个区间,比如,[0, 1) 上的所有值变为 0 ,[1, 2) 上的所有值变成 1 ,如此类推。其这就是一个 VQ 的过程。一个比较正式一点的定义是:VQ 是将一个向量空间中的点用其中的一个有限子集来进行编码的过程。

一个典型的例子就是图像的编码。最简单的情况,考虑一个灰度图片,0 为黑色,1 为白色,每个像素的值为 [0, 1] 上的一个实数。现在要把它编码为 256 阶的灰阶图片,一个最简单的做法就是将每一个像素值 x 映射为一个整数 floor(x*255) 。当然,原始的数据空间也并不以一定要是连续的。比如,你现在想要把压缩这个图片,每个像素只使用 4 bit (而不是原来的 8 bit)来存储,因此,要将原来的 [0, 255] 区间上的整数值用 [0, 15] 上的整数值来进行编码,一个简单的映射方案是 x*15/255 。(进一步:http://blog.pluskid.org/?p=57 )

http://en.wikipedia.org/wiki/Vector_quantization

http://www.data-compression.com/vq.html

http://www.authorstream.com/Presentation/aSGuest47782-409450-vector-quantization-image-compression-method-science-technology-ppt-powerpoint/

http://www.willamette.edu/~gorr/classes/cs449/Unsupervised/competitive.html