基于小波變換的JPEG2000圖像壓縮編碼系統(tǒng)的仿真與設(shè)計
引言
本文引用地址:http://cafeforensic.com/article/201809/389023.htm隨著多媒體技術(shù)的發(fā)展,出現(xiàn)了各種各樣的靜止圖像壓縮技術(shù),其中最成功的當(dāng)推JPEG標(biāo)準(zhǔn)。但由于有損壓縮的原因,傳統(tǒng)JPEG在許多對圖像質(zhì)量要求較高的應(yīng)用場合無法勝任。與傳統(tǒng)JPEG基于離散余弦變換不同,JPEG2000基于離散小波變換,它不僅在壓縮性能方面明顯優(yōu)于JPEG,還具有很多JPEG無法提供或無法有效提供的新功能,比如,同時支持有損和無損壓縮、大幅圖像的壓縮、漸進傳輸、感興趣區(qū)編碼、良好的魯棒性、碼流隨機訪問等。一個典型的JPEG2000的壓縮過程如圖1所示。
圖1 JPEG2000的壓縮過程
由圖1所示,預(yù)處理一般包括三種操作:區(qū)域劃分,降低量級,分量變換。預(yù)處理后的數(shù)據(jù)將進行離散小波變換(DWT),以進一步降低數(shù)據(jù)之間的相關(guān)性。JPEG2000的量化與JPEG量化基本相同,總體上都是采用均勻量化,不同子帶的量化步長一般不同。量化以后,第一層編碼(自適應(yīng)算術(shù)編碼)采用EZW的改進算法SPIHT算法將等待編碼的、經(jīng)過小波變換后的比特流按重要性不同進行排序,提供多個滿足不同目標(biāo)碼率或失真度的截斷點,使得解碼器方能根據(jù)目標(biāo)碼率或失真度的要求在某一截斷點結(jié)束解碼,提供相應(yīng)質(zhì)量的圖像。第二層編碼(碼流組織)將上述截斷的數(shù)據(jù)進行打包,并附加相關(guān)的標(biāo)志信息,從而實現(xiàn)JPEG2000對多失真度的支持。
離散小波變換系統(tǒng)
小波分析進行圖像壓縮基本原理是:根據(jù)二維小波分解算法,一幅圖像做小波分解后,可得到一系列不同分辨率的圖像,而表現(xiàn)一幅圖像最主要的部分是低頻部分,如果去掉圖像的高頻部分而只保留低頻部分,則可達到圖像壓縮的目的。傳統(tǒng)傅立葉分析只能對信號進行時域或頻域單獨進行分析,時域上有限的信號在頻域是無窮的,頻域內(nèi)有限的信號在時域里是無窮的。而小波分析能在時域和頻域內(nèi)同時分析,且能自動調(diào)整分辨率。
與其他使用小波變換的其他圖像壓縮標(biāo)準(zhǔn)相比,JPEG2000在小波變換的基礎(chǔ)上采用更為復(fù)雜精細的小波塊分割算法,即優(yōu)化截取的嵌入式塊編碼EBCOT算法,從而實現(xiàn)了豐富的功能,比如基于感興趣區(qū)域編碼ROI,即對一幅圖像中感興趣的部分采用低壓縮比以獲取較好的圖像效果,而對其他部分采用高壓縮比以節(jié)省存儲空間,這樣就可以通過點擊ROI部分以獲得更高的分辨率,看到圖像的細節(jié)部分。
在本系統(tǒng)中,采用第二代小波變換的快速提升算法CDF9/7雙正交小波變換,小波變換取CDF9/7雙正交小波基,該小波基具有線性相位,因而有著極好的圖像壓縮性能。其實現(xiàn)過程如圖2所示。
圖2 CDF9/7雙正交小波變換的實現(xiàn)過程
圖3是用CDF9/7小波族對一個的圖像做兩級DWT分析的情況。在第二級中,第一級得到的低通近似本身被分成4個子圖像,提取出了細節(jié),留下一個新的低通近似。低通濾波的效果很容易從圍巾、桌布的花紋,藤椅的方格,遠處羅列的書籍這些細節(jié)的丟失看出。第二級低通近似也可以繼續(xù)變換,以生成4幅新的子圖像。這種變換可以一直進行下去知道子圖像只包含一個像素為止。
a 原始圖像
b二維DWT分析圖像
圖3 兩級二維DWT分析
在圖3中,垂直細節(jié)對應(yīng)于分析塊的右上角,水平細節(jié)對應(yīng)于左下角,而對角細節(jié)對應(yīng)于右下角,它們都表現(xiàn)出了較強的外觀。當(dāng)數(shù)字圖像需要通過二維DWT子圖像重建時,就要用向上采樣和卷積的辦法將細節(jié)與低通近似組合起來。
SPIHT圖像編碼
為了驗證JPEG2000系統(tǒng)的可行性及性能,采用MATLAB對系統(tǒng)中的小波變換部分進行了仿真,然后用C++語言對小波變換后的系數(shù)進行編解碼,實現(xiàn)系統(tǒng)中第二部分的仿真,以大幅降低數(shù)據(jù)量。SPIHT是基于內(nèi)嵌零樹編碼(EZW)的集分割算法,C++中的鏈表類能實現(xiàn)SPIHT算法中的三個控制鏈表(LSP,LIP和LIS),方便的位操作命令適合處理算法中基于位平面的編解碼功能。
為了對小波變換和SPIHT編碼算法有更直觀的認識,下面從一幅圖像中選取尺寸的像素矩陣進行處理,分析每一步處理后數(shù)據(jù)的變化。
初始圖像矩陣如圖4所示,所用圖像是256色(每像素8位),像素灰度圖。
圖4 圖像xiaoshutiao.bmp中的一部分數(shù)據(jù)
由上圖可以看出圖像幅值分布比較隨機,沒有什么規(guī)律。對上數(shù)據(jù)進行離散小波變化后的數(shù)據(jù)如圖5所示,小波變換采用基于提升的CDF9/7雙正交小波基,進行5級分解。
圖5 三級小波變換后的系數(shù)數(shù)據(jù)
由上圖數(shù)據(jù)可以看出,幅值大的數(shù)據(jù)主要分布于左上交,這與小波變換后的數(shù)據(jù)分布特點是一致的,即第一級是低頻圖像概貌數(shù)據(jù),集中了圖像大部分的能量,其余各級是分辯率不同的圖像的高頻細節(jié)數(shù)據(jù),反映圖像水平、垂直、和傾斜方向的紋理信息,故大數(shù)據(jù)呈線狀分布,總能量比較少,便于對數(shù)據(jù)進行不同分辯質(zhì)量的壓縮。
對上數(shù)據(jù)進行SPIHT編碼后的數(shù)據(jù)見圖6所示。
圖6 SPIHT編碼數(shù)據(jù)
從上圖數(shù)據(jù)可以看出,連1數(shù)據(jù)和連0數(shù)據(jù)都較多,可對其作進一步的游程編碼。游程編碼即記錄數(shù)據(jù)中連0和連1的個數(shù)數(shù)據(jù)的壓縮方式。編碼后的數(shù)據(jù)見圖7。
圖7 游程編碼數(shù)據(jù)
在對上數(shù)據(jù)作進一步的哈夫曼編碼,哈夫曼編碼是一種無損最優(yōu)編碼方案,如圖8所示。
圖8 Huffman編碼數(shù)據(jù)
注意上述整個編碼都是無失真的,也即通過一系列的解碼過程可以完全恢復(fù)出原始圖像。如果對原始圖像進行某一等級分辨率的壓縮后可大大降低數(shù)據(jù)量。
結(jié)語
本文介紹了小波變換在圖像壓縮JPEG2000里的應(yīng)用。小波變換不同于傳統(tǒng)的域變換壓縮方式,它對圖像整體進行變換,獲得一系列不同分辨率的圖像概貌信息和細節(jié)信息,從而為進一步處理提供很大的余地。同時通過對一種基于嵌入式零樹思想的集分割SPIHT算法的仿真,說明該算法性能高、計算量小,若在JPEG2000系統(tǒng)中編解碼采用同一套算法,可以大大降低了解碼算法的復(fù)雜性,是一種很有前途的圖像編解碼技術(shù)。
評論