趙恒陽,劉 華
(上海交通大學 儀器工程系,上海 200240)
隨著低功耗、低成本的微型CMOS圖像傳感器和ASIC技術的發(fā)展,可吞服的 WCE(Wireless Capsule Endoscopy)技術已經得到廣泛研究。從2001年8月WCE最初由GivenImaging公司設計實現(xiàn)至今,其圖像質量、幀率、視角、體積和工作時間等方面都有所改善。隨著WCE概念的進一步明確和相關技術的發(fā)展,很多新的方向正在被研究,包括提高WCE工作時間的體外供能方案[1],改善圖像質量、幀率的數(shù)據(jù)壓縮方案[2-3],WCE位置和姿態(tài)的主動控制[4],WCE的體內定位[5]等。由于WCE系統(tǒng)極有可能在未來的無創(chuàng)治療(體內組織取樣、施藥或微手術)操作中需要圖像導航,所以高質量的數(shù)字圖像采集和傳輸在將來的WCE系統(tǒng)中將成為重要組成部分[6]。
JPEG有損壓縮算法基于 DCT(離散余弦變換),壓縮比例可以達到30:1或者更高。與基于小波變換的JPEG2000壓縮標準相比,JPEG雖然有著相對較低的壓縮比和較高壓縮比下的馬賽克失真,但是可以在壓縮比適中的條件下達到一定的保真度,同時在硬件實現(xiàn)方面更為簡單。雖然現(xiàn)在出現(xiàn)了使用非JPEG圖像壓縮的WCE解決方案[2-7],但是在WCE中使用JPEG在有效節(jié)約無線數(shù)據(jù)帶寬的同時,還為數(shù)據(jù)接收端的處理和保存帶來便利。
可行性方面,VGA尺寸的 24位 RGB圖像大小為 320×240×24bytes≈1.8 kbits,在壓縮比為30:1的條件下,達到25 fps幀率需要的比特率為1.5 Mbps。現(xiàn)在市場上已經普遍出現(xiàn)可以滿足2 Mbps,工作在2.4 GHz的無線收發(fā)芯片。JPEG算法本身不能通過調整量化表和哈夫曼表來直接控制壓縮比例,但是在壓縮比例為 30:1的平均水平下,2 MHz無線信道可以保證25 fps的信號質量。由于JPEG算法以8×8尺寸的數(shù)據(jù)塊為基本單位進行壓縮,而市場上大多數(shù)的CMOS圖像傳感器均采用類VGA的時序輸出數(shù)據(jù),所以在整個壓縮器的輸入級需要一個8行圖像數(shù)據(jù)的緩存。數(shù)據(jù)緩存的用途是在接收完8行圖像數(shù)據(jù)后,將數(shù)據(jù)以8×8為單位重新逐行輸出。這個緩存器所占用的RAM大小是可觀的,一幅QVGA圖像的寬度為320像素,色深為24位,又因為緩存器需要設計成為前后臺交替的形式,所以其雙口RAM需求量為320×8×24×2=122.88 kb。FPGA通常使用 Block RAM解決大塊內存使用的問題,驗證設計所選擇的Xilinx Spartan6 XL9含有至多288 kb的雙口RAM,可以滿足算法驗證的需求。
本設計的核心基于Baseline JPEG算法[8],Baseline JPEG接受 8×8尺寸的數(shù)據(jù)塊,依次經過離散余弦變換(DCT)、量化器、折線掃描器和熵編碼器最終產生壓縮數(shù)據(jù)。在JPEG壓縮器開始工作之前,圖像必須被組織成為一系列8×8尺寸的數(shù)據(jù)塊(Checker Board,CB),并經過下采樣(可選)和色彩空間變換。經過壓縮以后,每個CB被壓縮成為若干位數(shù)據(jù)。為了進行方便的數(shù)據(jù)傳輸,另需要將這些數(shù)據(jù)進行字節(jié)級的打包和對齊。由此,除了 Baseline JPEG核心,還需要一些其他的外圍組件:包括CB生成器、下采樣器、色彩空變換器在內的輸入級,以及包含數(shù)據(jù)打包器、字節(jié)過濾器的輸出級。
JPEG Baseline壓縮算法中的DCT由公式(1)給出:


頻率量化是JPEG算法得高壓縮比和可控壓縮的主要手段。頻率量化通過對頻率矩陣F的各個分量進行不同粒度的量化來達到縮減數(shù)據(jù)量的目的。量化器通過對CB的每個數(shù)據(jù)除以給定的量化值(量化粒度)完成量化,如式(4):

式中,B8×8量化結果;F8×8是待量化的數(shù)據(jù);Q8×8是量化表元素;[x]代表不超過 的最大整數(shù)。經過量化以后,矩陣B8×8中將出現(xiàn)很多值為 0的高頻分量。由于 JPEG算法針對的是連續(xù)變化的圖像數(shù)據(jù),所以非零分量大多集中在B左上角的高頻區(qū)域。為了提高游程編碼的編碼效率,將量化結果保存為序列 Z。Z為矩陣B8×8的自左上角開始的折形排列:

熵編碼采用包括查分編碼、游程編碼、變長編碼、哈夫曼編碼在內的許多編碼技術,對Z進行編碼。熵編碼是無損的,但是對Z的編碼是高效的。 對于一幅單色圖片,假設其經過劃分以后得到的 CB為 X0,X1,X2,...,XN-1,經過 DCT和量化后得到的結果為Z0,Z1,Z2,...,ZN-1,記熵編碼器產生的結果為S0,S1,S2,...,SN-1。Si由一系列二進制數(shù)據(jù)組成:

式中 DCi是量化后的DC分量,ACi,j是交流分量。在這種表達方式中,ACi,j有可能不含有任何二進制數(shù)據(jù)。由于每兩個相鄰CB中的DC分量通常都是接近的,JPEG中使用差分編碼來降低其中DC分量的平均碼長。

Baseline JPEG使用游程編碼處理每一個 Z中的AC分量,即Z1,Z2,...,Z63。每一個 AC分量被游程編碼器處理并表示為(run-length,value)的形式。通常情況下,只有非零的 Zi被編碼。相應的run-length為此編碼和上一個非零編碼之間零的個數(shù),value為當前 Zi的值。run-length以無符號整數(shù)的形式儲存在寬度為4的寄存器中,所以游程上限為15。如果遇到大于 15的游程,無論第 16個數(shù)字 Zi是否為零,都被強制編碼為 (15,Zi)。另外,由于序列 Z的末尾通常由連續(xù)的零組成,所有末尾連續(xù)的零將被編碼為EOB(End Of Block)—(0,0),這個碼字不會在正常的游程編碼中出現(xiàn)。變長編碼器對 DPCM對DC的編碼和AC的值進行測量,將有符號整數(shù)v 表示為(l,v')。

假設DC的查分編碼和Run-Length Encoder的輸出一起表示則R經過變長編碼器之后的輸出為哈夫曼編碼用較少的二進制碼字表示出現(xiàn)頻率較高的信元,從而達到縮減數(shù)據(jù)量的目的。JPEG把V中DC分量的l和其余元組中的r和l分別使用不同的哈夫曼表進行進行哈夫曼編碼,得到最終輸出}。式中hdc(l)為l經過DC哈夫曼表的編碼結果,hac(r,l)為r和l經過位拼接以后經AC哈夫曼表的編碼結果。
Baseline JPEG壓縮器使用Verilog HDL進行實現(xiàn)。實用的壓縮器分為三部分進行設計:1)輸入預處理器(圖1)。輸入級兼容CMOS傳感器的輸出圖像時序,以及對數(shù)據(jù)進行進行YCbCr422格式下采樣和色彩空間變換。2)壓縮器核心(圖2)。Baseline JPEG核心對來自輸入級的CB進行壓縮,并輸出稀疏的變長數(shù)據(jù)。3)輸出過濾器(圖3)。將Baseline JPEG輸出的變長數(shù)據(jù)進行對齊和拼接,并對數(shù)據(jù)流進行JFIF格式兼容的過濾操作(圖像在以JFIF格式進行表示時,壓縮數(shù)據(jù)中0xff字節(jié)后須添加0x00字節(jié)以與JFIF的標記頭相區(qū)分)。
Baseline JPEG Compressor的作用是將輸入級給出的Checker Board序列壓縮成為 bit串。圖 5描繪了其內部結構,省略了全局時鐘和復位管理器。在系統(tǒng)復位以后,復位管理器根據(jù)前級模塊的輸出延遲依次復位內部的所有子模塊,這樣包含內部狀態(tài)的子模塊就可以正確的工作。

圖1 輸入預處理器Fig.1 Preprocessor

圖2 Baseline JPEG核心(時鐘、復位略去)Fig.2 Baseline JPEG Core(omitted signals of clock and reset)

圖3 輸出過濾器Fig.3 Output Filter
公式(1)直接給出的 DCT算法需要大量的乘法和加法操作。等效地,兩次應用公式(2)可以有效地減少運算復雜度。對每個 Checker Board,對其每一行進行式(2)給出的變換,再將變換結果的每一列執(zhí)行一次式(2)變換,即得到 2D DCT的變換結果。兩次變換之間需要一級緩沖器,收集和重排第一次1D DCT的結果。實事上,使用公式 (3)仍需要大量的乘加邏輯資源。本設計中采用文獻[9]提出的無乘法器硬件DCT算法,將一次1D DCT的復雜度從64次乘法和 64次加法降低到29次加法和5次乘法。

圖4 基于Xilinx FPGA的驗證平臺Fig.4 Testing platform based on Xilinx FPGA

圖5 圖像測試結果Fig.5 Testing results
Baseline JPEG算法在PC平臺上經Xilinx ISim仿真通過。在Xilinx Spartan6 LX9 FPGA平臺上,實驗數(shù)據(jù)經115200波特率串行接口傳輸至PC端(圖4)。圖5列出了使用不同量化表得到的實驗結果以及相應的壓縮比和峰值信噪比(PSNR)。可見,在壓縮比介于15:1至30:1時,本設計的輸出可以良好地被還原得到近似的原始圖像。在FPGA平臺上的單元測試結果與硬件使用量如表1所示。
相比于未下采樣的 YCbCr444格式,本設計中的YCbCr422下采樣可以將原數(shù)據(jù)量降低33.3%。然而,一種PC平臺上更常用的 YCbCr411下采樣可以降低原數(shù)據(jù)量的50%,并保持人眼視覺體驗基本不變。本設計沒有采用這種體積上更優(yōu)的下采樣主要是考慮到行緩存用量。由于YCbCr422下采樣不在垂直方向上下采樣,所以在輸入級中僅需緩存一行 Checker Board(8像素行)。YCbCr411下采樣垂直下采樣比為2:1,所以在輸入及需要緩存兩行 Checker Boards(16像素行)。這使得緩存用量提升為 YCbCr422用量的兩倍。
Checker Board Generator使用了大量的緩存,這在FPGA驗證和將來的ASIC設計中都需要大量的Block RAM,但是在VGA及其兼容接口中是不可避免的。如在將來的工作中可以定制或設計以Checker Board為單位進行數(shù)據(jù)傳輸?shù)膱D像傳感器,則這一緩存可以省去。另外由于流水線除法器和乘法器的使用,F(xiàn)requency Quantizer和Color Space Translator占用了可觀的邏輯資源。作為折中方案,若采用基于移位的乘/除法器將會降低邏輯資源用量,但會引起色彩空間變換及DCT的精度問題,以及對量化表帶來精度限制。功耗和體積方面[10],本實驗驗證所使用的Xilinx Spartan 6 XL9 FPGA不能滿足將來集成在可吞服膠囊內的要求。在制成膠囊樣機的過程中,低功耗和小型封裝的FPGA產品應該被考慮。

表1 壓縮器各個模塊邏輯資源使用量Tab.1 Hardware consumption of the compressor modules
圖像測試結果表明,本文描述和設計的Baseline JPEG壓縮器在166 MHz的工作頻率下可以達到壓縮比為30:1至40:1,并保留了原始圖片良好的關鍵信息。將圖像數(shù)據(jù)在2.4 GHz頻段,以2 Mbps的數(shù)據(jù)速率進行傳輸,可達到至少每秒30幀的數(shù)據(jù)速率,滿足WCE設計中視頻導航的圖像質量和幀率需求。
[1]Yu,Shi,et al.The Design and Implementation of the Wireless Power Transmission System of Video Capsule Endoscopy[C]//.Macau,Macao:Biomedical Engineering and Biotechnology (iCBEB),2012 International Conference on.IEEE,2012:578-581.
[2]Mostafa,Atahar,Khan Wahid,and Seok-Bum Ko.An efficient YCgCo-based image compression algorithm for capsule endoscopy [C]//.Dhaka:Computer and Information Technology(ICCIT),2011 14th International Conference on.IEEE,2011:219-222.
[3]Vatteroni,M.,et al.Vision system for high frame rate wireless capsule endoscope [C]//Limerick:Sensors,2011 IEEE.IEEE,2011:809-812.
[4]Keller,Jutta,et al.Remote magnetic control of a wireless capsule endoscope in the esophagus is safe and feasible:results of a randomized,clinical trial in healthy volunteers[J].Gastrointestinal Endoscopy,2010,72(5):941-946.
[5]Pahlavan,Kaveh,et al.RF localization for wireless video capsule endoscopy[J].International Journal of Wireless Information Networks,2012,19(4):326-340.
[6]Ciuti,Gastone,Arianna Menciassi,and Paolo Dario.Capsule endoscopy:From current achievements to open challenges[J].Biomedical Engineering,2011(4):59-72.
[7]Daryanavard,H.,G.Karimian,and S.M.R.Shahshahani.A new IC designed inside capsule endoscope for detection of bleeding region [C]//.Isfahan:BiomedicalEngineering(ICBME),2010 17th Iranian Conference of.IEEE,2010:1-4.
[8]Gregory K.W.The JPEG Still Picture Commpression Standard [J].Communications of the ACM,1991,34(4):xviiixxxiv.
[9]Agostini,Luciano Volcan,et al.A FPGA based design of a multiplierless and fully pipelined JPEG compressor[C]//Digital System Design,2005.Proceedings.8th Euromicro Conference on.IEEE,2005:210-213.
[10]黃婷,黃偉.基于不同算法求解子問題的Benders分解法在無功規(guī)劃中的應用[J].陜西電力,2013(3):23-26.HUANG Ting,HUANG Wei.Application ofBenders decomposition based on different method to solve subproblems in reactive power planning[J].Shaanxi Electric Power,2013(3):23-26.