薛金勇,黑勇,陳黎明
(中國科學院 微電子研究所,北京100029)
數(shù)字圖像傳感器廣泛應(yīng)用在各種視頻應(yīng)用領(lǐng)域,由于圖像的數(shù)據(jù)量很大,所以在圖像傳輸前要對圖像進行有損或無損壓縮,有損壓縮一般應(yīng)用在對圖像質(zhì)量要求不高的應(yīng)用領(lǐng)域,但是醫(yī)學圖像等一些高端應(yīng)用領(lǐng)域要求圖像必須采用無損壓縮。快速高效無損圖像壓縮系統(tǒng)是一個快速高效的無損圖像壓縮算法,比工作在無損模式下的JPEG快5倍,且能夠達到相同的壓縮比[1],同時快速高效無損圖像壓縮系統(tǒng)(fast and efficient lossless image compression system,F(xiàn)ELICS)算法復(fù)雜度低,因此非常適合應(yīng)用于醫(yī)療內(nèi)窺鏡系統(tǒng)[2]。但是算法中Golomb-Rice編碼[3]的k參數(shù)選取需要一塊大容量的存儲器,更新存儲器的過程更是消耗大量功耗與時鐘周期,不定長編碼也限制了系統(tǒng)的吞吐量。本文據(jù)此提出了一種更加易于超大規(guī)模集成電路(very large scale integration,VLSI)實現(xiàn)的低功耗 VLSI-oriented FELICS算法,簡化了k參數(shù)的選取,降低了系統(tǒng)的設(shè)計復(fù)雜度,提高了系統(tǒng)吞吐率。
編碼一幀圖像,F(xiàn)ELICS算法不進行任何編碼直接輸出前2個像素,然后按照光柵掃描順序依次編碼像素,編碼步驟如下[1]:
1)選取當前像素P和2個相鄰像素N1、N2。N1與N2已知,且已編碼,為P提供相關(guān)信息,其選取規(guī)則如圖1。
2)計算預(yù)測區(qū)間下界L=min{N1,N2},上界H=max{N1,N2},預(yù)測上下文 Δ=H-L。
3)如果L≤P≤H,像素P落在預(yù)測區(qū)間[L,H],編碼1 bit的0,表示像素P落在預(yù)測區(qū)間內(nèi),然后對P-L在[0,Δ]內(nèi)進行修正的二元編碼;如果L>P,則像素P低于預(yù)測區(qū)間,編碼1 bit的1,表示像素P落在預(yù)測區(qū)間外,再用1 bit的0表示低于預(yù)測區(qū)間,然后計算出P點與預(yù)測區(qū)間邊界的差值D=L-P-1,對該差值D進行Golomb-Rice編碼。
如果P>H,則像素P處于高于預(yù)測區(qū)間,編碼1 bit的1,表示像素P落在預(yù)測區(qū)間外,再用1 bit的1表示高于預(yù)測區(qū)間;然后計算出P點與預(yù)測區(qū)間邊界的差值D,D=P-H-1,對該差值D進行Golomb-Rice編碼。
圖1 當前像素和相鄰像素Fig.1 Current pixel and the two nearest neighbors
對P-L在[0,Δ]內(nèi)進行修正的二元編碼,即如果Δ+1是2的冪,使用編碼字長為lb(Δ+1)的簡單二元編碼;否則調(diào)整編碼方式,一些值的編碼字長為?lb(Δ+1)」,另一些編碼字長為「lb(Δ+1)?。由于像素落在預(yù)測區(qū)間[L,H]中間的概率較大,所以對其采用較短的編碼。
Golomb-Rice編碼方法分為3步:
1)參數(shù)確定:在開始一幀圖像處理前建立一個編碼累加表C[Δ][k],其中Δ取值范圍同像素值的變化范圍,k取值范圍為0至像素深度。對于像素深度為8的Bayer圖像,累加表為256×8的二維數(shù)組。每次Golomb-Rice codes編碼時,根據(jù)Δ0=H-L確定k,即選取最小的k0,使
對于每一個預(yù)測上下文Δ,編碼累加表C[Δ][k]記錄了使用每一個可能的k值(0,1,…,7)時Golomb-Rice編碼的編碼總長度,同時使用令編碼總長度最小的k值進行下一次編碼。
2)Golomb-Rice編碼:參數(shù)k確定后,對D/2k進行一元編碼;后對差值D剩余的低k位進行二元編碼。采用此種編碼單個像素的編碼長度最長可達258 bits。
3)參數(shù)更新:k值確定后,更新編碼累加表:
觀察FELICS的編碼過程,Golomb-Rice編碼的k參數(shù)選取是影響壓縮效率的關(guān)鍵因素,k參數(shù)選取根據(jù)最少編碼位確定,編、解碼器要在Golomb-Rice編碼下對Δ(0~255),在k(0~7)下累計編碼位,從而需要256×8Wbits的存儲空間,W表示編碼累加值的位寬。累計編碼位的過程也要消耗額外的操作周期。
FELICS是不定長編碼,單個像素的編碼長度在Golomb-Rice編碼時最長可達258 bits,因此不論是串行還是并行編碼輸出,都不易于硬件實現(xiàn),限制了系統(tǒng)的吞吐率。
本文提出的VLSI-oriented FELICS采用限長Golomb-Rice編碼,可以簡化參數(shù)k的選擇和更新步驟,消除了256×8Wbits編碼累加表存儲空間,參數(shù)k的選擇可以在一個時鐘周期完成,提高了編碼效率,易于低功耗硬件實現(xiàn);同時限長Golomb-Rice編碼使得單像素編碼不超過16 bits,輸出裝置的輸出緩沖器可在單周期內(nèi)完成單個像素的編碼輸出操作,更適合于實時圖像壓縮,能有效提高系統(tǒng)吞吐率。
像素P落在預(yù)測區(qū)間外,對D進行限長Golomb-Rice編碼,分為3步:
1)參數(shù)確定:參數(shù)k的確定根據(jù)圖像的上下環(huán)境關(guān)系確定,采用JPEG-LS[4-5]中的序列參數(shù)估計,參數(shù)k估計基于誤差絕對值的期望,計算公式為
但由于準確的計算量化誤差絕對值的期望比較困難,在JPEG-LS編碼過程中使用誤差的平均值,設(shè)置2個變量N和A,其中N表示到目前為止出現(xiàn)的誤差的數(shù),A表示到目前為止誤差絕對值的累計值。k參數(shù)滿足k=min{k'|2k'N≥A},即最小的k值使2kN≥A成立。在本設(shè)計中,N為編碼落在預(yù)測區(qū)間外的像素數(shù)目,A為像素落在預(yù)測區(qū)間外的誤差累計。至此,k參數(shù)的選取簡化為計算A與N的最高非零位的差值,如果N通過左移使之最高非零位與A對齊,且值不小于A,則k參數(shù)為A與N的最高非零位的差值,否則為A與N的最高非零位的差值加1。通過對胃窺鏡圖像進行仿真,平均壓縮比由2.66降為2.63,但是硬件復(fù)雜度得到了極大降低,更易于VLSI實現(xiàn)。
2)限長的Golomb-Rice編碼:確定參數(shù)k后,進行Golomb-Rice編碼時,當需要編碼的數(shù)值D遠大于2k時,碼字會變得很長。因此如果D/2k≤5,則編碼為差值D的Golomb-Rice編碼;否則編碼采用限長編碼 {6'b000000+8'bD},由于 FELICS是前綴編碼,使用6'b000000用來表示Golomb-Rice采用了限長編碼,差值D以其 8 bits二進制表示為8'bD,連同指示像素P落于預(yù)測區(qū)間外的1 bit編碼、以及指示像素P高于或低于預(yù)測區(qū)間的1 bit編碼,單個像素的編碼長度最大為16 bits。
3)參數(shù)更新:在完成限長的Golomb-Rice編碼后,對參數(shù)進行更新。利用圖像的局部特性,為了獲得更好的壓縮效果,當N超過一定閾值時,將N和A歸零,閾值通常取32~256的數(shù),這樣k值主要取決于當前像素附近的局部圖像,通過對胃窺鏡圖像進行仿真,閾值取32可以獲得較好的壓縮效果;否則N=N+1,A=A+D。
對12幅標準測試圖像(圖2)的壓縮結(jié)果表明(如表1),本文VLSI-oriented FELICS相比FELICS,壓縮比下降了約為1.7%。在低功耗內(nèi)窺鏡系統(tǒng)中,對12幅醫(yī)學圖像腸胃圖(如圖3)R通道的壓縮結(jié)果表明,F(xiàn)ELICS算法平均壓縮比約為2.659;VLSI-oriented FELICS的平均壓縮比約為2.626,相比FELICS壓縮比下降約為1.2%;文獻[6]參數(shù)k采取定值2,平均壓縮比約為2.476,相比FELICS壓縮比下降約為6.9%。對比文獻[6]參數(shù)k采取固定值,本文中參數(shù)k采取自適應(yīng)選取,能夠更好的適應(yīng)圖像特征,對大部分圖像均能獲得良好的壓縮比,同時硬件與時鐘周期的開銷也非常低。
VLSI-oriented FELICS硬件實現(xiàn)消除了256×8Wbits編碼累加表存儲空間,復(fù)雜度和功耗可大幅減小,參數(shù)k選擇可在一個時鐘周期完成,編碼效率顯著提升。
圖2 標準測試圖像Fig.2 Standard test images
表1 VLSI-oriented FELICS與FELICS對標準圖像壓縮率比較Table 1 Comparison of compression ratio between VLSI-oriented FELICS and FELICS
圖3 醫(yī)學圖像腸胃圖Fig.3 Medical images of intestines and stomach
Bayer圖像格式被廣泛的應(yīng)用在彩色數(shù)字圖像傳感器[7]。GBRG格式Bayer圖像,其RGB三色通道間的像素相關(guān)性較小,單色通道內(nèi)的像素相關(guān)性較大[8],在編碼時為了去除更多圖像冗余信息,要對上述的FELICS算法針對Bayer圖像進行適當?shù)恼{(diào)整,對Bayer圖像的RGB三色分別進行FELICS壓縮,以達到更高的壓縮比。在編碼時需要根據(jù)當前像素P所處的通道選取同通道內(nèi)的相鄰像素進行FELICS編碼,隨著當前像素所處的通道變化,不同通道的FELICS壓縮交叉進行,編碼依序送入輸出緩沖器。
FELICS對Bayer圖像的擴展表現(xiàn)在圖像壓縮實施過程中相鄰像素的選擇,以及k參數(shù)的維持,下面分別介紹。
2.2.1 相鄰像素的選擇
對于Bayer圖像,同通道內(nèi)的相鄰像素選取規(guī)則如FELICS算法描述。但同通道內(nèi)的像素在整幅圖像中是隔行或者隔列相鄰的,所以在選取相鄰像素時必須越過相鄰的行和列,在同通道內(nèi)按FELICS算法相鄰像素規(guī)則選取,如圖4所示。
圖4 Bayer圖像相鄰像素的選取規(guī)則Fig.4 The two nearest neighbors in Bayer image
2.2.2k參數(shù)的維持
對Bayer圖像的RGB三通道分別維持k參數(shù)選取變量N、A、k:
1)參數(shù)確定:對Bayer的每個通道維持各自的變量N和A,分別為變量NG1、AG1,NB、AB,NR、AR,NG2、AG2。在Golomb-Rice編碼時,判斷當前像素P所處的通道,選擇相應(yīng)的N和A。如當前像素處于R通道,則N=NR,A=AR。k參數(shù)滿足公式k=min{k'|2k'N≥A}。
2)參數(shù)更新:在完成限長的Golomb-Rice編碼后,對參數(shù)進行更新。判斷當前像素P所處的通道,更新相應(yīng)的N和A。如當前像素處于R通道,則更新NR,AR。
本文針對Bayer圖像的FELICS擴展能夠?qū)ayer圖像進行良好的快速無損壓縮。Bayer圖像所需存儲空間本身是RGB格式圖像的1/3[8],在低功耗的內(nèi)窺鏡系統(tǒng)中,VLSI-oriented FELICS對醫(yī)學圖像的壓縮比可達2.6,因此可以得到約7.8的無損圖像壓縮比。
綜上,本文的 VLSI-oriented FELICS消除了256×8×Wbits編碼累加表存儲空間;參數(shù)k選擇可在一個時鐘周期完成;單像素編碼不超過16 bits,輸出編碼單元的輸出緩沖器可在單周期內(nèi)完成單個像素的編碼輸出操作;針對Bayer圖像的FELICS擴展能夠?qū)ayer圖像進行較好的快速無損壓縮。因此VLSI-oriented FELICS更適合于實時圖像壓縮系統(tǒng),更易于VLSI的低功耗實現(xiàn)。
設(shè)計采用3級流水線,Bayer圖像大小可配置,系統(tǒng)時鐘包括圖像數(shù)據(jù)傳輸時鐘PCLK和工作時鐘CLK,采用一塊深度可配置的雙時鐘異步FIFO緩存圖像數(shù)據(jù)。壓縮后的圖像數(shù)據(jù)經(jīng)過解壓縮與圖像插值將圖像彩色復(fù)原,系統(tǒng)框圖如圖5。
圖5 VLSI-oriented FELICS系統(tǒng)框圖Fig.5 Block diagram of VLSI-oriented FELICS system
硬件實現(xiàn)包括控制單元,編碼預(yù)測單元,編碼單元和編碼輸出單元??刂茊卧袛嘁环鶊D像的開始與結(jié)束,產(chǎn)生控制信號協(xié)調(diào)各個模塊的工作;編碼預(yù)測單元將傳感器的輸入像素存儲,產(chǎn)生當前像素P、相鄰像素N1與N2、預(yù)測上下文Δ;編碼單元進行修正的二元編碼或者限長Golomb-Rice編碼,輸出編碼的數(shù)據(jù)與位長;編碼數(shù)據(jù)每組成16 bits,編碼輸出單元將其輸出。設(shè)計整體采用流水線結(jié)構(gòu),用以提高系統(tǒng)的時鐘頻率,硬件結(jié)構(gòu)框圖如圖6。表2是本文算法與表文獻[6,9]設(shè)計復(fù)雜度與硬件開銷的對比。從表2可以看出本文提出的針對Bayer圖像的FELICS擴展算法僅使用7.02 K門與10.2 KBits的存儲器,功耗為 26.8 μW/MHz,吞吐率為60 f/s,由于文獻[6]要求對全高清圖像進行壓縮,因此硬件實現(xiàn)對速度要求非常高,采用了并行結(jié)構(gòu),但對其吞吐率歸一化并且考慮圖像傳輸格式因素,其吞吐率與本文的實現(xiàn)具有一定的可比性。最終,相較文獻[6,9],本文的實現(xiàn)均具有一定優(yōu)勢或者可比性,其VLSI設(shè)計復(fù)雜度低、功耗低,非常適合對功耗與面積要求極高的內(nèi)窺鏡系統(tǒng)。
圖像傳感器采用OmniVision公司的OV7649,其VGA幀時序[10]如圖7。當圖像數(shù)據(jù)傳輸時鐘PCLK為24 MHz時,系統(tǒng)的吞吐率可以達到60 f/s。
設(shè)計使用 SMIC 0.13 μm的工藝,進行 DC綜合,Prime Power功耗分析,其特征參數(shù)如表3。最后設(shè)計經(jīng)過了FPGA驗證與實現(xiàn),符合設(shè)計要求。
圖6 VLSI-oriented FELICS硬件結(jié)構(gòu)框圖Fig.6 Block diagram of hardware architecture of VLSI-oriented FELICS
表2 與已發(fā)表文獻比較Table 2 Comparisons with existing works
圖7 VGA幀時序圖Fig.7 VGA frame timing diagram
表3 設(shè)計參數(shù)Table 3 Specification of the design
本文提出了一種更加易于VLSI實現(xiàn)的低功耗VLSI-oriented FELICS算法:1)采用限長 Golomb-Rice編碼,簡化了k參數(shù)的選取,消除了大容量的存儲器以及操作周期;自適應(yīng)的選取過程使得修改后的FELICS算法對不同特征的圖像仍然保證了圖像的壓縮效果;限長編碼有效的提高了系統(tǒng)的吞吐率。2)更加適合硬件實現(xiàn),通過合理的劃分流水線,可以獲得更大的系統(tǒng)吞吐量,以滿足更廣泛的應(yīng)用,如全高清視頻應(yīng)用[6]等。3)針對Bayer圖像格式的算法擴展進一步擴展了算法的應(yīng)用范圍。4)在SMIC 0.13 μm工藝條件下,完成了算法的VLSI設(shè)計、FPGA驗證以及功耗分析。系統(tǒng)工作時鐘為25 MHz,圖像數(shù)據(jù)時鐘為24 MHz時,VGA圖像的吞吐率可以達到 60 f/s,功耗為 669 μW,每幀的功耗僅為11.15 μW。
[1]HOWARD P G,VITTER J S.Fast and efficient lossless image compression[C]//IEEE Data Compression Conference.Snowbird,USA,1993:351-360.
[2]IDDAN G,MERON G,GLUKHOVSKY A,et al.Wireless capsule endoscopy[J].Nature,2000,405:417.
[3]GOLOMB S W.Run-Length Encodings[J].IEEE Transactions on Information Theory,1966,12(3):399-401.
[4]WEINBERGER M J,SEROUSSI G,SAPIRO G.The LOCO-I lossless image compression algorithm:principles and standardization into JPEG-LS[J].IEEE Transactions on Image Processing,2000,9(8):1309-1324.
[5]WU X,MEMON N.Context-based,adaptive,lossless image coding [J].IEEE Transactions on Communications,1997,45(4):437-444.
[6]TSAI T H,LEE Y H,LEE Y Y.Design and analysis of high-throughput lossless image compression engine using VLSI-oriented FELICS algorithm[J].IEEE Transactions on Very Large Scale Integration(VLSI)Systems,2010,18(1):39-52.
[7]BAYER B E.Color imaging array:USA,3,971,065[P].1976-5-12.
[8]XU Xinfeng,HEI Yong.A shortcut to compressing Bayerpattern imagery losslessly[C]//IEEE International Congress on Image and Signal Processing.Tianjin,2009:1-4.
[9]CHEN Xinkai,ZHANG Xiaoyu,ZHANG Linwei,et al.A wireless capsule endoscope system with low-power controlling and processing ASIC [J].IEEE Transactions on Biomedical Circuits and Systems,2009,3(1):11-22.
[10]OmniVision Technologies.OV7649/OV7149 CMOS VGA(640 x 480)CAMERACHIPTM[Z].Sunnyvale:OmniVision Technologies,2003:8-9.