コンテンツにスキップ

Color Transformation#

Color Transformationカメラ機能を使用すると、センサーから送信されたカラー情報を修正できます。

カラー変換マトリックスを使用すると、画像取得時に使用された光源によるカラーシフトを補正したり、センサーのカラー生成プロセスでの不完全性を補正したりすることができます。

情報

この機能は、マトリックスカラー変換について十分に理解している場合のみ使用してください。試行錯誤により変換マトリックスに正しい値を入力することはほぼ不可能です。

機能を使用する#

Color Transformationの設定#

  1. ホワイトバランスが適切に設定されていることを確認します。
  2. ProcessedRawEnableパラメーターをtrueに設定します(使用可能でベイヤーのピクセルフォーマットを使用している場合)。
  3. LightSourcePresetパラメーターをCustom使用可能な場合)に設定します。
  4. ColorTransformationValueSelectorパラメーターを目的のマトリックス内位置Gain00など)に設定します。
  5. ColorTransformationValueパラメーターに必要な値を入力して、選択した位置で値を調整します。パラメーターの値の範囲は-8.0~+7.96875です。

情報

変換マトリックスには既にカラー変換値が設定されています。これらは、以前に選択した光源の初期値に関連付けられているか、単位ベクトルに対応しているか、または以前にカラー変換機能を使用した結果に対応しています。

仕組み#

カラー変換機能では、変換マトリックスを使用して、各画素の変更された赤、緑、および青の画素データを提供します。

変換は、R、G、およびBピクセル値を含む3 x 1マトリックスに、カラー変換値を含む3 x 3マトリックスを事前に乗算することによって実行されます。

Color Transformationマトリックス

必要に応じて、各マトリックス値(Gain00、Gain01など)を設定できます。

サンプルコード#

// Select position Gain00 in the matrix
camera.ColorTransformationValueSelector.SetValue(ColorTransformationValueSelector_Gain00);
// Enter a floating point value for the selected position
camera.ColorTransformationValue.SetValue(1.5625);
// Select position Gain01 in the matrix
camera.ColorTransformationValueSelector.SetValue(ColorTransformationValueSelector_Gain01);
// Enter a floating point value for the selected position
camera.ColorTransformationValue.SetValue(-0.4375);
INodeMap& nodemap = camera.GetNodeMap();
// Select position Gain00 in the matrix
CEnumParameter(nodemap, "ColorTransformationValueSelector").SetValue("Gain00");
// Enter a floating point value for the selected position
CFloatParameter(nodemap, "ColorTransformationValue").SetValue(1.5625);
// Select position Gain01 in the matrix
CEnumParameter(nodemap, "ColorTransformationValueSelector").SetValue("Gain01");
// Enter a floating point value for the selected position
CFloatParameter(nodemap, "ColorTransformationValue").SetValue(-0.4375);
// Select position Gain00 in the matrix
camera.Parameters[PLCamera.ColorTransformationValueSelector].SetValue(PLCamera.ColorTransformationValueSelector.Gain00);
// Enter a floating point value for the selected position
camera.Parameters[PLCamera.ColorTransformationValue].SetValue(1.5625);
// Select position Gain01 in the matrix
camera.Parameters[PLCamera.ColorTransformationValueSelector].SetValue(PLCamera.ColorTransformationValueSelector.Gain01);
// Enter a floating point value for the selected position
camera.Parameters[PLCamera.ColorTransformationValue].SetValue(-0.4375);
/* 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 */
/* Select position Gain00 in the matrix */
errRes = PylonDeviceFeatureFromString(hdev, "ColorTransformationValueSelector", "Gain00");
CHECK(errRes);
/* Enter a floating point value for the selected position */
errRes = PylonDeviceSetFloatFeature(hdev, "ColorTransformationValue", 1.5625);
CHECK(errRes);
/* Select position Gain01 in the matrix */
errRes = PylonDeviceFeatureFromString(hdev, "ColorTransformationValueSelector", "Gain01");
CHECK(errRes);
/* Enter a floating point value for the selected position */
errRes = PylonDeviceSetFloatFeature(hdev, "ColorTransformationValue", -0.4375);
CHECK(errRes);

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