コンテンツにスキップ

Balance White Auto#

Balance White Autoカメラ機能は、取得した画像のカラーシフトを自動的に補正します。

オートファンクションの画素データは、1つ以上のオートファンクションROIから取得できます。

カラーシフトを手動で修正するには、Balance White機能を使用します。

機能を使用する#

Balance White Autoの有効化/無効化#

Balance White Autoオートファンクションを有効または無効にするには、次の手順に従います。

  1. Balance White Autoオートファンクションに少なくとも1つのオートファンクションROIを割り当てます。
    オートファンクションROIが画像ROIと部分的または完全にオーバーラップするようにしてください。
  2. パラメーターを BalanceWhiteAuto パラメーターを次のいずれかの動作モードに設定します。
    • Once赤、緑、青の平均グレー値が同一になるまで、カメラはホワイトバランスを調整します。これが達成された場合、または最大30回の計算サイクルの後に、カメラはオートファンクションをOffに設定し、最後の計算から得られたバランス比を以後のすべての画像に適用します。
    • Continuous:画像の取得中に、カメラがホワイトバランスを連続的に調整します。この調整プロセスは、操作モードがOnceまたはOffに設定されるまで続行されます。
    • Off:Balance White Autoオートファンクションを無効にします。BalanceRatioパラメーターは、最後の自動調整または手動調整の結果の値に維持されます。

情報

次のカメラモデルでは、Continuous動作モードは使用できません:acA640-120gc、acA640-90gc、acA780-75gc、acA1300-22gc、acA1300-30gc、acA1600-20gc、acA1920-25gc、acA25gc、acA2500-14gc。

仕組み#

自動ホワイトバランス調整は、2段階のプロセスで構成されます。

  1. カメラは、赤、緑、青の画素の平均グレー値を比較します。平均グレー値が最も高い色(最も明るい色)を決定し、この色のBalanceRatioパラメーター値を1に設定します。
  2. カメラは、赤、緑、青の平均グレー値が同一になるまで、他の2色のBalanceRatioパラメーター値を自動的に調整します。

その結果、BalanceRatioパラメーターは、ある1色に対して1に設定され、他の2色に対して1~≈15.98の値に設定されます。

例:画像内の緑の画素の平均グレー値が最も高いとします。Balance White Autoオートファンクションを有効にすると、カメラはBalanceRatioパラメーターの値を緑について1に設定します。次に、カメラは、赤、緑、青の平均グレー値が同一になるまで、赤と青のBalanceRatioパラメーター値が自動的に調整されます。新しいバランス比は、例えば、緑 = 1、赤 = 1.08789、青 = 2.19678 のようになります。

情報

  • 赤、緑、または青のBalanceRatioパラメーター値を表示するには、BalanceRatioSelectorを使用してそれぞれのカラーチャンネルに切り替えます。
  • カメラが画像を連続的にキャプチャしている場合、オートファンクションは短い遅延を伴って有効になります。最初の何枚かの画像は、オートファンクションの影響を受けない場合があります。

サンプルコード#

ace classic/U/L GigEカメラ#

// Select auto function ROI 2
camera.AutoFunctionAOISelector.SetValue(AutoFunctionAOISelector_AOI2);
// Enable the Balance White Auto auto function
// for the auto function ROI selected
camera.AutoFunctionAOIUsageWhiteBalance.SetValue(true);
// Enable Balance White Auto by setting the operating mode to Continuous
camera.BalanceWhiteAuto.SetValue(BalanceWhiteAuto_Continuous);
INodeMap& nodemap = camera.GetNodeMap();
// Select auto function ROI 2
CEnumParameter(nodemap, "AutoFunctionAOISelector").SetValue("AOI2");
// Enable the Balance White Auto auto function
// for the auto function ROI selected
CBooleanParameter(nodemap, "AutoFunctionAOIUsageWhiteBalance").SetValue(true);
// Enable Balance White Auto by setting the operating mode to Continuous
CEnumParameter(nodemap, "BalanceWhiteAuto").SetValue("Continuous");
// Select auto function ROI 2
camera.Parameters[PLCamera.AutoFunctionAOISelector].SetValue(PLCamera.AutoFunctionAOISelector.AOI2);
// Enable the Balance White Auto auto function
// for the auto function ROI selected
camera.Parameters[PLCamera.AutoFunctionAOIUsageWhiteBalance].SetValue(true);
// Enable Balance White Auto by setting the operating mode to Continuous
camera.Parameters[PLCamera.BalanceWhiteAuto].SetValue(PLCamera.BalanceWhiteAuto.Continuous);
/* 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 auto function ROI 2 */
errRes = PylonDeviceFeatureFromString(hdev, "AutoFunctionAOISelector", "AOI2");
CHECK(errRes);
/* Enable the Balance White Auto auto function */
/* for the auto function ROI selected */
errRes = PylonDeviceSetBooleanFeature(hdev, "AutoFunctionAOIUsageWhiteBalance", 1);
CHECK(errRes);
/* Enable Balance White Auto by setting the operating mode to Continuous */
errRes = PylonDeviceFeatureFromString(hdev, "BalanceWhiteAuto", "Continuous");
CHECK(errRes);

その他のカメラ#

// Select auto function ROI 2
camera.AutoFunctionROISelector.SetValue(AutoFunctionROISelector_ROI2);
// Enable the Balance White Auto auto function
// for the auto function ROI selected
camera.AutoFunctionROIUseWhiteBalance.SetValue(true);
// Enable Balance White Auto by setting the operating mode to Continuous
camera.BalanceWhiteAuto.SetValue(BalanceWhiteAuto_Continuous);
INodeMap& nodemap = camera.GetNodeMap();
// Select auto function ROI 2
CEnumParameter(nodemap, "AutoFunctionROISelector").SetValue("ROI2");
// Enable the Balance White Auto auto function
// for the auto function ROI selected
CBooleanParameter(nodemap, "AutoFunctionROIUseWhiteBalance").SetValue(true);
// Enable Balance White Auto by setting the operating mode to Continuous
CEnumParameter(nodemap, "BalanceWhiteAuto").SetValue("Continuous");
// Select auto function ROI 2
camera.Parameters[PLCamera.AutoFunctionROISelector].SetValue(PLCamera.AutoFunctionROISelector.ROI2);
// Enable the Balance White Auto auto function
// for the auto function ROI selected
camera.Parameters[PLCamera.AutoFunctionROIUseWhiteBalance].SetValue(true);
// Enable Balance White Auto by setting the operating mode to Continuous
camera.Parameters[PLCamera.BalanceWhiteAuto].SetValue(PLCamera.BalanceWhiteAuto.Continuous);
/* 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 auto function ROI 2 */
errRes = PylonDeviceFeatureFromString(hdev, "AutoFunctionROISelector", "ROI2");
CHECK(errRes);
/* Enable the Balance White Auto auto function */
/* for the auto function ROI selected */
errRes = PylonDeviceSetBooleanFeature(hdev, "AutoFunctionROIUseWhiteBalance", 1);
CHECK(errRes);
/* Enable Balance White Auto by setting the operating mode to Continuous */
errRes = PylonDeviceFeatureFromString(hdev, "BalanceWhiteAuto", "Continuous");
CHECK(errRes);

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