4.8. センサー上での較正

ピクセルセルの生の出力は、まだそのまま使える状態ではありません。データがセンサーから出る前に、いくつかの補正が適用されます。一部はチップのシリコン内で、一部はチップをプログラムするドライバーコード内で行われ、センサーが途中で導入する不完全さに対処します。これらはすべてのフレームで固定された順序で実行されます。まず列の固定パターンノイズ(FPN)トリム、次に黒レベル減算、次に欠陥ピクセル補正、最後にレンズシェーディング補正です。ユーザーコードに届く画像はすでにこれらすべてを通過しているため、それぞれが何をするかを知ることが重要です。

4.8.1. 列FPN補正

センサーの各列は独自のアンプと列ADCを持ち、それらの間のわずかな製造ばらつきにより、すべての列が隣の列とわずかに異なる読み取り値を示します。補正がなければ、この固定パターンは出力に薄い垂直の筋として現れます。これらの筋はシーンからではなくシリコン自体に由来するため、フレームごとに同じ位置にとどまります。センサーは工場で列ごとのオフセットとゲインのトリムを測定し、それらを較正ROMに保存し、さらなる補正が実行される前のすべての読み出しで適用します。これを最初に行うことで、パイプラインの残りの部分は、黒レベル較正が次に使用する暗基準ピクセルを含め、すべての列が同じように動作すると仮定できます。

4.8.2. 黒レベル較正

ADCのゼロ、すなわち空のフォトダイオードに対応するべきデジタルカウントは、完全には安定していません。温度や電源電圧の変動とともにドリフトし、ピクセルごとにもわずかに異なります。補正がなければ、完全に暗いフレームはゼロとして読み取られず、各ピクセルはわずかな正の暗オフセットを持ちます。

標準的な対策は、光が決して届かないように金属で物理的に覆われた行または列をセンサーの端に含めることです。それらのデジタルカウントは、現在の動作条件における真の暗基準を与えます。センサーはフレームごとにそれらの覆われたピクセルを読み取り、行または列ごとに平均し、その平均を他のすべてのピクセルから減算します。すると明るいピクセルは、温度や電源のドリフトに関係なく、照らされていないフォトダイオードに対してゼロのカウントで出力されます。

4.8.3. 欠陥ピクセル補正

どのセンサーでも、わずかな割合のピクセルは欠陥があります。どれだけの光が届いても一定の値(高いまま、または低いまま)を読み取るのです。一部の欠陥は製造ばらつきに由来し、さらに多くがセンサーの寿命にわたってゆっくりと蓄積します(長期間の動作中の宇宙線の衝突が通常の原因です)。

現代のセンサーは、小さな空間フィルターでこれをその場で処理します。フレームごとに、各ピクセルは同じ色の隣接ピクセルと比較されます。局所的な中央値からありえないほど大きく外れたピクセルは、それらの隣接ピクセルから導出された値で置き換えられます。このフィルターは、センサーごとに較正された不良ピクセルマップを必要とせずに、工場での欠陥と後から発生する欠陥の両方を捕捉し、欠陥は出力では見えなくなります。

4.8.4. レンズシェーディング補正

cos⁴の光量低下 とレンズ筐体による機械的なビネットが組み合わさり、補正されていないすべてのフレームに目立つ隅の暗化を生じさせます。センサー上のレンズシェーディング補正(LSC)ハードウェアは、各ピクセルにフレーム内の位置に依存するゲインを掛けることで補正します。中心では1.0で、測定された光量低下曲線の逆数に従うように隅に向かって滑らかに上昇します。

センサーは乗算器のハードウェアを提供しますが、ゲインマップ自体はMCUの責任です。ドライバーは起動時にこのマップをセンサーのLSCレジスタに書き込みます。マップはドライバーが保存している較正値からのもの、またはフラットな基準ターゲットに対する新たな測定からのもののいずれかです。一部のセンサーは、オンチップのレジスタに収まるように、マップを少数の多項式係数に圧縮します。

LSCはレンズに依存します。レンズを交換すると光量低下曲線が変わるため、あるレンズ用に較正されたLSCマップは別のレンズには一致しません。誤って適用されたマップは、隅が暗く見える(補正不足)か、隅に明るい斑点が見える(過補正)かのどちらかになります。