摘 要:在研究JPEG2000中的感興趣區域(ROI)編碼算法優缺點的基礎上,結合嵌入式編碼理論和人眼視覺特性,利用等級樹分集(SPIHT)編碼算法的特性,提出了一種高效的ROI編碼方法,壓縮后的碼流具有嵌入式特點,支持漸進傳輸。實驗結果表明:盡管在低碼率下,該算法整體峰值信噪比較低,但主觀視覺效果明顯好于SPIHT算法,結果令人滿意。
關鍵詞:感興趣區域;SPIHT算法;小波變換;人眼視覺特性;漸進傳輸
中圖法分類號:TP919.81文獻標識碼:A
文章編號:1001—3695(2007)02—0189—03
近年來,隨著多媒體技術和Internet的應用與發展,促使人們尋求更高壓縮比的圖像壓縮編碼方法。由于基于感興趣區域的編碼方法能夠充分利用人眼的視覺特性,已成為圖像編碼的研究熱點。
在遠程醫療、圖像檢索及無線通信等應用領域,人們往往只對一幅圖像中的部分區域感興趣,這部分區域被稱為感興趣區域(Region Of Interest, ROI)。因此,可以對ROI采用低壓縮比的有損壓縮甚至無損壓縮;而對背景區域(Back-Ground,BG)則采用高壓縮比的有損壓縮,這樣能解決壓縮比和重建圖像質量的矛盾,這就是ROI編碼技術。
新一代靜止圖像國際壓縮標準JPEG2000正式將ROI編碼技術納入其中,并規定了兩種標準算法,即基于比例移位法(Scaling-based Method)和最大位移法(Maxshift Method)。
本文在研究JPEG2000的兩種標準ROI編碼算法優缺點的基礎上,結合嵌入式編碼理論,利用SPIHT圖像編碼算法,提出了一種高效的ROI編碼方法,改善了主觀視覺效果,壓縮后的碼流還具有嵌入式的特點,支持漸進傳輸。
1 JPEG2000的ROI編碼算法分析
JPEG2000中的基于比例移位法,采取預先選擇一個適當的比例因子S,在編碼時將BG系數的幅值均縮小2S倍,從而使得ROI系數優先被編/解碼。但仍有一些ROI系數會與BG系數一起編碼、傳輸和解碼,這取決于比例因子S的大小。因此在漸進解碼中,比例因子S起到了控制ROI和BG相對質量的作用。最大位移法可以看作上述方法的特殊情形,經過平移一個特定值使得縮小后的BG系數最大值小于ROI系數的最小值,即使ROI比特平面與BG比特平面無重疊。因為比例因子S不是預先選定的,因此算法存在無法調節ROI與BG相對重要程度的缺點。
上述兩種方法的移位過程如圖1所示,其中MSB是最重要的比特平面,LSB是最不重要的比特平面。
在實際工作中,基于比例移位法需要導出一個含有ROI形狀信息的比特掩模,并利用其標明每一個子帶中哪些節點坐標上是ROI系數。由于碼流置入了ROI的坐標信息將使比特流增大,解碼器仍需再次求出ROI掩模,因此增加了計算的復雜度和存儲要求。而最大移位法中ROI系數的最小值大于BG系數最大值,故無須傳送ROI的坐標信息,解碼器也無須計算ROI掩模。
2 SPIHT圖像編碼算法
SPIHT算法是Said和Pearlman在嵌入式零樹小波算法(Embedded Zerotree Wavelet, EZW)基礎上提出的一種高效的圖像編碼算法。SPIHT算法充分考慮了圖像經過小波分解后,能量集中在最高分解級的低頻子帶及各子帶之間具有空間自相似性等特點,在繼承了零樹思想的基礎上,設計了一種新的空間方向樹結構來更有效地組織小波系數,使每個樹包括了同一空間位置所有子帶中的小波系數。同時通過對樹的劃分,將盡可能多的非重要系數匯集在一個子集中,用一個單位符號表示。在SPIHT編碼過程中,將小波的重要信息保存在三個列表中:不重要像素列表(LIP)存放不重要小波系數的位置坐標;重要像素列表(LSP)存放重要小波系數的位置坐標;不重要集合列表(LIS)存放不重要集合的位置坐標。
SPIHT采用2的冪次方作為初始閾值,每次掃描后閾值減半,經過多次掃描重要系數是小波變換系數整數部分的二進制表示,這是一種典型的比特平面編碼。由于SPIHT采用這種從最重要的比特平面開始每次編碼一個比特平面的編碼方法,可以得到完全嵌入的具有連續可分級特性的輸出碼流,有利于實現精確的碼率控制,支持漸進傳輸。
3 基于SPIHT的ROI編碼
3.1 初始算法
本文結合JPEG2000的ROI編碼算法思想,將SPIHT算法應用于包含ROI的圖像編碼中,其算法步驟如下:
(1)指定ROI并確定該區域點的坐標集;
(2)用小波變換對整個圖像進行塔式分解;
(3)確定ROI區域,生成ROI掩模;
(4)將ROI系數平面左移S位,即ROI系數乘以因子2S;
(5)按照SPIHT算法思想,對處理后的系數分別進行ROI編碼和非ROI編碼,循環編碼至用戶定義的閾值比特平面R。
解碼過程為編碼的逆過程。
3.2 改進的ROI編碼機制
3.2.1 優化ROI掩模
依照上文提出的ROI編碼算法,在執行重要性檢測之前,均需要判斷每個節點是否對重建ROI有貢獻,以便將ROI系數傳給解碼器。如果節點不是ROI系數,暫時跳過節點檢測,此后仍需重復執行此過程。然而,每個節點不管其子孫中是否含有ROI系數都要執行重要性檢測。如果其子孫中不存在ROI系數,則表明它們對于重建ROI是毫無意義的。因此,我們定義PROI掩模來記錄那些子孫中至少存在一個ROI系數的節點坐標。此時若空間方向樹中的某個節點不屬于PROI系數,編碼器將不再檢測其子孫,從而提高了編碼效率。除了最高頻子帶以外,ROI掩模與PROI掩模的關系可以表示為
3.2.2 分割LIP和LIS
在引入PROI掩模后,編碼器首先執行節點檢測以判斷節點是否為ROI系數,如果不是將轉入子孫檢測;如果子孫檢測判斷出節點不是PROI系數,則跳出ROI編碼。因此,LIP保存了三種類型的記錄:重要的非ROI系數、不重要的非ROI系數和不重要的ROI系數。在接下來的比特平面編碼中,排序過程只對不重要的ROI系數進行檢測;而非ROI系數無論重要與否都被保留在LIP中。當ROI編碼結束后,編碼器從最大閾值開始對LIP中的記錄進行重復掃描。
在以上的ROI編碼過程中,以不同閾值掃描所產生的多種記錄都被大量添加至LIP中,使得編碼效率降低。因此,根據添加記錄時的閾值2n將LIP分割成LIP(n),將LIS分割成LIS(n)。當編碼器達到用戶定義的比特平面R,ROI編碼結束。編碼器開始從最大閾值比特平面nmax到R執行非ROI編碼,其具體過程為:當執行到閾值比特平面n的重要性檢測時,只需對所有當n≤p≤nmax時的LIP(p)和LIS(p)執行檢測。當非ROI編碼結束后,由于所有節點已進行了重要性檢測,故編碼器將LIP(n)合并成為一個LIP;LIS(n)合并成為一個LIS。
3.3 改進的ROI編碼算法流程
為了更準確地描述ROI編碼算法,引入如下兩個定義:
4 實驗結果
實驗采用Lena(512×512,8bpp)標準測試圖像(圖3),(9/7)小波,五級小波變換,S=6,R=4,選定的ROI形狀為矩形,其左上角和右下角頂點分別為(200,200)和(370,390)。此種情況下,ROI為位于兩頂點間的人臉區域,易于導出掩模。
整個圖像的實驗比較結果如圖4所示,ROI的實驗比較結果如圖5所示。表1為整個圖像在不同碼率下的編碼結果比較,表2為ROI在不同碼率下的編碼結果比較。
從上面的實驗結果可以看出:
(1)當碼率為0.1bpp時,雖然SPIHT算法編碼重建得到的恢復圖像整體質量較好,但人臉區域的細節信息丟失較多,臉部較為粗糙,睫毛出現黏連;而本文算法的恢復結果中,背景區域雖然模糊,但人臉區域卻保持了較高的清晰度。盡管圖4(b)的PSNR不高,比圖4(a)要低1.357dB,但作為ROI的人臉區域卻比SPIHT算法中高出5.798dB。因此圖4(b)的整體視覺質量要明顯好于圖4(a)。
(2)由于本文算法保持了SPIHT算法中的嵌入式特點,使得當碼率提高為0.5bpp時,產生的恢復圖像整體質量只低0.187dB,背景區域效果兩者幾乎相同。同時,當ROI編碼執行到用戶定義的比特平面R后,移位后ROI系數的大部分比特平面已完成編碼,所以圖4(d)視覺質量很高,與原始圖像效果相當。而SPIHT算法得到人臉區域的PSNR與本文算法差別達10.691dB,因此圖4(c)的主觀效果稍差。
5 結論
本文提出的編碼方法充分考慮了人眼的視覺特性。編碼時,結合JPEG2000中的ROI編碼算法思想,將ROI和BG加以區分,對ROI優先進行編碼并組織碼流,獲得了有效的編碼效果。同時,壓縮后的碼流具有嵌入式特點,支持漸進傳輸。該算法是一種高效的ROI圖像編碼算法,易于嵌入基于小波變換的圖像編/解碼方法中,在醫學診斷圖像、網絡傳輸及無線通信等領域,該算法具有參考和實用意義。
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。