1

我正在学习图像压缩和重建方面的矢量量化,我想知道为什么我们要从训练集中形成一个初始码本?既然我们只是在传输码字的索引,那我们为什么不把训练集当作最终的码本呢?这将导致更准确的重建,对吧?会有什么区别?

4

1 回答 1

0

码本不是要传输的图像。码字是 k 维码本中一行的参考点。注意:码本本质上是一个二维数组,其中行号是码字。

示例:1000 个训练图像的大小为 512x512。如果我们要创建一个大小为 256 的码本,将 512x512 的图像压缩成 128x128 的 VQ(矢量量化)索引表,那么我们的码本需要 16 维(即原始图像中的每个 4x4 块(16 个值)被压缩成 1值,它是一个代码字)。无论您使用哪种聚类算法(例如 LBG),都会在 1000 个训练图像中找到最接近的 16 个值,这些值最能代表 4x4 块。这 16 个值将被放入码本。在找到最好的 256 个组或 16 个值的簇后,码本就可以使用了。

这个码本需要发送给接收方一次。与 1000 个 512x512 的训练图像相比,它是一个 256 行、16 维的结构。您将 128x128 索引表发送给接收器,然后接收器可以在码本中查找位置并重建 512x512 图像。这并不准确,因为这种类型的压缩是有损的。

于 2015-06-09T18:02:47.957 回答