天天看點

信源編碼第四次作業-基于LBG的矢量量化算法

1、LBG算法背景介紹

LBG算法是由Linde,Buzo,Gray三人在1980年提出的。它其實相當于Lord-Max方法的多元推廣,但它并不需要知道輸入矢量的機率分布,LBG算法通過訓練矢量集和一定的疊代算法來逼近最優的再生碼本。

2、LBG算法的思想

1)随意選取n個圖像塊作為碼矢量

2)由這n個碼矢量對所有的圖像塊進行劃分,即分成n個集合,使每個集合中的圖像塊,都是與各碼矢量距離中,與對應的碼矢量的距離最小的

3)由這n個集合的重心,得到n個新的碼矢量

4)如果這些個碼矢量與原來的碼矢量變化不大(收斂),就完成碼書的訓練,否則重新進行2、3步

3、LBG算法的局限性

1)最優量化器是對于訓練向量集而言,對于實際的未經訓練的向量集是否最優還很難說,這要依賴于訓練向量的代表性到底真實到何種程度。

2)由于優化分割的過程沒有依據資料結構方面的規則或者限制,而是自由進行,這就使得對碼本進行有效組織時遇到極大的困難。

3)在有些時候根本無法找到真正有代表性的訓練向量集

4、算法流程圖

信源編碼第四次作業-基于LBG的矢量量化算法
信源編碼第四次作業-基于LBG的矢量量化算法

4、實驗過程

該程式分為三個部分:trvqsp_img、vqimg_enc、vqimg_enc。trvqsp_img的作用是根據輸入圖像得到碼書;vqimg_enc的作用是根據碼書對圖像進行矢量量化;vqimg_dec的作用是根據碼書檔案和壓縮後的檔案重構原始圖像。

(備注:檔案打開編譯時會出現unistd.h無法打開的問題,參照一下這個方法解決http://blog.csdn.net/earbao/article/details/51757334)