王 玲 李 兵 羅 玉
(西華大學計算機與軟件工程學院 成都 610039)
現代醫學中,醫學影像檢查如CT、MRI 已成為醫生診斷和治療的重要手段。尤其是大型醫院每天面臨大量的醫學影像資料存貯,對所需的存儲設備提出了更高要求。同時隨著遠程醫療服務的推行,醫學圖像傳輸對網絡帶寬和實時性提出了更高要求。為了節省存儲容量,滿足海量CT 圖像數據長時間存檔的需求,并且提高壓縮性能,減少網絡傳輸時間,醫學圖像壓縮算法研究成為重要關注問題[1~2]。
文獻[3]將醫學圖像分割為感興趣區和非感興趣區并對此分別采用無損壓縮和有損壓縮,在保證圖像診斷效果的同時提高壓縮比。文獻[4]針對圖像壓縮質量提出一種奇異分解和Contourlet變化相結合的有損圖像壓縮方法,相較于單獨使用這兩種方法能獲取更高的峰值信噪比。文獻[5]進一步提出將離散小波變換(Discrete Wavelet Transform,DWT)、離散余弦變換(Discrete Cosine Transform,DCT)和奇異值分解相結合的有損圖像壓縮混合編碼,明顯改善系統的壓縮比和計算時間。文獻[6]通過遺傳算法與Huffman 編碼對醫學圖像中提取的感興趣區域來進行無損壓縮,相比現存的一些壓縮方法有較高的壓縮比。文獻[7]基于最佳樣條小波變換的改進設計了一種高效的編碼解碼器,相比JPEG2000 標準[8]中常用的雙正交小波變換在同樣壓縮比下有更好的峰值信噪比。但上述這類基于軟件思維設計的圖像壓縮方案難以從性能和速度上提高網絡數據的傳輸效率,阻礙了遠程醫療的在線服務[9]。為減少存儲空間并獲取更有效的傳輸性能,許多學者為此紛紛提出了基于硬件設計的圖像壓縮方案。文獻[10]提出一種無乘法器、低復雜度的DCT 設計方案,并能通過GPU 快速有效實現。文獻[11]對DWT 的存儲要求和關鍵路徑設計了一種內存高效的多層次結構體系,改進硬件性能,減少片上存儲資源。文獻[12~13]充分利用現場可編程門陣列(Field Programmable Gate Array,FPGA)并行、高速的片內資源,降低片外存儲器的使用,為數據編碼和傳輸提供了充分條件;文獻[14]為滿足復雜設計系統,利用片上系統(System on a Chip,SOC)實現SOC 的系統控制和FPGA 的運算處理,可方便圖像數據的存儲、壓縮、顯示,充分展現了SOC技術軟硬結合的優勢。
在上述圖像壓縮算法研究的基礎上,文中主要從系統資源并行實現的角度,對醫學圖像壓縮方法展開研究。利用FPGA 豐富的硬件資源和并行設計特性,通過提升小波變換降低算法復雜度,減少乘法器數量,進一步利用改進的SPIHT壓縮算法提高圖像編碼壓縮質量與效率。從硬件實現結構解決了軟件在處理圖像壓縮上的局限性,對醫學領域中圖像壓縮處理具有一定的研究價值及參考意義。
醫學圖像壓縮的目的是在保證臨床醫生診斷的前提下減少原始圖像冗余,以盡可能少的數據比特表征盡可能多的診斷信息。醫學圖像在利用小波壓縮時是將圖像數據進行小波變換,實現數據由空間域變換到小波域,然后再對變換后的小波系數進行編碼壓縮處理。醫學影像檢查時由于受檢者的活動、呼吸等造成的干擾信息較多,因此常常需要對醫學圖像進行濾波預處理[15~16]。利用小波變換對醫學圖像進行噪聲濾除既保證了原始圖像的質量又減少了圖像間的冗余信息。以離散余弦變換為核心的JPEG標準因其方塊效應在醫學圖像壓縮領域不能得到很好的應用。而JPEG2000標準中所采用的離散小波變換是面積固定形狀可變的有限波,支持有損壓縮和無損壓縮,其優良的時頻特性可對原始信息在時間和頻率上進行局部化分析。
經典小波變換是在傅里葉變換的基礎上發展起來,其算法復雜且內存占用率大。1996 年,Sweldens 提出不依賴于傅里葉變換的小波提升方法[17](lifting scheme),通過分解、預測、更新三個步驟使原始圖像分解為不同頻率的子帶,整個過程不需要外擴存儲空間,可節約存儲單元。JPEG2000靜態圖像標準中的兩種提升小波變換方法:整數5/3 提升小波和實數9/7 提升小波。這類小波是B 樣條正交小波基的一種,與Haar、Daubechies、Symlets等小波基最大的不同是它的非對稱性,即分解濾波器和重構濾波器的長度不同,但其思想同biorNr.Nd小波基一樣,是雙正交小波對Mallat算法[18]的一種使用。小波變換分解的級數越多其分辨率越低,每一級小波變換都將待變換的圖像數據進行行變換和列變換,分解為HH、LH、HL、LL 四個子帶,分別表示對角線、垂直、水平方向的高頻分量和低頻分量,如圖1所示。

圖1 離散小波變換的頻率分解圖
提升小波變換算法由分裂、預測和更新來得到表征圖像細節的高頻分量和近似圖像的低頻分量。對于醫學圖像,其圖像信息的準確性至關重要。5/3整數提升小波變換算法的優勢之一在于它的整數提升,即忽略歸一化因子的情況下,在提升步驟中將取整算子[x+1/2]作用于預測算子P(1/2)和更新算子U(1/4),從而得到小波變換的整數提升算法,使得原始圖像數據精確重構。其硬件實現框圖如圖2 所示,其中圓圈代表加法器、減法器、乘法器,方框代表延遲器和提升算子的系數值,算法過程由式[12](1)、(2)、(3)表示如下。

圖2 提升算法硬件實現結構圖
分裂:

預測:

更新:

式中,xj是給定的一維輸入信號,分別是信號xj經過經過高通和低通濾波且通過亞采樣后的信號。
事實上小波變換要求圖像是無限長的輸入序列,而圖像數據是有限長度的行與列,為避免圖像邊緣失真在進行圖像小波變換時先對像素進行邊沿擴展。圖像數據延拓方法主要有周期延拓、對稱延拓、零延拓、重復延拓和光滑延拓等。JPEG2000標準中對邊界數據采用周期性的對稱延拓,本文綜合考慮醫學圖像的保真度和硬件實現條件,采用邊緣不易失真且無需大量緩存器保存邊界值的對稱延拓法來處理邊界數據。其修改后提升小波算法的預測和更新過程如式(4)、(5)所示。

由以上公式算法可知在5/3提升小波變換中主要涉及加法及減法運算,其中少量的除法運算,通過硬件中的移位運算右移一位或者兩位即可實現。此外利用小波變換的局域性,通過FPGA 資源的并行流水設計,實現圖像行列變換同時進行。在圖像讀取完成后只需延遲幾個緩存周期即可處理完整幅圖像的三級小波變換,大大縮短了圖像編碼壓縮的時間周期。同時利用FPGA 可實現變換模塊與編碼壓縮模塊的并行處理,使圖像編碼壓縮的整個過程更高效。FPGA對上述算法的實現框圖如圖3 所示,經過三次2D-DWT 的流水線設計可使后續的編碼模塊從緩存中讀取變換后的小波系數進行后續圖像的編碼壓縮處理。
多級樹集合分裂(Set Partitioning in Hierarchical Trees,SPIHT)算法相比嵌入式零樹小波(Embedded Zero Wavelet,EZW)和優化截取內嵌碼塊編碼(Embedded Block Coding with Optimized Truncation,EBCOT)節省了大量硬件資源和內存單元,具有很好的漸進傳輸特性。另外,SPIHT 算法的復雜度較低,峰值信噪比較高,是FPGA 系統實現醫學圖像編碼壓縮的較好選擇。SPIHT 編碼結合EBCOT 的位平面編碼與EZW 的嵌入式編碼,采用空間方向樹有效表示小波系數,其樹結構如圖4 所示。

圖3 基于FPGA的三級5/3整數提升小波變換算法框圖

圖4 SPIHT編碼算法的樹結構
SPIHT 算法[19]主要步驟由重要性測試、三個鏈表、四個集合作為算法基礎,通過初始化、排序掃描、精細掃描來完成。其相關理論基礎如下:
1)重要性測試。對于N 級小波變換,SPIHT 算法通過一系列閾值T0,T1,…,TN-1來確定小波系數的重要性。假設小波系數的坐標集為X={(i,j)},對于閾值T=2n中指數n 為正整數,且其中| c(i,j) |代表小波變換后系數的絕對值。對于某個小波系數或某個集合的重要性通過如下公式[19]來判別:

當Cn(X)=1 時,就稱集合X 關于閾值2n是重要的;否則,稱其在本級重要性測試中是不重要的。
2)三個鏈表。SPIHT 算法中引入三個有序表來存儲系數值的坐標位置,分別是:重要系數表(LSP)、不重要系數表(LIP)、不重要子集表(LIP),帶類型(D型,L型)。
3)四種集合。
O(i,j):節點(i,j)直接孩子的集合;
D(i,j):節點(i,j)直接孩子及子孫的集合;
L(i,j):節點(i,j)間接孩子即非直系子孫的集合,且L(i,j)=D(i,j)-O(i,j);
H(i,j):樹根的坐標集(對應N 級小波變換,H為LLN、LHN、HLN、HHN)。
其算法步驟主要如下:
1)閾值和有序表的初始化。根據小波變換后的系數確定初始閾值,定義

2)排序掃描。按EZW 零樹的Mortan 掃描順序依次檢查LIP 中的所有小波系數,判定其重要性,然后再順次處理LIS 中的每個表項,并對D 型和L型分別處理。
3)精細掃描。給出2)中掃描時重要系數在當前位平面中的修改值。
4)進行下一次排序掃描和精細掃描。SPIHT算法在完成1 次排序掃描和精細掃描后,將輸出閾值、排序掃描位流、精細掃描位流及3 個有序表的初始化信息給解碼器。同時將閾值和3 個有序表的當前狀態值用于下一次掃描的信息。
圖像經過三級5/3整數提升小波變換后被分解為高頻和低頻各個子帶系數矩陣,對高頻小波系數進行閾值優化。在此基礎上利用SPIHT 算法編碼時對不同子帶根據實際情況進行不同深度的編碼精煉次數。對LL低頻近似子帶采用更多的精煉次數獲取高質量重構圖像,而對HH 高頻細節部分適當減少精煉次數甚至不編碼以此提高圖像壓縮比。其具體壓縮過程如圖5所示。
實驗將每像素8 比特,512×512 大小的醫學圖像首先經5/3 整數提升小波變換三級分解,如圖6所示,再將變換后的小波系數使用改進的SPIHT算法編碼,通過Matlab仿真驗證算法。

圖5 改進的SPIHT編碼壓縮框圖

圖6 三級5/3整數提升小波變換
采用經過格式轉換處理的5 張醫學CT 圖像和標準Lena 圖像作為實驗測試對象,利用圖像保真度準則中的客觀評價參數壓縮比(CR)和峰值信噪比(PSNR)、重構誤差方差(MSE)來評估圖像壓縮性能及重構圖像與原圖像的失真程度[20],如表1 所示。若圖像大小為M*N,f(x,y)表示原圖,f?(x,y)為解碼重構圖像,其MSE 被定義為原始圖像與重建圖像的均方誤差如式(7)所示;峰值信噪比被定義為原始圖像信號方差與重構誤差方差之比如式(8)所示,其中K 為原始圖像像素值的動態范圍,對于本實驗每像素8 比特的圖像,K=28-1;壓縮比是壓縮前后表征圖像的比特數之比,如式(9)所示。

通過表1 可知在5/3 整數提升小波變換的基礎上采用圖像各個子帶進行SPIHT編碼壓縮的方法,相較于整幅圖像一起編碼執行時間更快,壓縮比更高且峰值信噪比相比JPEG2000 算法幾乎沒有損失,解碼重構圖像較為清晰(如圖7 所示)能夠滿足醫學圖像的診斷效果。

表1 壓縮算法的性能評估參數

圖7 醫學圖像壓縮前后對比圖
文中通過采用雙正交5/3整數提升小波變換獲取到較好且適用于硬件實現的小波系數后,再采用改進的多級樹集合分裂編碼算法對小波系數進行編碼壓縮,從而實現對DICOM 醫學圖像格式文件的壓縮處理。實驗證明提升小波變換通過硬件思想優化算法,降低算法復雜度,適用于FPGA 資源并行流水的設計,可提高圖像編碼壓縮的執行效率且保證了圖像重構精度;通過對各個頻率子帶的閾值優化及不同深度的精煉實現醫學圖像的高質量壓縮。以上工作可進一步從FPGA硬件系統實現角度實現圖像的高效壓縮,是提高壓縮算法性能的較好研究方向,具有相對實用的價值,可一定程度上緩解醫院PACS系統中圖像數據的存儲和傳輸負荷。