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

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

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

其中,P(x,y)為原始像素點,T為壓縮映射函數,g(x,y)為增強后的像素值。
文中選用的方法為線性自適應直方圖增強,對像素動態范圍進行映射,使像素灰度值動態范圍進行還原。最大值為動態范圍最大值減去溫漂補償系數,最小值為動態范圍最小值,有效像素值經轉換函數式(5)進行像素增強。

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

圖1 溫漂自補償FPGA系統結構
如圖2 系統邏輯所示,除核心邏輯電路外,系統集成了CMOS 傳感器驅動電路、SDRAM 驅動電路和外部SDRAM 存儲器,用于實現圖像采集、補償系數統計以及溫漂補償[14]。具體實現時,補償系數統計與其他模塊通過狀態控制切換完成。

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

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

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

圖4 圖像處理效果

表2 統計數據
經過補償算法的處理,明顯改善因溫度升高而造成圖像亮度增加的問題,使圖像更接近于原始圖像;43.98 dB的峰值信噪比不僅能使經過補償處理的圖像保持圖像的內容信息,而且相對抑制了溫度引入的溫度噪聲影響;受溫度升高造成對比度降低,細節信息減少的圖像,在經過補償處理后平均梯度提高20%,有效彌補了溫度帶來的細節丟失。經試驗證明,CMOS 圖像傳感器溫漂自補償實現,有效減弱溫度對圖像采集的影響,保證了圖像采集設備輸出高質量圖像。
針對高溫環境下CMOS 圖像傳感器產生的像素上升現象,實現了FPGA 通過自動化溫漂系數采集以及補償的方案設計,既有效彌補了溫度對圖像傳感器產生的影響,又增強了圖像的細節信息。CMOS圖像傳感器溫漂自補償方案在FPGA 上的實現,實現了高質量圖像的采集與實時傳輸。