王超,甄國(guó)涌,單彥虎
(中北大學(xué)電子測(cè)試技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,山西太原 030051)
經(jīng)濟(jì)社會(huì)的發(fā)展促進(jìn)圖像采集設(shè)備已經(jīng)從民用發(fā)展至工業(yè),并對(duì)其圖像采集質(zhì)量以及處理速度提出更高要求[1]。長(zhǎng)時(shí)間、高負(fù)荷、多設(shè)備、封閉環(huán)境造成的工作環(huán)境溫度過(guò)高已經(jīng)成為影響圖像采集設(shè)備穩(wěn)定的關(guān)鍵因素[2]。暗電流作為光電轉(zhuǎn)換元件的重要性能參數(shù),溫度引發(fā)熱生載流子運(yùn)動(dòng)增大暗電流,影響著圖像傳感器采集的圖像質(zhì)量[3]。
在溫度影響下的圖像傳感器采集到的圖像動(dòng)態(tài)范圍縮小、對(duì)比度降低、亮度變暗。目前針對(duì)溫度造成的圖像質(zhì)量問(wèn)題大致可以分為間接校正和直接補(bǔ)償兩種。間接校正使用圖像增強(qiáng)等方法進(jìn)行圖像質(zhì)量的增強(qiáng)[4],其對(duì)單幅圖像有著很好的增強(qiáng)效果,但對(duì)于圖像數(shù)據(jù)流,實(shí)時(shí)溫度和光照等因素使其增強(qiáng)效果有所下降。直接補(bǔ)償分為物理補(bǔ)償以及電路和工藝補(bǔ)償。物理補(bǔ)償通過(guò)增加散熱,但因圖像采集設(shè)備較小而不被適用。電路和工藝補(bǔ)償通過(guò)對(duì)圖像傳感器電路的改進(jìn)和像素陣元中離子濃度的參雜程度降低溫度對(duì)暗電流的影響[5-6],但其對(duì)于用戶(hù)來(lái)說(shuō)實(shí)現(xiàn)困難。
因此針對(duì)圖像傳感器性能受溫度的影響,提出一種基于FPGA 的圖像傳感器溫漂自補(bǔ)償方法。通過(guò)間接校正和直接補(bǔ)償?shù)慕Y(jié)合,對(duì)溫度差值補(bǔ)償后的像素點(diǎn)進(jìn)行直方圖增強(qiáng),并且運(yùn)用FPGA 并行度高、運(yùn)行速度快的優(yōu)點(diǎn),由程序自動(dòng)完成。
溫度與暗電流成正相關(guān)關(guān)系,暗電流與像素值的大小成正相關(guān)關(guān)系,即溫度與像素值成正相關(guān)[7]。假設(shè)在沒(méi)有溫度影響的情況下,CMOS 輸出像素等于原始像素,在溫度影響的情況下,CMOS 輸出像素由圖像對(duì)應(yīng)位置像素值和其溫漂值疊加而成,則要校正受溫度影響的像素,就應(yīng)使圖像傳感器輸出圖像像素值減去對(duì)應(yīng)位置溫漂值,即:

其中,I(x,y)為假設(shè)(x,y)像素點(diǎn)原始像素值,T(x,y)為(x,y)點(diǎn)隨著溫度升高而上升的像素溫漂值,P(x,y)為(x,y)點(diǎn)圖像傳感器輸出像素值,Q(x,y)為(x,y)點(diǎn)經(jīng)過(guò)處理后的像素值。
CMOS 圖像傳感器不同像元灰度輸出值,可能具有隨機(jī)性和偶然性,但是其在暗電流的作用下呈高斯分布[8]。近似溫漂值為原始圖像在溫度影響下的像素上升平均值,盡可能保留原始像素信息,即:

其中,Tc表示原始圖像在溫度影響下的像素上升平均值即溫漂系數(shù),O(x,y)為(x,y)點(diǎn)溫漂消除后像素值。
經(jīng)過(guò)差值補(bǔ)償?shù)膱D像損失一定的動(dòng)態(tài)范圍,為最大限度還原像素灰度信息,進(jìn)行直方圖動(dòng)態(tài)范圍調(diào)整成為必不可少的關(guān)鍵步驟。
線性壓縮以像素點(diǎn)為基本單位,以灰度像素值映射的方式來(lái)進(jìn)行實(shí)現(xiàn)[9]。FPGA 實(shí)時(shí)流水線處理是高速圖像增強(qiáng)的一個(gè)重要手段。原始像素點(diǎn)以關(guān)系T進(jìn)行相應(yīng)的變換,此方法的關(guān)鍵之處在于轉(zhuǎn)換函數(shù)T的選擇,輸入圖像和輸出圖像應(yīng)當(dāng)滿(mǎn)足:

其中,P(x,y)為原始像素點(diǎn),T為壓縮映射函數(shù),g(x,y)為增強(qiáng)后的像素值。
文中選用的方法為線性自適應(yīng)直方圖增強(qiáng),對(duì)像素動(dòng)態(tài)范圍進(jìn)行映射,使像素灰度值動(dòng)態(tài)范圍進(jìn)行還原。最大值為動(dòng)態(tài)范圍最大值減去溫漂補(bǔ)償系數(shù),最小值為動(dòng)態(tài)范圍最小值,有效像素值經(jīng)轉(zhuǎn)換函數(shù)式(5)進(jìn)行像素增強(qiáng)。

其中,g(x,y)表示的是(x,y)點(diǎn)映射之后的像素值;MIN和MAX表示的是動(dòng)態(tài)范圍的最小值與最大值。
由于原器件之間不可忽略的微小差異性,同一型號(hào)CMOS 圖像傳感器之間具有完全不同的溫漂補(bǔ)償系數(shù)擬合曲線。不同設(shè)備溫漂補(bǔ)償系數(shù)的獲取成為自補(bǔ)償中的重復(fù)環(huán)節(jié),為有效快速完成多個(gè)圖像采集設(shè)備的溫漂補(bǔ)償系數(shù)獲取,系統(tǒng)主控系統(tǒng)對(duì)CMOS 圖像傳感器進(jìn)行不同曝光值的調(diào)整并進(jìn)行像素統(tǒng)計(jì)。將統(tǒng)計(jì)數(shù)據(jù)存儲(chǔ)于各個(gè)設(shè)備自有的外部存儲(chǔ)器上,從而消除各個(gè)設(shè)備之間的差異性。
圖像傳感器溫漂自補(bǔ)償系統(tǒng)總體采用模塊化設(shè)計(jì)方法[10],如圖1 系統(tǒng)結(jié)構(gòu)所示,充分利用FPGA 優(yōu)勢(shì)進(jìn)行串并結(jié)合以及流水線技術(shù)[11-12]。為了使系統(tǒng)更加穩(wěn)定,系統(tǒng)進(jìn)行同步化硬件電路結(jié)構(gòu)設(shè)計(jì)[13]。系統(tǒng)以圖像數(shù)據(jù)流為基礎(chǔ)劃分為3 部分,即系數(shù)統(tǒng)計(jì)、差值補(bǔ)償和直方圖增強(qiáng)。其中補(bǔ)償系數(shù)統(tǒng)計(jì)對(duì)不同溫度不同曝光值下的像素進(jìn)行統(tǒng)計(jì);差值補(bǔ)償使用補(bǔ)償系數(shù)對(duì)圖像數(shù)據(jù)流補(bǔ)償后由直方圖增強(qiáng)對(duì)圖像動(dòng)態(tài)范圍進(jìn)行調(diào)整。

圖1 溫漂自補(bǔ)償FPGA系統(tǒng)結(jié)構(gòu)
如圖2 系統(tǒng)邏輯所示,除核心邏輯電路外,系統(tǒng)集成了CMOS 傳感器驅(qū)動(dòng)電路、SDRAM 驅(qū)動(dòng)電路和外部SDRAM 存儲(chǔ)器,用于實(shí)現(xiàn)圖像采集、補(bǔ)償系數(shù)統(tǒng)計(jì)以及溫漂補(bǔ)償[14]。具體實(shí)現(xiàn)時(shí),補(bǔ)償系數(shù)統(tǒng)計(jì)與其他模塊通過(guò)狀態(tài)控制切換完成。

圖2 溫漂自補(bǔ)償系統(tǒng)邏輯
CMOS 驅(qū)動(dòng)和SDRAM 驅(qū)動(dòng)模塊通過(guò)對(duì)外部圖像傳感器與存儲(chǔ)器的相應(yīng)控制,完成對(duì)圖像數(shù)據(jù)的采集以及補(bǔ)償系數(shù)的存取。補(bǔ)償系數(shù)的存取以曝光時(shí)間和CMOS 溫度作為地址,補(bǔ)償系數(shù)為數(shù)據(jù),雖然占用了部分內(nèi)存,但極大地提高了溫度補(bǔ)償?shù)膶?shí)時(shí)性,提高了系統(tǒng)的運(yùn)行效率[15]。SDRAM 以查找表(LUT)方式進(jìn)行存取,LUT12 位地址分為4 位圖像傳感器曝光時(shí)間和8 位圖像傳感器溫度寄存器值,數(shù)據(jù)為8 位溫漂補(bǔ)償系數(shù),通過(guò)重構(gòu)后的數(shù)據(jù)更容易存取,如表1 所示。這兩個(gè)驅(qū)動(dòng)模塊的正常運(yùn)行是保證整個(gè)系統(tǒng)圖像數(shù)據(jù)流的正確性以及解決FPGA掉電后補(bǔ)償系數(shù)的易丟失性,其是溫漂補(bǔ)償自補(bǔ)償方法的關(guān)鍵基礎(chǔ)。

表1 補(bǔ)償系數(shù)存取格式
狀態(tài)控制是系統(tǒng)中承上啟下、不可或缺的一部分,其狀態(tài)的選擇決定了圖像數(shù)據(jù)流的傳輸途徑、曝光時(shí)間的控制以及統(tǒng)計(jì)系數(shù)的存取方向。其狀態(tài)分為系數(shù)統(tǒng)計(jì)狀態(tài)(0 狀態(tài))和溫漂補(bǔ)償狀態(tài)(1 狀態(tài))。當(dāng)主控處理器FPGA 檢測(cè)到狀態(tài)為0 狀態(tài)時(shí),CMOS驅(qū)動(dòng)電路將CMOS 圖像傳感器采集到的圖像數(shù)據(jù)傳輸至系數(shù)統(tǒng)計(jì)模塊中,F(xiàn)PGA 對(duì)圖像傳感器的曝光時(shí)間進(jìn)行調(diào)整,將統(tǒng)計(jì)完成的補(bǔ)償系數(shù)通過(guò)SDRAM 驅(qū)動(dòng)電路存儲(chǔ)至SDRAM 指定位置中;當(dāng)FPGA 檢測(cè)到狀態(tài)為1 狀態(tài)時(shí),與0 狀態(tài)相反,圖像數(shù)據(jù)流將被傳輸至溫漂補(bǔ)償模塊中,查詢(xún)曝光時(shí)間,補(bǔ)償系數(shù)將從SDRAM 中讀取至溫漂補(bǔ)償模塊中。
動(dòng)態(tài)檢測(cè)是系數(shù)統(tǒng)計(jì)狀態(tài)以及溫漂補(bǔ)償狀態(tài)中溫漂補(bǔ)償系數(shù)存取的理論依據(jù)。當(dāng)處于系數(shù)統(tǒng)計(jì)狀態(tài)時(shí),動(dòng)態(tài)檢測(cè)模塊實(shí)時(shí)查詢(xún)圖像傳感器中的溫度寄存器值,查詢(xún)到寄存器值發(fā)生改變后,以分割好的16 段時(shí)間進(jìn)行輪詢(xún)調(diào)整的同時(shí),根據(jù)行場(chǎng)同步信號(hào)選取圖像數(shù)據(jù)進(jìn)行統(tǒng)計(jì),并以定義好的存取格式進(jìn)行存儲(chǔ)。為了保證溫漂補(bǔ)償系數(shù)統(tǒng)計(jì)的完整性以及準(zhǔn)確性,在所有的補(bǔ)償系數(shù)統(tǒng)計(jì)完成后進(jìn)行數(shù)據(jù)校驗(yàn),使用1×3 的窗口在存儲(chǔ)地址進(jìn)行滑動(dòng),當(dāng)中間位置數(shù)據(jù)為0 而前后位置數(shù)據(jù)不為0 時(shí),則說(shuō)明當(dāng)前位置的溫漂補(bǔ)償系數(shù)未進(jìn)行統(tǒng)計(jì),對(duì)前后位置數(shù)據(jù)均值進(jìn)行插值。當(dāng)處于溫漂補(bǔ)償狀態(tài)時(shí),動(dòng)態(tài)檢測(cè)將當(dāng)前圖像傳感器的曝光值和溫度值拼接作為數(shù)據(jù)地址進(jìn)行查詢(xún),得到溫度補(bǔ)償系數(shù)。圖像傳感器采集的圖像數(shù)據(jù)流和得到的補(bǔ)償系數(shù)進(jìn)行差值計(jì)算,補(bǔ)償系數(shù)小于像素點(diǎn)的,進(jìn)行差值計(jì)算,補(bǔ)償系數(shù)大于像素點(diǎn)的,輸出0,有效防止二進(jìn)制相減造成的數(shù)據(jù)翻轉(zhuǎn)。通過(guò)差值補(bǔ)償?shù)膱D像數(shù)據(jù)以式(5)進(jìn)行計(jì)算,為了溫漂補(bǔ)償?shù)膶?shí)時(shí)性,提高溫漂補(bǔ)償?shù)乃俣萚16],將分母使用計(jì)算機(jī)計(jì)算成1 位整數(shù)、31 位小數(shù)的3 位二進(jìn)制形式,計(jì)算過(guò)程中要防止數(shù)據(jù)的溢出,超出像素范圍的數(shù)值以像素最大值輸出。
圖像采集設(shè)備選取FPGA 主控芯片為XC6SLL X45-2CSG324I 型,PYTHON1300 為CMOS 圖像傳感器。將圖像采集設(shè)備置于光學(xué)暗箱中,實(shí)時(shí)對(duì)圖像進(jìn)行溫度以及圖像像素值統(tǒng)計(jì),將部分溫度值下的像素平均值繪制如圖3 所示。
對(duì)圖像傳感器60 ℃時(shí)拍攝棋盤(pán)格以及經(jīng)過(guò)補(bǔ)償過(guò)后的圖像進(jìn)行圖像采集,如圖4 所示。計(jì)算圖像均值(MEAN)、峰值信噪比(PSNR)和平均梯度(AVEGARD),它們分別是衡量圖像的亮度、圖像質(zhì)量以及圖像細(xì)節(jié)程度的標(biāo)準(zhǔn),統(tǒng)計(jì)數(shù)據(jù)如表2 所示。

圖3 溫度-平均像素值折線圖

圖4 圖像處理效果

表2 統(tǒng)計(jì)數(shù)據(jù)
經(jīng)過(guò)補(bǔ)償算法的處理,明顯改善因溫度升高而造成圖像亮度增加的問(wèn)題,使圖像更接近于原始圖像;43.98 dB的峰值信噪比不僅能使經(jīng)過(guò)補(bǔ)償處理的圖像保持圖像的內(nèi)容信息,而且相對(duì)抑制了溫度引入的溫度噪聲影響;受溫度升高造成對(duì)比度降低,細(xì)節(jié)信息減少的圖像,在經(jīng)過(guò)補(bǔ)償處理后平均梯度提高20%,有效彌補(bǔ)了溫度帶來(lái)的細(xì)節(jié)丟失。經(jīng)試驗(yàn)證明,CMOS 圖像傳感器溫漂自補(bǔ)償實(shí)現(xiàn),有效減弱溫度對(duì)圖像采集的影響,保證了圖像采集設(shè)備輸出高質(zhì)量圖像。
針對(duì)高溫環(huán)境下CMOS 圖像傳感器產(chǎn)生的像素上升現(xiàn)象,實(shí)現(xiàn)了FPGA 通過(guò)自動(dòng)化溫漂系數(shù)采集以及補(bǔ)償?shù)姆桨冈O(shè)計(jì),既有效彌補(bǔ)了溫度對(duì)圖像傳感器產(chǎn)生的影響,又增強(qiáng)了圖像的細(xì)節(jié)信息。CMOS圖像傳感器溫漂自補(bǔ)償方案在FPGA 上的實(shí)現(xiàn),實(shí)現(xiàn)了高質(zhì)量圖像的采集與實(shí)時(shí)傳輸。