本文主要是介绍(信源四)矢量量化算法--LBG,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
矢量量化,是70年代后期发展起来的一种数据压缩技术是一种高效的有损数据压缩技术,它具有压缩比大、解码简单和失真较小等优点。其基本思想是将若干个标量数据组构成一个矢量,然后在矢量空间给以整体量化,从而压缩了数据而不损失多少信息。矢量量化是香浓信息论在信源编码理论方面的发展,它的理论基础是香浓的率失真理论,率失真理论是一个存在性定理,并非是一个构造性定理,它未给出如何构造,矢量量化器的方法,矢量量化总是优于标量量化,这是因为矢量量化能有效地应用矢量中各,分量之间的4种相互关联性质来消除数据中的冗余度。自从1980年提出矢量量化器码书设计的LBG以来,矢量量化技术已经成功地应用到图像压缩和语音编码中。
LBG算法中的最佳矢量量化器设计的关键是最佳划分和最佳码书的设计。一是给定码书条件下寻找信源空间的最佳划分,使平均失真最小,由码书 和NNR得最佳划分,信源空间中的任一点矢量,如果它和码字的失真小于它和其它码字的失真;二是在给定划分条件下,寻找最佳码书,使平均失真最小。其思想如下所示:
(1)随意选取n个图像块作为码字;
(2)由这n个码字对所有的图像块进行划分,即分成n个集合,使每个集合中的图像块,都是与各码字距离中与对应的码字的距离 最小的;(3)由这n个集合的重心,得到n个新的码字;
(4)如果这些个码字与原来的码矢量变化不大(收敛),就完成码书的训练,否则重新进行2、3步。
程序调试:
运行环境win10 VS2015
打开源代码运行是出现错误:无法打开unistd.h文件。
解决方案:在头文件库中新建一个unistd.h文件
#ifndef _UNISTD_H
#define _UNISTD_H
#include <io.h>
#include <process.h>
#endif /* _UNISTD_H */#pragma once
此程序调试共分为3个部分:
1. trvqsp_img—获得图像矢量量化的码书(码数以分裂法初始化)
其命令参数为 ts_img codefile [-b cb_size] [-t block_height] [-w block_width] [-x row_size] [-y col_size]
这篇关于(信源四)矢量量化算法--LBG的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!