JPEG 2000標準中MQ編碼器的VLSI結構設計
引 言
JPEG 2000是為了彌補JPEG的不足而提出的新一代靜止圖像壓縮國際標準。其目標是對多種類型的靜止圖像實現(xiàn)高效壓縮,并要求壓縮碼流具有較好的抗誤碼性能,用戶可對圖像進行多種形式的累進傳輸,還可以對壓縮碼流進行隨機訪問和處理。
JPEG 2000用基于上下文的自適應算術編碼取代JPEG系統(tǒng)中的赫夫曼編碼,對量化后小波變換系數的二進制位平面進行算術編碼。算術編碼對每一小波子帶分塊獨立進行位平面編碼,并將每個位平面分在3個子位平面通道內進行編碼。雖然現(xiàn)有算術編碼在算法上做了很多改進,但算法的復雜性和大量的編碼數據導致MQ編碼器的實際工作效率仍然很低。為了提高MQ編碼器的編碼速度,對編碼流程進行優(yōu)化,提出一種基于三級流水線的MQ編碼器的VLSI結構。
1 MQ編碼器原理
JPEG 2000的編碼系統(tǒng)流程如圖1所示。
在JPEG中,作為無損壓縮DCT系數的熵編碼方法,采用了霍夫曼編碼(算術編碼為選項)?;舴蚵幋a因按DCT系數大小來分配可變碼長,所以查表處理形成主體,能夠簡單實現(xiàn)霍夫曼編碼。但是,由于預先調查了解符號系列的統(tǒng)計性質后制表,所以此后一旦有與其性質相違背的符號輸入進來,就難免使壓縮特性惡化,這個不足限制了其應用范圍。
補救霍夫曼編碼這一缺點的就是JPEG 2000中被采用的自適應算術編碼。算術編碼的構思是作為Elias編碼,依據為人們所熟悉的劃分遞歸概率區(qū)間的設想,在Elias編碼中,對于具有 “0”或“1”值的二進制符號系列,以各自概率值比率將當前概率區(qū)間劃分成兩個子區(qū)間,被分配給實際產生符號的概率值區(qū)間下限值構成代碼串。即代碼串按二進制符號系列的輸入逐次被遞歸地修正下去。
JPEG 2000中采用算術編碼,其基本規(guī)則像Elias編碼那樣,不是以符號“0”和“1”的實際值來區(qū)別,而是分別作為MPS(大概率符號)或LPS(小概率符號)中一個子區(qū)間來區(qū)別的。而且,將當前概率區(qū)間劃分成兩個子區(qū)間時的順序是MPS子區(qū)間可配置到LPS子區(qū)間的上面。因此,若符號是MPS,就在給代碼串附加LPS子區(qū)間的同時,設概率區(qū)間寬度為MPS子區(qū)間;若符號是LPS,就不改變代碼串,設概率區(qū)間寬度為LPS子區(qū)間。按判決輸入將此處理遞歸地重復下去。MQ編碼器的輸入/輸出框圖如圖2所示。其中,D是二進制判決;CX是上下文索引;D和CX二者均事先由算術編碼之前進行的系數位建模確定。 CD是輸出的壓縮數據。
在MQ算術編碼器中,用寄存器A表示當前子區(qū)間的寬度,寄存器C表示子區(qū)間的起始位置。它們均具有16 b有效長度,在發(fā)生重新歸一化時,為了避免16 b的C寄存器溢出,而采用28 b表示。通過采用重新歸一化方案,使A的取值范圍保持在[0.75,1.5]。當編碼器接收到一個新的待壓縮碼,編碼器從概率估值表查找相應的概率Qe。根據接受的待壓縮碼類型,寄存器A的值和寄存器C的值被進行更新,從而區(qū)間更新可近似為:當編碼MPS時,A=A-Qe,C=C+Qe;當編碼LPS時, A=Qe,C=C,避免了乘法運算。
同時,由于MQ算法在進行區(qū)間計算時省略了乘法的近似,使得可能發(fā)生LPS子區(qū)間大于MPS子區(qū)間的情況。為了避免這種情況,采用區(qū)間條件交換,即將 MPS與LPS互換。MQ編碼器通過重歸一化方法解決計算的有限精度問題:當AO.75時,對A進行左移直至不小于0.75為止,同時C也左移同樣位數,并按一定間隔將不再變化的高位移入存儲區(qū)。
MQ編碼器所使用的概率估值表是一個可以對原始數據快速適應的復雜概率自動估計模型。該模型是一個具有47個狀態(tài)的有限狀態(tài)機。每個狀態(tài)包含小概率符號 LPS的概率Qe、下一個狀態(tài)的索引NMPS和NLPS。是否需要交換MPS和LPS所代表符號的標志SWITCH。
MQ編碼器中設置了一個專用計數器CT作為已壓縮字節(jié)輸出控制。當A左移1位時,CT也同時減1;當CT=0時,輸出1個字節(jié)。為避免區(qū)間更新過程中產生的進位向前傳播,在MQ編碼器中,采用位填充技術來處理進位問題。根據字節(jié)緩沖B及C進位位的值,編碼器選擇是否進行位填充。
評論