Flat-Field Correction#
フラットフィールド補正を適用する前に、カメラをキャリブレーションする必要があります。これには、適切な補正データを計算し、そのデータをカメラにアップロードする操作も含まれます。これにより、画像取得中に元のピクセルを補正し、画像を改善することができます。
この機能はFlat-Field Correction(pylon Viewer)機能によって補完されます。
機能を使用する#
仕組み#
すべてのセンサーのピクセルは、画像アーティファクトにより出力される輝度がわずかに異なります。これはデジタル画像処理ではよく見られる影響です。フラットフィールド補正はこれらの画像アーティファクトを最小限に抑え、画質を改善し、以降の分析が向上します。
画像アーティファクトを除去するには、最初に補正データを作成する必要があります。次の図ではこのプロセスを示しています。
手順1–補正値(CV)の作成#
手順2–フラットフィールド補正の適用#
手順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は列インデックスです。
情報
最良の結果を得るには、実際のアプリケーション環境で暗視野画像と明視野画像を取得します。修正できるのは静的効果のみであることに注意してください。レンズや照明などを変更した場合は、この手順を繰り返す必要があります。
補正値を計算するには:
- レンズにプラスチック製のキャップを付けてセンサーを光から保護し、一連の暗い画像を取得します。
- 取得したすべての画像のすべてのピクセルのグレー値を合計し、合計をピクセルの総数で割り算します。結果は、暗視野画像(DMean)内のすべてのピクセルの平均グレー値です。
- 各列x(D(x))の平均グレー値を計算します。
- 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.
- 取得したすべての画像のすべてのピクセルのグレー値を合計し、合計をピクセルの総数で割り算します。結果は、明視野画像(GMean)内のすべてのピクセルの平均グレー値です。
- 各列x(G(x))の平均グレー値を計算します。
- 必要な場合、必要に応じてグローバルダークオフセット値を決定します(UserGD_Offset)。
-
各列xについて、次のようにDSNU_Coeff(x)とPRNU_Coeff(x)の各係数を計算します。
-
計算値を使用して、pylon APIを介して対応するカメラパラメーターを設定します。
- Column index (x):
BslFlatFieldCorrectionCoeffX
- DMean:
BslFlatFieldCorrectionDMean
- DSNU_Coeff(x):
BslFlatFieldCorrectionCoeffDSNU
- PRNU_Coeff(x):
BslFlatFieldCorrectionCoeffPRNU
- UserGD_Offset:
BslFlatFieldCorrectionUserGD
- Column index (x):
-
すべての列にすべての補正値を設定したら、一連の画像を取得してフラットフィールド補正をテストできます。
- 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を使用して、パラメーターを簡単に設定することもできます。