SPIHT算法在醫(yī)學(xué)圖像無(wú)失真壓縮中的應(yīng)用
1 引言
隨著社會(huì)的發(fā)展和醫(yī)療技術(shù)的進(jìn)步,人們對(duì)身體健康的關(guān)心程度越來(lái)越高。醫(yī)學(xué)影像已經(jīng)不再是僅供醫(yī)生參考的信息而成為診斷疾病的重要依據(jù)。在網(wǎng)絡(luò)傳輸條件下的圖像壓縮編碼成為建立數(shù)字化醫(yī)院的關(guān)鍵技術(shù)。目前,二維圖像的壓縮標(biāo)準(zhǔn)有JPEG、GIF及采用了小波變換的JPEG2000等。醫(yī)學(xué)圖像具有特殊性,它一般不允許丟失有用的細(xì)節(jié)信息。傳統(tǒng)的DCT(Discrete Cosine Transform,離散余弦變換)和第一代小波在圖像變換后會(huì)產(chǎn)生浮點(diǎn)數(shù),因而必須對(duì)變換后的數(shù)據(jù)進(jìn)行量化處理,這樣就會(huì)產(chǎn)生不同程度的失真??梢?jiàn),量化器的設(shè)計(jì)是決定圖像保真度的關(guān)鍵環(huán)節(jié)。由于第二代小波采用提升方法能夠?qū)崿F(xiàn)整數(shù)變換,因而能夠?qū)崿F(xiàn)圖像的無(wú)損壓縮,顯然,它是一種很適于醫(yī)學(xué)圖像的壓縮方法。
基于分層樹(shù)的集合劃分算法(Set Partitioning inHierarchical Trees,SPIHT)改進(jìn)了內(nèi)嵌零樹(shù)編碼算法(EZW)。在對(duì)圖像進(jìn)行小波變換后,它更有效地利用了不同尺度子帶重要系數(shù)間的相似性。它呈現(xiàn)出良好的特性:不依賴傅立葉變換而在空間域中構(gòu)造小波;較高的PSNR(Peak Signal Noise Ratio,峰值信噪比)保證了良好的重現(xiàn)圖像質(zhì)量;整數(shù)運(yùn)算利于實(shí)現(xiàn)實(shí)時(shí)快速編解碼和網(wǎng)絡(luò)傳輸;圖像碼流的逐漸呈現(xiàn)便于用戶上網(wǎng)檢索感興趣的圖像。
SPIHT算法對(duì)圖像信息采用如下的編碼步驟。
首先,定義三個(gè)隊(duì)列:不顯著性系數(shù)隊(duì)列LIP,顯著性系數(shù)隊(duì)列LSP和不顯著性集合隊(duì)列LIS。
設(shè),O(i,j)表示節(jié)點(diǎn)(i,j)的直接節(jié)點(diǎn)的集合;D(i,j)表示節(jié)點(diǎn)(i,j)的子節(jié)點(diǎn)集合;L(i,j)表示子節(jié)點(diǎn)中排除直接節(jié)點(diǎn)后的集合。
在隊(duì)列中,每個(gè)元素由一個(gè)坐標(biāo)唯一識(shí)別,它在LIP和LSP中代表孤立系數(shù)(無(wú)子節(jié)點(diǎn)的根節(jié)點(diǎn)),在LIS中代表第一類元素的D(i,j)或者第二類元素的L(i,j)。
對(duì)某個(gè)閾值T進(jìn)行顯著性測(cè)試。將大于T的元素移入LSP,并在LIP隊(duì)列中移除該元素。對(duì)LIS也進(jìn)行同樣的測(cè)試,將顯著的元素移入LSP,其他的再進(jìn)行樹(shù)的分裂。
用類C++語(yǔ)言描述的SPIHT算法如下:
第一步,閾值T和三個(gè)隊(duì)列(LSP、LIS和LIP)初始化。
(2)if(x,y)是第二類元素,對(duì)L(i,j)進(jìn)行顯著性測(cè)試
if(L(i,j))==1 all(k,l)∈O(i,j)作為第一類元素移入LIS,從LIS出隊(duì)。
第三步,比特傳輸/存儲(chǔ)。將LSP中的每個(gè)系數(shù)轉(zhuǎn)化成二進(jìn)制傳輸/存儲(chǔ)。
第四步,閾值更新并轉(zhuǎn)至第二步:T/=2;gotostep2。
3 提升方案與第二代小波
提升方法構(gòu)造小波分為分裂、預(yù)測(cè)和更新三個(gè)步驟。
3.1 分裂(split)
將一原始信號(hào)序列Sj按偶數(shù)和奇數(shù)序號(hào)分成兩個(gè)較小的、互不相交的小波子集Sj-1和dj-1:
3.2 預(yù)測(cè)(predict)
由于數(shù)據(jù)間存在相關(guān)性,因而可以定義一個(gè)預(yù)測(cè)算子P,使dj-1=P(Sj-1),這樣可用相鄰的偶數(shù)序列來(lái)預(yù)測(cè)奇數(shù)序列。若用dj-1與P(Sj-1)的差值代替dj-1,則其數(shù)據(jù)量要比原始dj-1小得多。
最簡(jiǎn)單的情況下,取兩個(gè)相鄰偶數(shù)序號(hào)所在數(shù)據(jù)的均值作為它們間奇數(shù)序號(hào)所在數(shù)據(jù)的預(yù)測(cè)值。即,
3.3 更新(update)
由于上述兩個(gè)過(guò)程一般不能保持原圖像中的某些整體性質(zhì)(如亮度),為此,我們要構(gòu)造一個(gè)U算子去更新Sj-1,使之保持原有數(shù)據(jù)集的某些特性。
4 編/解碼方案
本文中前端采用第二代小波(lifting wavelet),接著對(duì)小波系數(shù)采用SPIHT算法,然后,采用Amir Said的自適應(yīng)算術(shù)編碼。解碼是編碼的逆過(guò)程,包括與正向SPIHT對(duì)應(yīng)的三個(gè)步驟:恢復(fù)更新、恢復(fù)預(yù)測(cè)和合并(merge)。編/解碼方案如圖1所示。
如果前端利用第一代小波進(jìn)行有損壓縮,可以取得更高的壓縮比。顯然,第二代小波變換對(duì)數(shù)據(jù)壓縮的高保真性與高壓縮比的要求是矛盾的。
5 實(shí)驗(yàn)結(jié)果及結(jié)論
對(duì)上一編碼方案,我們分別對(duì)醫(yī)學(xué)圖像和Lena圖像進(jìn)行了測(cè)試,碼率bbp采用bit/pixel。由于采用了無(wú)損壓縮方案,所以,表1中的三種不同編碼方法均有PSNR=∞。
從表1可以看出,在對(duì)標(biāo)準(zhǔn)測(cè)試圖像Lena進(jìn)行編碼時(shí)性能差別不是很大,但由于一般的醫(yī)學(xué)圖像的邊緣存在大量的“零像素”,因此,在用SPIHT編碼時(shí)可以產(chǎn)生大量的“零樹(shù)”,大大減少了數(shù)據(jù)量。所以,在對(duì)醫(yī)學(xué)圖像進(jìn)行壓縮時(shí),更適合采用本文的方法。
進(jìn)一步的分析表明,與目前廣為使用的JPEG相比較,本壓縮方案占用內(nèi)存小、編碼效率高且無(wú)馬賽克現(xiàn)象。在低碼率時(shí),兩者間的差距更為明顯。如果該方案采用并行快速算法和硬件實(shí)現(xiàn),其實(shí)時(shí)性會(huì)進(jìn)一步提高,所以,該醫(yī)學(xué)圖像壓縮方案有較好的應(yīng)用前景。
評(píng)論