4.12. ISP 處理流程¶
影像訊號處理器(ISP)是將感測器送出的原始像素值轉換成完成色彩影像的硬體處理流程。感測器上的像素層級校正是該流程的第一批階段。這些階段執行之後,流程其餘部分會在每個影格上以固定順序進行色彩處理與輸出格式化。
ISP 的色彩處理與輸出階段。處理流程會先讓每個階段處理完影格中的每個像素,下一個階段才開始。¶
4.12.1. 各個階段¶
每個階段依序套用一個明確定義的轉換。順序至關重要,後面的階段假設前面的階段已經執行完畢,而且其中有幾個階段也會取用 前一個 影格的輸出作為輸入。
統計擷取 從已校正的 Bayer 影格量測每個區域的平均亮度與每個通道的總和。這些數值會餵入自動曝光、自動增益與自動白平衡的控制迴路,接著這些迴路會為 下一個 影格更新感測器的設定。
自動白平衡增益 以每種色彩各自的乘數來縮放每個 Bayer 像素,紅色像素乘上 R 增益、綠色像素乘上 G 增益、藍色像素乘上 B 增益,藉此把場景的白色參考推向中性灰,使記錄下來的色彩看起來符合人眼所見。這些乘數來自前一個影格的 AWB 統計。
去拜耳化 從 Bayer 馬賽克為每個像素重建缺少的那兩個色彩通道,把每像素單通道的原始資料轉換成三通道 RGB。(參見去拜耳化(Debayering)。)此階段之後的所有處理都在 RGB 像素上進行,而非在 Bayer 馬賽克上。
色彩矩陣校正(CCM) 對每個 RGB 像素套用一個 3x3 的矩陣乘法,將感測器原生的紅綠藍反應映射到標準色彩空間。每個感測器的濾光片都有各自的光譜反應,並不完全符合任何標準的預期;此矩陣是逐感測器校正的轉換,能把「感測器 RGB」轉成「標準 RGB」。
伽瑪校正 對每個通道套用一條非線性曲線,把線性的感測器訊號壓縮成符合感知的編碼。人眼對暗色調之間差異的察覺強於對亮色調之間差異的察覺,因此一種把較多位元預算花在暗端的編碼,在給定的位元深度下能捕捉到更多可見的細節。
影像縮放 把影格從感測器的原生解析度調整為目標輸出解析度。多數應用以低於感測器完整像素數的設定執行,而縮小尺寸可同時減輕後續一切環節的頻寬與記憶體壓力。
影像裁切 從縮放後的影格中擷取一個子矩形,並捨棄其外的像素。用於擷取感興趣區域、符合特定的長寬比,或去掉應用不需要的邊框。
像素打包 把每通道的內部表示法(通常為每通道 10 或 12 位元)轉換成所選的輸出格式,並將結果寫入 RAM。
4.12.2. 控制迴路回饋¶
階段 1 與階段 2 構成一個橫跨多個影格的控制迴路。從影格 N 擷取出的統計告訴感測器該影格場景有多亮、其色彩平衡如何;自動曝光、自動增益與自動白平衡控制器利用這些數值為影格 N+1 挑選新的曝光、增益與白平衡暫存器值。新的值會在下一個影格的讀出時生效,新影格的統計再回饋回來,迴路便閉合。
對於不會變化的場景,迴路會在幾個影格內收斂並維持在固定設定。對於亮度或色偏會變化的場景,例如相機從室內搖向陽光照射的窗戶,迴路會在數個影格內追蹤該變化,使用者在邁向新穩態的過程中會看到短暫的亮度或色彩漂移。
4.12.3. ISP 在哪裡執行¶
常見有兩種安排方式。
感測器內 ISP 在感測器晶片內部執行整個處理流程,並輸出完成的 RGB 影像。MCU 只負責收取結果。
感測器外 ISP 位於主機 MCU 或 SoC 中。感測器輸出原始 Bayer;MCU 的矽晶片(或其驅動程式碼)會執行處理流程,再把完成的影格交給使用者程式碼。
這種分工會影響感測器能直接交給使用者哪些輸出格式。具備完整晶片內 ISP 的感測器讓使用者可從晶片支援的任何完成格式中挑選。沒有 ISP 的感測器只輸出 Bayer,格式轉換則發生在 MCU 矽晶片或軟體中。