コンテンツにスキップ

Vignetting Correction#

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

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

機能を使用する#

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

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

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

Vignetting Correctionプロセス図

In step 1, correction values (CV) for all pixels are calculated and saved in the camera's memory. In step 2, the vignetting artifacts are removed immediately if the VignettingCorrectionMode parameter is enabled. To remove the artifacts, the correction values are multiplied with the original pixel values (OV) to achieve an improved image (Resulting Values, RV).

Using the VignettingCorrectionMode parameter, you can turn the correction on and off. This parameter will only be available after you have created vignetting correction data using the pylon Viewer.

You can also use vignetting correction data from a different camera if your camera has similar specifications as the one on which you created the vignetting correction data. To do so, follow these steps. Afterwards, execute the VignettingCorrectionLoad command.

情報

  • 最適な結果を得るには、補正データを作成する前に、光源の初期値やガンマなどの非線形機能をすべて無効にしてください。これらの機能は、あとで再度有効にすることができます。
  • カラーカメラでは、補正データを作成する前にベイヤーピクセルフォーマットを選択します。補正データを作成したら、任意のピクセルフォーマットを選択できます。
  • ビネット補正を実行するときは、生成された基準画像の隅の部分が中央部より適度に暗くなっていることが重要です。
  • ビネットは、使用するレンズ、口径、および焦点距離の影響を受けます。レンズ、口径、または焦点距離を変更する場合は、ビネット補正データの新しいセットを作成する必要があります。
  • Changing the binning factor while the BinningSelector parameter is set to Sensor will disable vignetting correction. The VignettingCorrectionMode parameter will be set to Off, and you won't be able to turn it on again until one of the following happens:

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

サンプルコード#

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を使用して、パラメーターを簡単に設定することもできます。