黑電平校正(Black Level Correction, BLC)算法
黑電平校正(BLC)是圖像傳感器(如CMOS/CCD)信號處理中的一個重要步驟,主要用于消除傳感器暗電流(Dark Current)導致的基線偏移,確保圖像的暗區(無光照射時)輸出值為0或設定的目標值。
1. 黑電平的產生原因
- 暗電流(Dark Current):即使在沒有光照時,傳感器像素也會因熱噪聲產生微小電流,導致輸出信號不為0。
- 制造工藝偏差:不同像素的暗電流可能不一致,導致固定模式噪聲(FPN)。
- 模擬電路偏移:ADC(模數轉換器)或模擬信號鏈可能存在直流偏移。
2. 黑電平校正的基本原理
黑電平校正的目標是測量并減去傳感器的暗電平(Black Level),使無光時的像素輸出歸零或達到預設值。
校正步驟:
-
測量黑電平(Black Level Measurement)
- 在完全遮光(或關閉光源)的情況下,讀取傳感器的原始輸出(通常取多幀平均以減少噪聲)。
- 計算所有像素或特定光學黑區(Optical Black, OB區)的平均值,作為黑電平估計值((BL))。
-
校正計算(Correction Calculation)
- 對每個像素的原始數據 (P_{raw}) 進行校正:
[
P_{corrected} = P_{raw} - BL
] - 如果黑電平存在空間不均勻性(如列/行FPN),可能需要采用分段校正或像素級校正。
- 對每個像素的原始數據 (P_{raw}) 進行校正:
-
鉗位處理(Clamping)
- 校正后可能出現負值(由于噪聲),通常需要鉗位到最小允許值(如0):
[
P_{final} = \max(P_{corrected}, 0)
]
- 校正后可能出現負值(由于噪聲),通常需要鉗位到最小允許值(如0):
3. 黑電平校正的硬件實現(FPGA/ASIC)
在硬件(如FPGA)中,黑電平校正通常采用以下方式實現:
(1) 光學黑區(OB Pixel)法
- 傳感器通常會在成像區外設置光學黑像素(OB Pixels),這些像素被遮光,僅反映暗電流。
- 計算OB區的平均值作為 (BL),然后對所有有效像素進行減法校正。
(2) 固定值校正
- 如果黑電平較穩定,可直接使用預存的校準值(如通過實驗室標定獲得)。
(3) 動態黑電平估計(適用于變化環境)
- 在視頻流中,可動態計算每幀的OB區均值,適應溫度或曝光時間的變化。
Verilog示例(簡化版)
module black_level_correction (input [11:0] pixel_in, // 12-bit 原始像素input [11:0] black_level, // 預計算的黑電平值output [11:0] pixel_out // 校正后像素
);// 黑電平校正(減法)assign pixel_out = (pixel_in >= black_level) ? (pixel_in - black_level) : 0;
endmodule
4. 高級黑電平校正技術
(1) 列/行級校正
- 由于傳感器可能存在列固定模式噪聲(Column FPN),可對每列單獨計算黑電平:
[
BL_{col}[i] = \text{mean(OB pixels in column } i)
]
(2) 溫度補償
- 黑電平隨溫度變化,可存儲不同溫度下的校正值,或使用溫度傳感器動態調整。
(3) 非線性校正
- 如果暗電流與曝光時間非線性相關,可采用查表法(LUT)或多項式擬合校正。
5. 實際應用中的挑戰
- 噪聲影響:黑電平估計可能受隨機噪聲干擾,需多幀平均或濾波。
- OB區污染:若OB區受光泄漏影響,會導致校正不準。
- 動態范圍損失:過度校正可能減少有效信號范圍。
6. 總結
- 黑電平校正是圖像處理的基礎步驟,用于消除傳感器暗電流偏移。
- 核心方法:測量黑電平(OB區或全幀平均),然后做減法校正。
- 硬件實現:通常用FPGA/ASIC實現實時校正,適用于攝像頭、醫療成像等應用。
如果需要更詳細的實現(如基于ISP流水線的BLC),可以進一步討論!