4.12. ISPパイプライン

イメージシグナルプロセッサ(ISP)は、センサーからのRAWピクセル値を完成したカラー画像に変換するハードウェアパイプラインです。オンセンサーの ピクセルレベルの補正 は、このパイプラインの最初の段階です。それらが実行された後、パイプラインの残りの部分が、毎フレーム固定された順序でカラー処理と出力フォーマット処理を行います。

A vertical pipeline diagram with eight labelled boxes, top to bottom: statistics extraction, auto white balance, debayering, colour matrix correction, gamma correction, image scaling, image cropping, and pixel packing. An arrow at the top is labelled "corrected Bayer pixels" and an arrow at the bottom is labelled "finished frame".

ISPのカラー処理段階と出力段階。パイプラインは、次の段階が始まる前に、各段階をフレーム内のすべてのピクセルに対して実行します。

4.12.1. 各段階

各段階は、明確に定義された1つの変換を順番に適用します。順序が重要です。後の段階は前の段階がすでに実行されていることを前提としており、いくつかの段階は 前の フレームの出力も入力として受け取ります。

  1. 統計抽出 は、補正済みベイヤーフレームから領域ごとの平均輝度とチャネルごとの合計を測定します。これらの数値はオート露出、オートゲイン、オートホワイトバランスの制御ループに供給され、それらが 次の フレームに向けてセンサーの設定を更新します。

  2. オートホワイトバランスゲイン は、各ベイヤーピクセルをカラーごとの乗数でスケーリングします。赤ピクセルはRゲイン、緑ピクセルはGゲイン、青ピクセルはBゲインで乗算し、シーンの白基準を中間グレーに近づけることで、記録されるカラーが目で見たとおりに見えるようにします。乗数は前のフレームのAWB統計から得られます。

  3. デベイヤー処理 は、ベイヤーモザイクから各ピクセルで欠けている2つのカラーチャネルを再構築し、ピクセルあたり1チャネルのRAWデータを3チャネルRGBに変換します。(デベイヤー処理 を参照してください。)この段階以降のすべては、ベイヤーモザイクではなくRGBピクセルに対して実行されます。

  4. カラーマトリックス補正(CCM) は、各RGBピクセルに3x3の行列乗算を適用し、センサー固有の赤緑青のレスポンスを標準カラー空間にマッピングします。各センサーのフィルターはそれぞれ独自の分光レスポンスを持ち、それはどの標準が期待するものとも正確には一致しません。この行列はセンサーごとに較正された変換であり、「センサーRGB」を「標準RGB」に変換します。

  5. ガンマ補正 は、各チャネルに非線形カーブを適用し、線形のセンサー信号を知覚に合わせたエンコーディングに圧縮します。目は明るいトーン間の違いよりも暗いトーン間の違いをより敏感に感じ取るため、ビット予算をより多く暗い側に費やすエンコーディングは、所定のビット深度でより多くの視認可能なディテールを捉えます。

  6. 画像スケーリング は、フレームをセンサー固有の解像度からターゲット出力解像度にリサイズします。ほとんどのアプリケーションはセンサーの全ピクセル数より少ない解像度で動作し、縮小することで後続のすべての処理に対する帯域幅とメモリ負荷の両方が軽減されます。

  7. 画像クロッピング は、スケーリングされたフレームの部分矩形を抽出し、その外側のピクセルを破棄します。関心領域をキャプチャしたり、特定のアスペクト比に合わせたり、アプリケーションが必要としない縁を切り落としたりするために使われます。

  8. ピクセルパッキング は、チャネルごとの内部表現(通常はチャネルあたり10ビットまたは12ビット)を選択された出力フォーマットに変換し、その結果をRAMに書き込みます。

4.12.2. 制御ループのフィードバック

段階1と2は、複数のフレームにまたがる制御ループを形成します。フレームNから抽出された統計は、そのフレームでシーンがどれだけ明るかったか、そしてカラーバランスがどうであったかをセンサーに伝えます。オート露出、オートゲイン、オートホワイトバランスのコントローラーは、それらの数値を使ってフレームN+1向けの新しい露出、ゲイン、ホワイトバランスのレジスタ値を選択します。新しい値は次のフレームの読み出しで反映され、新しいフレームの統計が返ってきて、ループが閉じます。

変化しないシーンの場合、ループは数フレーム以内に収束し、一定の設定にとどまります。明るさやカラーキャストが変化するシーン(たとえばカメラが室内から日の当たる窓へパンする場合)では、ループは数フレームにわたって変化を追跡し、ユーザーには新しい定常状態に至るまでの短い明るさやカラーのドリフトが見えます。

4.12.3. ISPが実行される場所

2つの構成が一般的です。

  • オンセンサーISP は、パイプライン全体をセンサーチップ内で実行し、完成したRGB画像を出力します。MCUは単に結果を集めるだけです。

  • オフセンサーISP は、ホストMCUまたはSoC内に存在します。センサーはRAWベイヤーを出力し、MCUのシリコン(またはそのドライバコード)がパイプラインを実行してから、完成したフレームをユーザーコードに渡します。

この分担は、センサーがユーザーに直接渡せる出力フォーマットに影響します。完全なオンチップISPを備えたセンサーは、チップがサポートする任意の完成フォーマットをユーザーが選べるようにします。ISPを持たないセンサーはベイヤーのみを出力し、フォーマット変換はMCUのシリコンまたはソフトウェアで行われます。