2015-06-03 153 views
1

我正在學習圖像壓縮和重構方面的矢量量化,我想知道爲什麼我們要從訓練集中形成初始碼書?既然我們只傳輸碼字的索引,那麼爲什麼我們不把這個訓練集作爲最終的碼本。這會導致更準確的重建,對吧?有什麼區別?在矢量量化中的訓練集

回答

0

碼本不是要傳輸的圖像。碼字是k維碼本中一行的參考點。注意:碼本本質上是一個二維數組,其中行號是碼字。

示例: 1000張訓練圖像的大小均爲512x512。 如果我們想創建一個尺寸爲256的碼本,爲了將512x512圖像壓縮成128x128 VQ(矢量量化)索引表,我們的碼本需要16個維度(即,我們原始圖像中的每個4x4塊(16個值)被壓縮到1的值是一個碼字)。 無論您使用哪種聚類算法(例如LBG),都會在1000個訓練圖像中找到最能代表4x4塊的最接近的16個值。這16個值將被放入碼本。在找到最佳的256個組或16個值的集羣之後,碼簿即可使用。

該碼本需要發送給接收端一次。它是一個256行,16維結構,與1000個512x512訓練圖像相比。您可以向接收方發送一個128x128索引表,然後查找碼本中的位置並重建512x512圖像。這不是確切的,因爲這種類型的壓縮是有損的。