基于FPGA的無(wú)損圖像壓縮系統設計
依照當前像素點(diǎn)P位于區間[L,H]的位置信息,分為三種情況采用不同的編碼方式:
本文引用地址:http://dyxdggzs.com/article/267434.htmIf (L≤P≤H) 選用修正的二元編碼,并用1比特’0’來(lái)表示P落于[L,H]內,殘余值R=P-L;
If (P≤L) 選用GOLOMB-RICE編碼,并用2比特’10’表示P落于小于下界L的區間內,殘余值R=L-P-1;
If (H≤P) 同樣選用GOLOMB-RICE編碼,并用2比特’11’表示P落于大于上界H的區間內,殘余值R=P-H-1。
1.2 修正的二元編碼
在修正二元編碼的編碼區間[L,H]內,中間部分和兩邊部分相比,有像素點(diǎn)出現的概率要略高一些,所以對二進(jìn)制編碼進(jìn)行修正,對中間部分像素點(diǎn)的殘余值R賦予較短的編碼,對兩邊部分像素點(diǎn)的殘余值R賦予較長(cháng)的編碼。例如當△為5時(shí),P值的可能值為0、1、2、3、4、5。在編碼時(shí),將處在區間中央的2、3分別編碼為00和11,而將0、1、4、5分別編碼為110、111、100和101。
1.3 GOLOMB-RICE熵編碼
GOLOMB-RICE熵編碼是GOLOMB編碼的一種特殊情況,屬于指數編碼的一種。FELICS算法中像素點(diǎn)概率分布模型在小于下界L和大于上界H的部分是以指數形式分布的,符合GOLOMB-RICE編碼的適用范圍,因此選用這種編碼方法。編碼步驟如下:
(1)選定參數K
在整幅圖像編碼開(kāi)始之前,建立一個(gè)U×V×T比特大小的累加表,其中U,V和T分別代表背景值Δ的個(gè)數、備選K值的個(gè)數和每一個(gè)K值下累計編碼的長(cháng)度。在每一次進(jìn)行GOLOMB-RICE編碼之前,按照Δ的數值定位到累加表的相應行,選出累計編碼長(cháng)度最短的K值作為當前像素殘余值GOLOMB-RICE編碼的K值。
(2)分別確定一進(jìn)制和二進(jìn)制編碼
一進(jìn)制編碼:unary=R/2K的整數部分;
二進(jìn)制編碼:binary=R/2K的余數部分;
最終的GOLOMB-RICE編碼由三部分組成:unary個(gè)’1’,binary的二進(jìn)制形式和1比特’0’,其中’0’置于一進(jìn)制編碼和二進(jìn)制編碼之間,作為解碼時(shí)的標志位。
(3)更新累加表
編碼完成之后要依次用備選的K值對殘余值R進(jìn)行GOLOMB-RICE編碼,計算出編碼的長(cháng)度并累加到累加表中K值相應的位置處,以用于后續像素點(diǎn)進(jìn)行GOLOMB-RICE編碼時(shí)K值的選取。
2 壓縮系統硬件設計
設計采用 4 級流水線(xiàn)結構,系統只有一個(gè)主時(shí)鐘CLK作為工作時(shí)鐘。硬件實(shí)現包括控制單元、上下文模型選取單元、預測單元、熵編碼單元和并串轉換單元,硬件結構框圖如圖 4。
fpga相關(guān)文章:fpga是什么
評論