コンテンツにスキップ

Flat-Field Correction#

Flat-Field Correction(FFC)カメラ機能を使用すると、センサーピクセルの光感度の違いによって生じる画像の不均一性を除去することができます。

フラットフィールド補正を適用する前に、カメラをキャリブレーションする必要があります。これには、適切な補正データを計算し、そのデータをカメラにアップロードする操作も含まれます。これにより、画像取得中に元のピクセルを補正し、画像を改善することができます。

この機能はFlat-Field Correction(pylon Viewer)機能によって補完されます。

機能を使用する#

仕組み#

すべてのセンサーのピクセルは、画像アーティファクトにより出力される輝度がわずかに異なります。これはデジタル画像処理ではよく見られる影響です。フラットフィールド補正はこれらの画像アーティファクトを最小限に抑え、画質を改善し、以降の分析が向上します。

画像アーティファクトを除去するには、最初に補正データを作成する必要があります。次の図ではこのプロセスを示しています。

手順1–補正値(CV)の作成#

フラットフィールド補正手順1

手順2–フラットフィールド補正の適用#

フラットフィールド補正手順1

手順1では、暗時出力不均一性(DSNU)(暗電流ノイズ)を検出するための一連の暗視野画像と、感度不均一性(PRNU)を検出するための一連の明視野(フラットフィールド)画像が必要です。

次に、ユーザーが補正値(CV)を計算し、カメラのフラッシュメモリーに保存する必要があります。

手順2では、フラットフィールド補正機能が有効になっている場合は、画像アーティファクトが除去されます。元のピクセル値(OV)が補正され、画像が改善されます(結果値:RV)。

pylon Viewerを使用した補正値の計算#

Flat-Field Correction(pylon Viewer)を参照してください。

pylon APIを使用した補正値の計算#

Flat-Field Correction機能は列ベースです。つまり、センサーの列ごとに、暗時出力不均一性(DSNU)の補正値と感度不均一性(PRNU)の補正値をキャリブレーション中に計算する必要があります。次の数学的パラメーターが関係します。

  • DMean:暗視野画像のすべてのピクセルの平均グレー値
  • GMean:明視野画像のすべてのピクセルの平均グレー値
  • DSNU_Coeff(x):暗時出力不均一性(DSNU)係数
  • PRNU_Coeff(x):フォト応答不均一性(PRNU)係数
  • UserGD_Offset:ユーザー定義のグローバルダークオフセット

xは列インデックスです。

情報

最良の結果を得るには、実際のアプリケーション環境で暗視野画像と明視野画像を取得します。修正できるのは静的効果のみであることに注意してください。レンズや照明などを変更した場合は、この手順を繰り返す必要があります。

補正値を計算するには:

  1. レンズにプラスチック製のキャップを付けてセンサーを光から保護し、一連の暗い画像を取得します。
  2. 取得したすべての画像のすべてのピクセルのグレー値を合計し、合計をピクセルの総数で割り算します。結果は、暗視野画像(DMean)内のすべてのピクセルの平均グレー値です。
  3. 各列x(D(x))の平均グレー値を計算します。
  4. Illuminate the sensor homogeneously to 70 % saturation, e.g., by placing a white sheet of paper in the camera's entire field of view, and acquire a sequence of bright images.
  5. 取得したすべての画像のすべてのピクセルのグレー値を合計し、合計をピクセルの総数で割り算します。結果は、明視野画像(GMean)内のすべてのピクセルの平均グレー値です。
  6. 各列x(G(x))の平均グレー値を計算します。
  7. 必要な場合、必要に応じてグローバルダークオフセット値を決定します(UserGD_Offset)。
  8. 各列xについて、次のようにDSNU_Coeff(x)PRNU_Coeff(x)の各係数を計算します。

    DSNUとPRNUの補正式

  9. 計算値を使用して、pylon APIを介して対応するカメラパラメーターを設定します。

    • Column index (x): BslFlatFieldCorrectionCoeffX
    • DMean: BslFlatFieldCorrectionDMean
    • DSNU_Coeff(x): BslFlatFieldCorrectionCoeffDSNU
    • PRNU_Coeff(x): BslFlatFieldCorrectionCoeffPRNU
    • UserGD_Offset: BslFlatFieldCorrectionUserGD
  10. すべての列にすべての補正値を設定したら、一連の画像を取得してフラットフィールド補正をテストできます。

  11. If you're satisfied with the image quality, save the settings to the camera's flash memory by executing the BslFlatFieldCorrectionSaveToFlash command.

フラットフィールド補正モードの設定#

To set the flat-field correction mode, set the BslFlatFieldCorrectionMode パラメーターを次のいずれかの値に設定します。

  • その: The camera performs flat-field correction, i.e., DSNU and PRNU corrections.
  • DSNUOnly: The camera performs DSNU correction only.
  • Off (default): The camera does not perform flat-field correction.

サンプルコード#

// Example: Set all correction values for all columns
// Dark signal non-uniformity (DSNU) coefficient
// CalculatedDSNU[0..width-1]
// Photo response non-uniformity (PRNU) coefficient
// CalculatedPRNU[0..width-1]
for (x=0; ++x; x<width)
{
    camera.BslFlatFieldCorrectionCoeffX.SetValue(x);
    camera.BslFlatFieldCorrectionCoeffDSNU.SetValue(CalculatedDSNU[x]);
    camera.BslFlatFieldCorrectionCoeffPRNU.SetValue(CalculatedPRNU[x]);
}

// Set the global dark offset value
camera.BslFlatFieldCorrectionUserGD.SetValue(40)

// Save the settings to the camera's flash memory
camera.BslFlatFieldCorrectionSaveToFlash.Execute();

// Set the flat-field correction mode
camera.BslFlatFieldCorrectionMode.SetValue(BslFlatFieldCorrectionMode_On);

このサンプルコードは、C++言語でのみ使用できます。

pylon Viewerを使用して、パラメーターを簡単に設定することもできます。