コンテンツにスキップ
ステージングサーバー
開発サーバー

Vignetting Correction#

Vignetting Correctionカメラ機能を使用すると、画像からビネットアーチファクトを除去できます。

この機能は,pylon ViewerのVignetting Correction機能と連携して動作します。

機能を使用する#

口径食とは、画像の中心に比べて画像の隅が暗くなる現象のことを言います。これはデジタル画像処理ではよく見られる影響です。センサーの端のピクセルが十分な光を受けない場合に発生します。

これは、イメージサークルがセンサーのサイズに比べて小さすぎる場合や、光線がセンサーに適切な角度(センサーの中心に当たるように)で当たらない場合に発生する可能性があります。これの場合、エッジのピクセルのグレー値が低いことを意味します。

これらのアーチファクトを除去するには、pylon Viewerを使用して一連の補正データを作成する必要があります。次の図は、このプロセスを示します。

Vignetting Correctionプロセス図

ステップ1では、すべてのピクセルの補正値(CV)が計算され、カメラの Memory に保存されます。ステップ2では、 VignettingCorrectionMode パラメータが有効になっている場合、Vignetting Correction のアーティファクトが直ちに削除されます。アーティファクトを削除するために、補正値と元のピクセル値(OV)が乗算され、画質が向上した画像(結果値、RV)が得られます。

VignettingCorrectionMode パラメータを使用すると、補正のオン/オフを切り替えることができます。このパラメータは、pylon Viewer を使用して Vignetting Correction データを作成した後にのみ使用可能になります。

作成元カメラと同等の仕様を持つカメラであれば、別のカメラの Vignetting Correction データを使用することもできます。これを行うには、次の 手順に従ってください。その後、 VignettingCorrectionLoad コマンド。

情報

  • 最適な結果を得るには、補正データを作成する前に、光源の初期値やガンマなどの非線形機能をすべて無効にしてください。これらの機能は、あとで再度有効にすることができます。
  • カラーカメラでは、補正データを作成する前にベイヤーピクセルフォーマットを選択します。補正データを作成したら、任意のピクセルフォーマットを選択できます。
  • ビネット補正を実行するときは、生成された基準画像の隅の部分が中央部より適度に暗くなっていることが重要です。
  • ビネットは、使用するレンズ、口径、および焦点距離の影響を受けます。レンズ、口径、または焦点距離を変更する場合は、ビネット補正データの新しいセットを作成する必要があります。
  • の変更中に Binning 係数を変更すると、 BinningSelector パラメータが次のように設定されていること: Sensor Vignetting Correction が無効になります。 VignettingCorrectionMode パラメータが Offまた、以下のいずれかの条件が満たされるまで、再度有効にすることはできません。

    • ビニング係数を、ビネット補正を実行した係数にリセットする。
    • 新しい係数を使用して再度ビネット補正を実行する。

サンプルコード#

ace 2 および boost R カメラ#
// Turn vignetting correction on
camera.BslVignettingCorrectionMode.SetValue(BslVignettingCorrectionMode_On);
// Load vignetting correction data
camera.BslVignettingCorrectionLoad.Execute();
INodeMap& nodemap = camera.GetNodeMap();
// Turn vignetting correction on
CEnumParameter(nodemap, "BslVignettingCorrectionMode").SetValue("On");
// Load vignetting correction data
CCommandParameter(nodemap, "BslVignettingCorrectionLoad").Execute();
// Turn vignetting correction on
camera.Parameters[PLCamera.BslVignettingCorrectionMode].SetValue(PLCamera.BslVignettingCorrectionMode.On);
// Load vignetting correction data
camera.Parameters[PLCamera.BslVignettingCorrectionLoad].Execute();
/* Macro to check for errors */
#define CHECK(errc) if (GENAPI_E_OK != errc) printErrorAndExit(errc)
GENAPIC_RESULT errRes = GENAPI_E_OK;  /* Return value of pylon methods */
/* Turn vignetting correction on */
errRes = PylonDeviceFeatureFromString(hdev, "BslVignettingCorrectionMode", "On");
CHECK(errRes);
/* Load vignetting correction data */
errRes = PylonDeviceExecuteCommandFeature(hdev, "BslVignettingCorrectionLoad");
CHECK(errRes);
# Turn vignetting correction on
camera.BslVignettingCorrectionMode.Value = "On"
# Load vignetting correction data
camera.BslVignettingCorrectionLoad.Execute()
その他のカメラ#
// Turn vignetting correction on
camera.VignettingCorrectionMode.SetValue(VignettingCorrectionMode_On);
// Load vignetting correction data
camera.VignettingCorrectionLoad.Execute();
INodeMap& nodemap = camera.GetNodeMap();
// Turn vignetting correction on
CEnumParameter(nodemap, "VignettingCorrectionMode").SetValue("On");
// Load vignetting correction data
CCommandParameter(nodemap, "VignettingCorrectionLoad").Execute();
// Turn vignetting correction on
camera.Parameters[PLCamera.VignettingCorrectionMode].SetValue(PLCamera.VignettingCorrectionMode.On);
// Load vignetting correction data
camera.Parameters[PLCamera.VignettingCorrectionLoad].Execute();
/* Macro to check for errors */
#define CHECK(errc) if (GENAPI_E_OK != errc) printErrorAndExit(errc)
GENAPIC_RESULT errRes = GENAPI_E_OK;  /* Return value of pylon methods */
/* Turn vignetting correction on */
errRes = PylonDeviceFeatureFromString(hdev, "VignettingCorrectionMode", "On");
CHECK(errRes);
/* Load vignetting correction data */
errRes = PylonDeviceExecuteCommandFeature(hdev, "VignettingCorrectionLoad");
CHECK(errRes);
# Turn vignetting correction on
camera.VignettingCorrectionMode.Value = "On"
# Load vignetting correction data
camera.VignettingCorrectionLoad.Execute()

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