李 華
(商洛學(xué)院 電子信息與電氣工程學(xué)院,陜西商洛 726000)
在基于CCD/CMOS圖像探測(cè)器的成像過(guò)程中,曝光控制對(duì)成像質(zhì)量影響很大[1],特別是視場(chǎng)處在背光或者正對(duì)強(qiáng)光時(shí),如果曝光不當(dāng),將會(huì)使成像效果很差,甚至成像失敗。所以,曝光時(shí)間的正確選擇將直接影響到整個(gè)成像系統(tǒng)的成像質(zhì)量。自動(dòng)曝光控制技術(shù)是用來(lái)調(diào)節(jié)CCD/CMOS圖像探測(cè)器中像素單元的曝光時(shí)間和前端模擬電路中數(shù)字可編程增益放大器的增益,從而使圖像亮度達(dá)到目標(biāo)亮度值范圍內(nèi),以符合用戶對(duì)成像質(zhì)量的需求[2]。所以自動(dòng)曝光是電子技術(shù)與人工智能的產(chǎn)物,即不需要外部人為操控,因此,在成像系統(tǒng)中使用的越來(lái)越普遍[3-4]。可見(jiàn),對(duì)自動(dòng)曝光控制算法的研究與設(shè)計(jì)具有重要的理論意義與現(xiàn)實(shí)應(yīng)用價(jià)值。
本文系統(tǒng)以Xilinx公司的FPGA—XC2V3000為主控芯片,實(shí)現(xiàn)了對(duì)CMOS圖像探測(cè)器—LUPA-4000圖像的采集,重點(diǎn)介紹了圖像分塊自動(dòng)曝光算法在FPGA中的實(shí)現(xiàn)。同時(shí)給出了系統(tǒng)的實(shí)際成像效果。
本文設(shè)計(jì)的應(yīng)用于CMOS成像系統(tǒng)的自動(dòng)曝光算法以FPGA為核心[5-7],其作用是用于產(chǎn)生LUPA-4000圖像探測(cè)器的參數(shù)配置時(shí)序和工作驅(qū)動(dòng)時(shí)序信號(hào);同時(shí)運(yùn)行自動(dòng)曝光算法,利用當(dāng)前幀圖像計(jì)算得到曝光參數(shù),作用于下一幀圖像;并適應(yīng)存儲(chǔ)與顯示需要對(duì)輸出圖像進(jìn)行格式重組等。整個(gè)系統(tǒng)充分發(fā)揮了FPGA并行運(yùn)算的優(yōu)勢(shì),有效提高了自動(dòng)曝光控制的實(shí)時(shí)性和精度。本文系統(tǒng)的原理框圖見(jiàn)圖1所示。
圖1 系統(tǒng)原理框圖
系統(tǒng)的具體工作過(guò)程為:FPGA上電穩(wěn)定后根據(jù)默認(rèn)成像環(huán)境參數(shù),首先利用寄存器配置單元通過(guò)SPI配置LUPA-4000探測(cè)器的相關(guān)寄存器,配置結(jié)束后為其提供包括曝光時(shí)間在內(nèi),正常工作所需的時(shí)序信號(hào),由于LUPA-4000探測(cè)器內(nèi)部集成了10位的AD,這時(shí),LUPA-4000就可以輸出10 bit數(shù)字圖像用于后端FPGA處理。由于本文系統(tǒng)圖像幀頻為10 f·s-1,圖像輸出比較慢,因此采用了連續(xù)幀曝光調(diào)節(jié),即當(dāng)?shù)谝粠瑘D像進(jìn)入FPGA時(shí),首先將其送入自動(dòng)曝光算法,通過(guò)圖像分塊、亮度統(tǒng)計(jì)、結(jié)果比對(duì)等操作,輸出新的曝光時(shí)間參數(shù),同時(shí)將參數(shù)輸送給LUPA-4000時(shí)序控制模塊,產(chǎn)生新的時(shí)序信號(hào),并在探測(cè)器工作間隙提供給探測(cè)器,這樣,第二幀圖像就會(huì)按照新的曝光時(shí)間進(jìn)行工作。假如這時(shí)成像環(huán)境發(fā)生變化,第二幀圖像的曝光參數(shù)顯然又不能應(yīng)用到下一幀,所以這時(shí)還要將矯正好曝光時(shí)間的圖像繼續(xù)送給自動(dòng)曝光算法,用于統(tǒng)計(jì)圖像亮度信息,計(jì)算得出新的曝光參數(shù),作用于第三幀圖像的曝光,如此反復(fù)就完成了圖像的自動(dòng)曝光控制。最后再按照存儲(chǔ)與顯示單元對(duì)圖像格式的要求對(duì)輸出的圖像進(jìn)行格式重組,包括圖像信息添加、數(shù)據(jù)填充、并串轉(zhuǎn)換等操作后輸出,完成整個(gè)過(guò)程。
分析圖1所示的系統(tǒng)原理框圖可以看出,整個(gè)成像系統(tǒng)主要由三大功能組成:LUPA-4000時(shí)序設(shè)計(jì)、自動(dòng)曝光算法和圖像格式重組。
LUPA-4000是ONSEMI公司生產(chǎn)的一款CMOS圖像探測(cè)器,有效像素2048×2048,像素大小 12 μm×12 μm,采用改進(jìn)的 6 T 快照式像素結(jié)構(gòu),讀出速度最高達(dá)66 MHz。線性響應(yīng)下的光學(xué)動(dòng)態(tài)范圍為66 dB,如果采用雙線性或者多線性響應(yīng),最高可以達(dá)90 dB[8]。
LUPA-4000時(shí)序由兩部分組成,參數(shù)配置和時(shí)序驅(qū)動(dòng)[9]。其中,參數(shù)配置的寬度為32位,包括Y方向、X方向、開(kāi)窗等8個(gè)功能,采用SPI方式,由 clock_spi,spi_in 和 load_addr完成。而時(shí)序驅(qū)動(dòng)主要由 mem_hl,sample,precharge,reset,norowsel,pre_co,sh_co,vol_average,sync_y,clock_y,sync_x,clock_x等信號(hào)組成,用于完成曝光和讀出等操作。特別強(qiáng)調(diào)的是LUPA-4000的曝光時(shí)間是由reset信號(hào)的作用時(shí)間決定的,其低電平持續(xù)時(shí)間越長(zhǎng),曝光時(shí)間就越長(zhǎng),因此,本文自動(dòng)曝光算法的控制本質(zhì)上是對(duì)reset低電平長(zhǎng)度的控制。
2.2.1 傳統(tǒng)的自動(dòng)曝光算法
傳統(tǒng)的自動(dòng)曝光系統(tǒng)將整幅圖像的亮度均值與預(yù)先設(shè)定的參考值比較進(jìn)行曝光控制。當(dāng)圖像中主要拍攝對(duì)象與背景對(duì)比度較低時(shí),圖像能夠得到較好的重現(xiàn)。然而當(dāng)主要拍攝對(duì)象與背景反差過(guò)大時(shí),圖像中高亮度區(qū)域產(chǎn)生過(guò)飽和,低亮度區(qū)域顯得黑暗,從而導(dǎo)致圖像中主要拍攝對(duì)象的過(guò)曝或欠曝。而目前很多自動(dòng)曝光算法是將圖像分為若干塊,按照塊之間的亮度對(duì)應(yīng)關(guān)系判斷背光或者正面強(qiáng)光場(chǎng)景,并對(duì)不同的塊分配不同的權(quán)重。根據(jù)加權(quán)像元灰度值來(lái)改變曝光時(shí)間。圖2所示為文獻(xiàn)[10]給出的一種常用的自動(dòng)曝光算法中的圖像分割方法,將一幀圖像分為5塊,在大多數(shù)情況下,背景處于圖像的上半部分,主體被攝物處于中下位置。根據(jù)亮度不同對(duì)背景及主體物附加不同比重的加權(quán)值,這樣它們之間的亮度差就得到了補(bǔ)償。
圖2 傳統(tǒng)自動(dòng)曝光算法圖像分塊原理
2.2.2 本文改進(jìn)算法原理
針對(duì)傳統(tǒng)自動(dòng)曝光算法的不足,本文在文獻(xiàn)[10]思想的基礎(chǔ)上結(jié)合實(shí)際項(xiàng)目成像要求對(duì)自動(dòng)曝光算法進(jìn)行了改進(jìn),主要是增加了圖像塊數(shù)目的劃分,同時(shí)增加了中心感興趣區(qū)域的權(quán)重,本文算法圖像塊的劃分和權(quán)重分配如圖3所示。這樣,即使感興趣區(qū)域以外處于背光或正對(duì)光也不會(huì)對(duì)整體成像效果產(chǎn)生太大的影響。
圖3 本文自動(dòng)曝光算法圖像分塊原理圖
本文自動(dòng)曝光算法具體設(shè)計(jì)方面主要是通過(guò)調(diào)整低電平持續(xù)時(shí)間來(lái)調(diào)整曝光時(shí)間,調(diào)整范圍分為0-511檔,每檔步距為20 μs。曝光時(shí)間和曝光檔位的關(guān)系是:曝光時(shí)間=曝光檔位 *20 μs+10 μs,曝光檔位范圍為[0,511]。
考慮到圖像的像元灰度值與曝光時(shí)間在圖像探測(cè)器的未飽和區(qū)域符合線性關(guān)系,因此根據(jù)當(dāng)前幀圖像的曝光檔位told、灰度均值DNold以及設(shè)定的下一幀圖像的期望灰度值DNnew,就可以計(jì)算出下一幀圖像的曝光檔位tnew,計(jì)算過(guò)程如式(1)所示:
其中:told表示當(dāng)前幀圖像曝光時(shí)間檔;DNold表示當(dāng)前幀圖像的灰度加權(quán)值;tnew表示下一幀圖像曝光時(shí)間檔;DNnew表示下一幀圖像的灰度加權(quán)值。
當(dāng)系統(tǒng)加電正常工作時(shí),由于是按照默認(rèn)曝光時(shí)間注入的參數(shù),因此探測(cè)器輸出的圖像是默認(rèn)曝光時(shí)間,即當(dāng)前幀圖像曝光檔位told是已知的,這時(shí)將該幀圖像進(jìn)行像元灰度值的加權(quán)統(tǒng)計(jì)得到DNold??紤]到現(xiàn)實(shí)中一幅圖像的亮度并非一定要達(dá)到一個(gè)絕對(duì)的理想值時(shí)圖像亮度才算是合理的,在理想亮度周?chē)晕⒂行┢畈⒉粫?huì)對(duì)圖像的質(zhì)量造成很大影響,因此定義圖像期望亮度不是某一個(gè)定值,而是為某一個(gè)區(qū)間,本文設(shè)定的圖像期望灰度均值為[550,650],即DNold也是已知的。因此,利用公式(1)可以求出下一幀圖像曝光檔位tnew,再將其通過(guò)LUPA-4000時(shí)序控制單元注入探測(cè)器,完成自動(dòng)曝光。
2.2.3 改進(jìn)算法的FPGA硬件實(shí)現(xiàn)
由于FPGA邏輯單元豐富、并行運(yùn)算能力強(qiáng)大、購(gòu)買(mǎi)渠道暢通,且高等級(jí)產(chǎn)品(宇航級(jí)等)比較多,考慮到算法的應(yīng)用范圍,本文系統(tǒng)使用了FPGA作為算法硬件實(shí)現(xiàn)平臺(tái)。
本文算法基于FPGA的硬件實(shí)現(xiàn)過(guò)程為:當(dāng)LUPA-4000圖像探測(cè)器正常工作,輸出第一幀圖像進(jìn)入FPGA時(shí),首先根據(jù)感興趣區(qū)域的大小,定義了9個(gè)圖像塊的寬度和高度。然后再定義9個(gè)寄存器,用于存放分塊圖像中各個(gè)圖像塊包含像元的和 (寄存器可根據(jù)分塊圖像的大小設(shè)置成不同的位寬),這樣,就可以計(jì)算每個(gè)圖像塊的像元和了。具體操作過(guò)程以左上角第一個(gè)圖像塊為例進(jìn)行說(shuō)明,當(dāng)FPGA捕獲到第一個(gè)行有效的上升沿時(shí),開(kāi)始將像元逐個(gè)累加至第一個(gè)數(shù)據(jù)寄存器,當(dāng)?shù)谝恍欣奂拥降谝粋€(gè)圖像塊的寬度時(shí),停止操作,等待第二行圖像的到來(lái)繼續(xù)進(jìn)行累加操作,如此重復(fù),直到第一個(gè)圖像塊的高度時(shí)結(jié)束累加,第一個(gè)圖像塊的像元累加結(jié)束,再將求和結(jié)果求平均,因?yàn)樵诜謮K時(shí)盡量將圖像塊取成2的指數(shù)倍,例如:256、512等,因此,在求平均時(shí)僅用移位寄存器即可完成,因此,計(jì)算量很小。其它圖像塊的計(jì)算與第一個(gè)圖像塊的計(jì)算大同小異,這樣,在一幀圖像結(jié)束時(shí)就可以求出各個(gè)圖像塊的加權(quán)DN值,然后根據(jù)權(quán)重求出一幀圖像的平均DN值,這時(shí)只要應(yīng)用式(1)就可以得到新的曝光時(shí)間參數(shù),從而完成自動(dòng)曝光控制。
從以上分析可以看出,整個(gè)過(guò)程僅有一次除法,其它計(jì)算均由加法和移位操作組成,因此,整個(gè)算法占用的硬件資源很少,同時(shí)可以做到實(shí)時(shí)處理。
圖像重組功能主要是按照存儲(chǔ)與顯示單元的要求對(duì)來(lái)自探測(cè)器的圖像進(jìn)行格式的重組,主要是添加幀頭信息、填充數(shù)據(jù)等,然后進(jìn)行組幀,并串轉(zhuǎn)換后輸出給存儲(chǔ)與顯示單元。幀頭信息包括圖像拍攝的時(shí)間、曝光時(shí)間、增益等,填充數(shù)據(jù)主要是將圖像數(shù)據(jù)包填滿,以固定長(zhǎng)的數(shù)據(jù)包傳輸。并串轉(zhuǎn)換則主要為了簡(jiǎn)化數(shù)據(jù)傳輸寬度,減少誤碼率。
幀頭信息的添加在FPGA內(nèi)的實(shí)現(xiàn)主要是先在FPGA內(nèi)開(kāi)辟一小塊存儲(chǔ)區(qū)(一般為若干行圖像的寬度)將圖像暫時(shí)緩存,待信息添加完畢,再傳輸圖像,從而完成幀頭的添加。并串轉(zhuǎn)換也是在FPGA內(nèi)完成,主要的原理是設(shè)計(jì)一個(gè)控制過(guò)程,判斷一個(gè)數(shù)據(jù)的10位轉(zhuǎn)換是否完成,如果完成,將下一個(gè)轉(zhuǎn)換數(shù)據(jù)進(jìn)行轉(zhuǎn)換,如果沒(méi)有完成,可將下一個(gè)輸入數(shù)據(jù)進(jìn)行存儲(chǔ),當(dāng)前轉(zhuǎn)換完成后再進(jìn)行轉(zhuǎn)換。
算法硬件設(shè)計(jì)好后結(jié)合光機(jī)系統(tǒng)進(jìn)行了成像試驗(yàn),圖4所示為應(yīng)用文獻(xiàn)[10]思想設(shè)計(jì)的算法得到的圖像,由于過(guò)于強(qiáng)調(diào)下半部分,所以中心感興趣區(qū)域曝光不足;而圖5是本文算法拍攝的圖像,可以看出,雖然圖像的上下部位光線比較強(qiáng),但是,拍攝到的圖像依然能將中心感興趣區(qū)域景物清晰的展現(xiàn)出來(lái),證明了本文算法的可行性與正確性。
圖4 傳統(tǒng)算法圖像
圖5 本文算法圖像
本文利用圖像分塊與權(quán)重分配原理,設(shè)計(jì)了一種易于FPGA硬件實(shí)現(xiàn)的改進(jìn)自動(dòng)曝光算法,并將其應(yīng)用到了實(shí)際成像系統(tǒng)中,取得了較好的效果。本文算法設(shè)計(jì)靈活,可以根據(jù)實(shí)際成像環(huán)境對(duì)圖像分塊大小和權(quán)重大小進(jìn)行更改;另一方面,本文算法硬件設(shè)計(jì)簡(jiǎn)單,沒(méi)有使用復(fù)雜的IP核,方便移植,適合各種以FPGA作為邏輯控制單元的成像系統(tǒng),因此,具有較好的通用性。
[1]陳繞青,曹 國(guó),毛志紅.一種空間面陣CCD成像的曝光時(shí)間計(jì)算方法[J].計(jì)算機(jī)工程,2012,38(12):1-4.
[2]戈志偉,姚素英,徐江濤,等.一種應(yīng)用于CMOS圖像傳感器的快速自動(dòng)曝光控制方法[J].天津大學(xué)學(xué)報(bào),2010,43(10):854-859.
[3]Kuno T,Sugiura H,MatobaN.A new automatic exposure system for digital still cameras[J].IEEE Transactions on Consumer Electronics,1998,44(1):192-199.
[4]Cho M H,Lee S G,Nam B D.The fast auto exposure algorithm based on the numerical analysis[C]//SPIE conference on sensors,cameras,and applications for digital photography.San Jose,1999:120-128.
[5]邸麗霞,張彥軍,洪應(yīng)平.基于FPGA的高速圖像數(shù)據(jù)采集存儲(chǔ)系統(tǒng)設(shè)計(jì)[J].電視技術(shù),2013,37(13):49-52.
[6]李 華.基于SDRAM的Bayer格式圖像插值算法硬件設(shè)計(jì)[J].電視技術(shù),2013,37(5):49-51.
[7]楊光宏,高 偉,黎向陽(yáng),等.利用FPGA實(shí)現(xiàn)TDICCD自動(dòng)曝光控制[J].科學(xué)計(jì)算與工程,2007,7(16):4179-4182.
[8]LUPA-4000 Datasheet[DB/OL].http://www.onsemi.cn.
[9]陳 彥,張宏偉,林宏宇.基于FPGA的CMOS圖像傳感器LUPA-4000時(shí)序設(shè)計(jì)[J].航天器返回與遙感,2012,33(5):62-67.
[10]甘玉泉,高 偉.一種基于圖像分區(qū)的自動(dòng)曝光算法[J].微計(jì)算機(jī)信息,2009,25(3/4):303-305.