信源編碼 向量量化演算法

2021-08-03 09:56:48 字數 2587 閱讀 9099

1.向量量化的基本思想:

將若干個標量資料組構成乙個向量,然後在

向量空間

給以整體量化,從而壓縮了資料而不損失多少資訊。向量量化引入的優點:高維空間處理可增加靈活性。

2.向量量化最重要的點——碼本的生成。這裡介紹一種演算法---lbg演算法。

lbg演算法的思想:

1.隨意選取n個影象塊作為碼向量;

2.由這n個碼向量對所有的

影象 塊進行劃分,即分成n個集合,使每個集合中的影象塊,都是與各碼

向量距離

中,與對應的碼向量的距離最小的;

3.由這n個集合的重心,得到n個新的碼向量;

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

程式除錯:

執行環境:win7+vs2012

一、trvqsp_img:獲得影象向量量化的碼書。

這個程式可以用來訓練向量量化器。使用lbg演算法獲得影象壓縮碼書,初始化使用linde,  buzo, and gray提出的分割方法。

1. 呼叫引數格式:

trvqsp_img ts_img codefile [-b cb_size]

[ -t

block_height]

[-w block_width]

[-x row_size][-y col_size]

[-h]

ts_img:是訓練影象,也即待量化壓縮的影象,假定為8位灰度級,使用光柵掃瞄順序儲存。

codefile:以二進位制格式存放碼書的檔案,有乙個包含12個位元組的檔案頭記錄:向量的維度,以及碼書的大小。

-b cb_size:碼書的大小

-t block_height:塊的高度(以畫素為單位)

-w block_width:塊的寬度(以畫素為單位)

實際上由block_width 、block_height決定著碼書向量的大小,也即每個輸出塊的大小。因此向量的維數是block_height *block_width。

-x row_size:輸入影象的寬

-y col_size:輸入影象的高

-h 幫助

二、vqimg_enc:根據碼書對影象進行向量量化。

這個程式可以使用向量量化來壓縮影象。需使用trvqsp_img獲得的碼書檔案,碼書的大小以及碼塊的大小包含在指定的碼書檔案中。這個程式使用的是定長編碼,所以可以使用變長編碼來優化程式。如果沒有指定乙個輸出檔案則從命令框中輸出。

1. 呼叫格式:

vqimg_enc [

-i imagein]

[-o cmpfile]

[-c codebook]

[-xrow_size]

[-y col_size]

[-h]

-i imagein:輸入的待編碼的影象檔名

-o cmpfile:輸出的量化壓縮後的檔名

-c cmpfile:碼書檔案

-x row_size:輸入影象的寬

-y col_size:輸入影象的高

-h 幫助

三、vqimg_dec:根據碼書檔案和壓縮後的檔案重構原始影象

。重建壓縮影象使用vqimg_enc。解碼需要提供碼書檔案,而碼書檔案則通過壓縮檔案的檔案頭提供其名稱,不需要人為輸入。影象是

8位灰度級影象,使用光柵掃瞄順序儲存。

1. 呼叫格式:

vqimg_dec [-i cmpfile]

[-o imageout]

[-h]

-i cmpfile:壓縮檔案名

-o imageout:重建影象檔名

-h 幫助

對專案進行單步除錯,通過設定斷點的方式對程式進行單步除錯,了解到:

該解決方案的中包含三個主程式且他們各自的執行過程如下:

(1)、trvqsp_img:用於獲得影象向量量化的碼書;

程式中執行過程:

(1、開啟影象檔案與碼書檔案

(2、讀取相應引數

(3、影象存到緩衝區trimg

(4、codebook_size變為之前2倍。對codebook賦值,奇數行不變,偶數行加上乙個eps擾動。

(5、measure>門限值且迭代次數小於100次時,迭代codebook行,如果有匹配訓練集行,該行賦值為匹配訓練集行的均值;如果沒有,則該行賦值為上次碼書匹配最多行並加擾動;對訓練集每一行找到碼書中平方差最小的行,累加起來。

(6、重複步驟(5直到不滿足條件

(7、(4-(6直到codebook_size不再



信源編碼(五)向量量化

這個程式可以用來訓練向量量化器。使用lbg演算法獲得影象壓縮碼書,初始化使用linde,buzo,and gray提出的分割方法。用作。這個專案可以 很長一段時間來執行特別是所需的大小 碼書很大。因此這是乙個好主意來執行 專案背景。影象的尺寸可以由使用者指定或者由程式直接獲得。但是image siz...

LBG 向量量化演算法

lbg向量化演算法 向量量化 vqvector quantization 是70年代後期發展起來的一種資料壓縮技術是一種高效的有損資料壓縮技術 它具有壓縮比大 解碼簡單和失真較小等優點。其基本思想是將若干個標量資料組構成乙個向量,然後在向量空間給以整體量化,從而壓縮了資料而不損失多少資訊。向量量化是...

學習向量量化

與 k 均值演算法類似,學習向量量化 learning vector quantization,簡 稱 lvq 也是試圖找到一組原型向量來刻畫聚類結構,但與一般聚類演算法不同 的是,lvq 假設資料樣本帶有類別標記,學習過程利用樣本的這些監督資訊來 輔助聚類.可看作通過聚類來形成 類別 子類 結構,...