李 華,朱 波
(1.商洛學(xué)院,陜西 商洛726000;2.中國科學(xué)院 西安光學(xué)精密機械研究所,陜西 西安710119;3.西安交通大學(xué)-西安光學(xué)精密機械研究所 空間視覺聯(lián)合實驗室,陜西 西安710049)
為了讓CCD/CMOS圖像探測器采集到景物的全彩色圖像,通常的方法是使用3片探測器結(jié)合分光棱鏡的方法。但是,出于系統(tǒng)體積、重量和維護難易程度等因素的考慮,實際應(yīng)用往往使用一片圖像探測器,但是在探測器前覆一層膜(CFA),例如應(yīng)用最為廣泛的Bayer格式[1]。再結(jié)合去馬賽克算法就可以得到全彩色圖像,顯然,算法的優(yōu)劣對彩色圖像的質(zhì)量將起到舉足輕重的作用。目前去馬賽克算法的研究現(xiàn)狀可歸納為兩點,易于FPGA 等硬件實現(xiàn)的各種線性算法基本上插值效果都不能令人滿意[2-4];而插值性能優(yōu)良的非線性算法,其實現(xiàn)難度卻都比較復(fù)雜,大部分還停留在理論研究或計算機仿真的層面[5-9],不能或不易FPGA 硬件實現(xiàn)。而另一方面,隨著探測器分辨率越來越高、幀頻越來越快,圖像的傳輸已經(jīng)成為了制約圖像應(yīng)用的瓶頸,特別是遠(yuǎn)程傳輸應(yīng)用,因此,基于GigE 的圖像傳輸已經(jīng)成為未來數(shù)字相機系統(tǒng)的趨勢。好的算法與設(shè)計只有運行在合適的硬件平臺才能發(fā)揮其長處,F(xiàn)PGA 憑借其并行運算優(yōu)勢,有較多高等級的產(chǎn)品(比如宇航級芯片)可供選擇,使其在圖像處理領(lǐng)域[10-11],特別是空天應(yīng)用的圖像處理領(lǐng)域受到越來越多的重視。本文正是在這種大背景下,依托某預(yù)研課題研究并設(shè)計了一套基于FPGA 的全彩色實時圖像采集系統(tǒng),取得了較好的效果。
本文彩色圖像采集系統(tǒng)的原理框圖如圖1所示。采用的CMOS 圖像探測器是美光公司的MT9M011,F(xiàn)PGA 使 用 的 是Xilinx 公 司 的Virtex-4,型號為XC4VSX55,PHY 芯片則是MARVELL公司的MX88E1111。

圖1 基于FPGA 的系統(tǒng)原理框圖Fig.1 Block diagram of FPGA-based system
系統(tǒng)的工作過程為:當(dāng)系統(tǒng)上電穩(wěn)定后,首先通過FPGA 對MT9M011 圖像探測器的寄存器進行配置,使其正常工作并輸出Bayer格式圖像,然后將Bayer格式圖像順序送入FPGA,先對其進行8bit量化,然后進行去馬賽克等彩色相關(guān)處理,最后經(jīng)過GigE 接口將彩色圖像輸出,整個處理過程以流水線的形式進行,做到了圖像的實時處理與輸出。下面將結(jié)合圖1詳細(xì)介紹各個功能模塊的設(shè)計原理與硬件實現(xiàn)過程。
MT9M011是美光公司的一款基于Bayer格式的彩色CMOS圖像探測器,其設(shè)計簡單、性能穩(wěn)定,因此,被廣泛用于需要彩色成像的系統(tǒng)。
與其他公司的CMOS探測器相比,該探測器時序相對比較簡單,僅僅通過類似于I2C 傳輸協(xié)議的串行線完成對特定寄存器的配置,就可使其正常工作[12],需要配置的主要寄存器包括:改變輸出圖像分辨率的R03與R04,調(diào)節(jié)幀頻的R05及改變曝光時間的R09 等。本文根據(jù)實際應(yīng)用需要,將探測器工作狀態(tài)設(shè)置在分辨率為1 280×1 024、幀頻為15f/s的模式下,其中,曝光時間通過RS422 總線,根據(jù)外部成像條件實時進行修改。圖2所示為寫05號寄存器為0x110,設(shè)置幀頻為15f/s的Modelsim 仿真波形,其他寄存器設(shè)置與此類似。當(dāng)設(shè)置完寄存器,探測器就開始輸出圖像了。需要指出的是,為了保證探測器的輸出穩(wěn)定性與可靠性,本設(shè)計還在每幀圖像的幀逆程期間都對相應(yīng)的寄存器進行一次配置。

圖2 寫寄存器仿真波形Fig.2 Simulation of register writing timing
通常,自然界圖像的能量譜主要集中在低頻區(qū)域[6],即沿著給定像素的水平和垂直軸線分布,因此,本文去馬賽克算法的插值過程主要是基于水平和垂直方向進行。文獻[13]算法結(jié)合以上特點,取得了較好的彩色恢復(fù)效果。因此,本文在文獻[13]的基礎(chǔ)上對算法進行了進一步的簡化和改進,在基本不降低彩色恢復(fù)效果的前提下大大節(jié)約了硬件資源。下面將結(jié)合圖3所示的Bayer格式圖像對算法進行詳細(xì)說明。

圖3 Bayer格式圖像Fig.3 Bayer image
2.2.1 綠色分量恢復(fù)過程
紅色通道和藍色通道均存在缺失綠色分量,考慮到Bayer格式的對稱性,此處僅以計算紅色通道缺失的綠色分量為例進行介紹。首先,應(yīng)用二階拉普拉斯修正網(wǎng)絡(luò)如圖3所示。以R0為中心的5×5Bayer格式圖像,插值得到處水平方向綠色分量和垂直方向綠色分量,如式(1)和式(2)所示:

將整幅Bayer圖像的紅色通道應(yīng)用式(1)和式(2),得到圖像中所有紅色通道缺失的水平和垂直綠色分量。
這時,我們依據(jù)色差梯度來選擇綠色分量,因為梯度大的方向色差值變化劇烈,不易估計,因此,我們?nèi)√荻戎敌〉淖鳛椴逯到Y(jié)果。首先構(gòu)造式(3)和式(4)所示的色差表達式:

其中:i,j表示每個像素的行列號,假設(shè)圖像的分辨率為M×N,則1≤i≤M,1≤j≤N。再構(gòu)造色差的梯度表達式如式(5)所示:

得到色差梯度以后,我們構(gòu)造一個5×5的窗口來統(tǒng)計窗口內(nèi)的梯度值,取SH(i,j)和SV(i,j)為窗口內(nèi)水平和垂直方向梯度值之和。通過比較計算,當(dāng)SV(i,j)<SH(i,j)時,=,反 之,=,完成整幅圖像中綠色分量的估計。
2.2.2 紅色(藍色)通道的藍色(紅色)恢復(fù)
當(dāng)整幅圖像的綠色分量得到后,我們?nèi)匀挥蒙钐荻确▉砉烙嬋笔У募t、藍分量。對紅色通道處缺失藍色分量的估計,以圖3中的R0為例,其四周的藍綠色差共有4個,分別為:


式(7)即紅色通道處缺失的藍色分量。根據(jù)Bayer格式圖像對稱的特點,同樣的方法可求得藍色通道處丟失的紅色分量。
2.2.3 綠色通道的藍色(紅色)恢復(fù)
綠色通道缺失的藍色分量和紅色分量的計算方法和2.2.2節(jié)的計算類似,只是Bayer格式圖像中綠色分量是紅、藍分量的兩倍,因此要進行兩次計算。
2.2.4 后續(xù)處理
經(jīng)過2.2.1~2.2.3節(jié)的計算,得到了整幅圖像中每個像素處的R,G,B 分量。但是,為了進一步降低偽彩色,我們構(gòu)造了低通濾波器來保留低頻成份。本文從恢復(fù)效果和硬件資源占用角度出發(fā),構(gòu)造了3×3的二維低通濾波器用于后續(xù)改善處理[13-14],如式(8)所示:

分別應(yīng)用式(8)對每個通道缺失的另外兩種分量進行改善[13],從而完成整幅圖像最終的彩色恢復(fù)。
2.2.5 算法效果評價
選取了比較典型的3種彩色恢復(fù)算法和本文算法進行去馬賽克效果的比較,樣本選擇Kodak標(biāo)準(zhǔn)圖像庫里的8幅經(jīng)典圖像,如圖4所示。首先對圖4的8幅圖像進行Bayer格式退化,然后應(yīng)用算法進行彩色恢復(fù)。為了便于對算法的效果進行說明,采用了PSNR 和目視兩個指標(biāo)對彩色恢復(fù)效果進行評價。

圖4 從Kodak圖庫中提取的試驗圖像Fig.4 Test images from Kodak
圖5所示為本文算法和其他幾種算法恢復(fù)結(jié)果的目視效果,表1所示為幾種算法恢復(fù)結(jié)果的PSNR 統(tǒng)計。很顯然,本文算法的整體性能大大優(yōu)于其他幾種算法。但是,因為本文算法是對文獻[13]算法簡化改進得到的,所以彩色恢復(fù)效果稍差于文獻[13],以圖4(e)為例,PSNR 僅相差0.1dB,基本上性能一致,但是,硬件資源卻比文獻[13]算法節(jié)約了20%。

圖5 幾種算法對圖5(b)的恢復(fù)效果比較.(a)原圖;(b)Bayer格式圖像;(c)雙線性插值結(jié)果;(d)文獻[3]恢復(fù)結(jié)果;(e)文獻[7]恢復(fù)結(jié)果;(f)本文算法恢復(fù)結(jié)果Fig.5 Interpolation results of different demosaicking methods.(a)Origin image;(b)Bayer image;(c)BI;(d)Reference[3];(e)Reference[7];(f)Proposed

表1 幾種算法恢復(fù)結(jié)果的PSNR 數(shù)值統(tǒng)計Tab.1 PSNR performance comparison of different demosaicking methods (dB)
2.2.6 算法FPGA 硬件實現(xiàn)
分析本文算法可知,計算方面僅由加法、移位和比較等操作構(gòu)成,和線性圖像處理方法在硬件實現(xiàn),特別是FPGA 實現(xiàn)上難度相當(dāng),能夠做到硬件實時處理。
由于算法各主要步驟都是在數(shù)據(jù)窗口進行,所以,本文在FPGA 內(nèi)部通過BlockRAM 構(gòu)造了圖6形式的圖像行緩存,每個行緩存的深度為圖像的一行,Rxx為D 觸發(fā)器,構(gòu)成像素緩存。這樣,就構(gòu)成圖像流水線窗口,同時對5行圖像數(shù)據(jù)進行各種計算與處理。

圖6 彩色插值算法硬件實現(xiàn)過程Fig.6 Process of FPGA implemented demosaicking method
從Bayer格式圖像進入FPGA 到彩色圖像輸出,本文算法共需要緩存約12行圖像,因為像素時鐘是25MHz,所以,延時僅有(1 280+396)×12×40ns≈0.8ms(其中,396是圖像行逆程占用的像元數(shù)),基本滿足實時處理的需要。
GigE因其傳輸速率快、誤碼率小且成本低廉,已經(jīng)廣泛應(yīng)用于各大公司數(shù)字相機的數(shù)據(jù)傳輸,因此,本系統(tǒng)設(shè)計了基于FPGA 的GigE 數(shù)據(jù)傳輸機制。
2.3.1 GigE傳輸方案的可行性分析
由于本文系統(tǒng)采集的是全彩色圖像,即每一像素的色深是24bits,而探測器輸出圖像的分辨率為1 280×1 024,幀頻為15f/s,這樣,1s內(nèi)傳輸?shù)膱D像數(shù)據(jù)為:

相應(yīng)的圖像傳輸帶寬就是0.472Gbit/s,由于本課題對圖像質(zhì)量的苛刻要求,所以,不能對圖像進行壓縮,這就給傳輸帶來了較大的挑戰(zhàn)。
根據(jù)應(yīng)用需要,本系統(tǒng)GigE 要同時給數(shù)個子系統(tǒng)輸出彩色圖像,即一對多的廣播方式,因此只能采用UDP協(xié)議,這也是目前大部分GigE 相機使用的協(xié)議,傳輸機制則使用單工通訊。按照UDP協(xié)議規(guī)定,一包數(shù)據(jù)的結(jié)構(gòu)分為包頭+數(shù)據(jù)+幀間隙,其中,包頭由源MAC、目標(biāo)MAC、源IP、目標(biāo)IP 等42Bytes固定數(shù)據(jù)組成。有效數(shù)據(jù)的長度為46Bytes~1 500Bytes,由于系統(tǒng)傳輸?shù)氖侨噬珗D像,每個像素由3Bytes組成,因此,本文將一包數(shù)據(jù)的長度設(shè)定為320個像元,剛好是一行圖像長度的1/4,轉(zhuǎn)化到UDP包格式數(shù)據(jù)的長度即320×3=960Bytes,滿足UDP 數(shù)據(jù)格式要求。除了包頭和數(shù)據(jù),數(shù)據(jù)幀之間的間隙也是有嚴(yán)格要求的,IEEE802.3標(biāo)準(zhǔn)規(guī)定最少要保證12Bytes,這樣,本文千兆以太網(wǎng)的理想傳輸效率為:

相應(yīng)的理想帶寬為0.947Gbit/s,對比式(9)可知完全滿足本文全彩色圖像傳輸?shù)男枰粫斐蓴?shù)據(jù)的丟失。
2.3.2 GigE傳輸方案的具體設(shè)計
我們知道,為了方便采集,圖像探測器是以固定格式輸出的,幀有效結(jié)合行有效作為圖像有效的標(biāo)志,圖像數(shù)據(jù)以行為單位,連續(xù)輸出。而基于千兆以太網(wǎng)的數(shù)據(jù)傳輸則僅以數(shù)據(jù)包為單位進行傳輸,每包的有效數(shù)據(jù)長度為320個彩色像元,這樣,圖像的接收者就無法辨識圖像的開始與結(jié)束,這給實際應(yīng)用將帶來很大麻煩,為了解決這個問題,本文在設(shè)計上采取了添加幀頭的方式,具體做法是,當(dāng)圖像的幀有效來臨時,首先將圖像在FPGA 內(nèi)部進行緩存,同時FPGA 內(nèi)部生成一個數(shù)據(jù)長度為100Bytes的幀頭包,用于存儲拍攝時間、曝光時間等圖像信息,同時,也起到了區(qū)別兩幀圖像的目的。
由于圖像的像元時鐘為25 MHz,而GigE 使用的是125 MHz的時鐘,所以,怎么安排圖像組包也是基于GigE 傳輸要重點考慮的問題,本文設(shè)計采用了如下策略:系統(tǒng)首先發(fā)送100Bytes的幀頭包,當(dāng)發(fā)現(xiàn)圖像行有效的下降沿時開始從緩存FIFO 中讀取數(shù)據(jù)組成GigE數(shù)據(jù)包,而且連續(xù)發(fā)送4包,剛好完成一行圖像的發(fā)送,然后再等待下一個行有效的下降沿,如此反復(fù)就完成了圖像連續(xù)、無誤的傳輸,傳輸一行圖像GigE 消耗的時間為:

而圖像探測器輸出一行圖像的總時間為:

所以,一行圖像時間內(nèi)可以完成4包數(shù)據(jù)的發(fā)送。值得一提的是,42Bytes包頭數(shù)據(jù)里面第19和20 兩Bytes用于設(shè)置包標(biāo)識,本設(shè)計通過FPGA 發(fā)送連續(xù)的計數(shù)達到統(tǒng)計丟包數(shù)的目的,防止誤碼的發(fā)生。
由于以太網(wǎng)只對應(yīng)網(wǎng)絡(luò)體系的數(shù)據(jù)鏈路層和物理層,所以本文FPGA 完成的是MAC層開發(fā),控制幀的生成,數(shù)據(jù)在FPGA 內(nèi)按照GigE格式輸出給PHY芯片MX88E1111,將MAC層數(shù)據(jù)轉(zhuǎn)換為可以在物理鏈路上傳播的格式連接到RJ-45接口,輸出給遠(yuǎn)端存儲與顯示單元,用于后端應(yīng)用。
按照第2節(jié)的設(shè)計思路,對相機系統(tǒng)進行了詳細(xì)設(shè)計,并結(jié)合光機系統(tǒng)進行了實際成像試驗。在分辨率為1 280×1 024,幀頻為15f/s,20 ms曝光時的成像效果如圖7所示,其中,圖7(a)為Sniffer軟件捕獲的100Bytes長度圖像幀頭包信息,圖7(b)為實際得到的全彩色圖像,可以看出,圖像色彩逼真、細(xì)節(jié)豐富,偽彩色得到了有效抑制,和理論成像結(jié)論一致,充分證明了設(shè)計的可行性。
由于UDP只是一個簡單的面向數(shù)據(jù)色的運輸層協(xié)議,和所有使用UDP 協(xié)議作為傳輸機制的系統(tǒng)一樣,本文系統(tǒng)也存在丟包與誤碼的問題,經(jīng)過詳細(xì)試驗測試,丟包率在1%以內(nèi),可以滿足用戶的實際要求,下一步,將嘗試點對點的TCP/IP協(xié)議,以盡量杜絕丟包現(xiàn)象。

圖7 實際成像效果Fig.7 Real imaging
根據(jù)彩色圖像采集系統(tǒng)的發(fā)展趨勢,結(jié)合實際預(yù)研課題,研究并設(shè)計了一套基于FPGA 硬件實現(xiàn)的彩色圖像實時采集系統(tǒng)。巧妙地運用梯度和色差關(guān)系改進了Bayer格式圖像的插值效果,降低了插值算法硬件實現(xiàn)的難度,并結(jié)合GigE數(shù)據(jù)傳輸接口,大大提高了數(shù)據(jù)傳輸能力。實驗結(jié)果表明,相比其他彩色圖像采集系統(tǒng),本系統(tǒng)獲取的彩色圖像在PSNR 和目視方面,性能均有大幅度的提升,而整個系統(tǒng)的開發(fā)難度卻僅和線性算法相當(dāng)。目前,該系統(tǒng)工作正常,其優(yōu)良的性能得到了用戶的好評。值得一提的是,該系統(tǒng)可擴展性強,只要根據(jù)需要更換不同型號的彩色圖像探測器,稍微修改一下FPGA 管腳分配等參數(shù)就可以用于其他成像系統(tǒng),因此,具有廣闊的應(yīng)用空間。
[1] Bayer B E.Color imaging array:US Patent,3 971 065[P].1975-03-05.
[2] 王暕來,楊春玲.基于最大類間方差法的圖像分割系統(tǒng)的設(shè)計與實現(xiàn)[EB/OL].http:∥www.altera.com.cn/education/univ/local/events/articles/july08-3.pdf.Wang J L,Yang C L.Implementation of image segmentation system based on Otsu method[EB/OL].http:∥www.altera.com.cn/education/univ/local/events/articles/july08-3.pdf.
[3] Henrique S M,He L W,Ross C.High-quality linear interpolation for demosaicing of bayer-patterned color images[C].IEEE International Conference on Acoustics,Quebec,Canada:Speech and Signal Processing:2004:485-488.
[4] Adams J E,Hamilton J F.Adaptive color plane interpolation in single color electronic camera:US Patent,5 506 619[P].1996-04-14.
[5] Zhang L,Wu X L.Color demosaicking via directional linear minimum mean square-error estimation[J].IEEE Transactions on Image Processing,2005,14(12):2167-2178.
[6] Zhang L,Wu X L,Antoni B,et al.Color demosaicking by local directional interpolation and nonlocal adaptive thresholding[J].Journal of Electronic Imaging,2011,20(2):203016(1-16).
[7] Daniele M,Stefano A,Giancarlo C.Demosaicing with directional filtering and a posteriori decision[J].IEEE Transactions on Image Processing,2007,16(1):132-141.
[8] Zhang L,Dong W S,Wu X L,et al.Spatial-temporal color video reconstruction from noisy CFA sequence[J].IEEE Transactions on Circuits and Systems for Video Technology,2010,20(6):838-847.
[9] 朱波,汶德勝,王飛,等.應(yīng)用字典學(xué)習(xí)算法改善Bayer格式圖像彩色恢復(fù)效果[J].電子與信息學(xué)報,2013,35(4):8-16.Zhu B,Wen D S,Wang F,et al.Improvement of Bayer-pattern demosaicking with dictionary learning algorithm[J].Jounal of Electronics &Information Technology,2013,35(4):8-16.(in Chinese)
[10] 張傳勝.基于SOPC的通用液晶屏人機交互系統(tǒng)GUI的設(shè)計[J].液晶與顯示,2013,28(2):250-254.Zhang C S.Design of man-machine interaction systems based on LCD screen of SOPC [J].Chinese Journal of Liquid Crystals and Displays,2013,28(2):250-254.(in Chinese)
[11] 王靜軒,尹傳歷.基于DSP和FPGA 的嵌入式實時圖像增強系統(tǒng)[J].液晶與顯示,2013,28(3):459-463.Wang J X,Yin C L.Embedded color image enhancement system based on DSP and FPGA[J].Chinese Journal of Liquid Crystals and Displays,2013,28(3):459-463.(in Chinese)
[12] Micron Inc.MT9M011datasheet[OL].[2004-01-05].http:∥www.ic5.cn/p_MT9M011_nzw.html.
[13] 朱波,汶德勝,王飛.改進的Bayer插值算法及其硬件實現(xiàn)[J].光電子激光,2013,24(6):1211-1218.Zhu B,Wen D S,Wang F.Improved bayer-pattern demosaicking and its hardware design[J].Journal of Optoelectronics·Laser,2012,24(6):1211-1218.(in Chinese)
[14] Kolta R W B,Aly H A,F(xiàn)akhr W.A hybrid demosaicking algorithm using frequency domain and wavelet methods[C]∥International Conference on Image Information Processing,2011:1-6.