跳至內容
測試伺服器
開發伺服器

Balance White#

Balance White Auto camera feature 會自動校正所擷取影像中的色偏。

自動功能的像素資料可以來自一個或多個 Auto Function ROI。

若要手動校正色偏,請使用 Balance White 功能。

使用功能#

啟用或停用 Balance White Auto#

若要啟用或停用 Balance White Auto 自動功能:

  1. 指派 至少一個 auto function ROI 至 Balance White Auto 自動功能。
    確保 auto function ROI 與 Image ROI 重疊(部分或完全重疊皆可)。
  2. 將相機中的 BalanceWhiteAuto 參數設為下列其中一個 Operating Mode:
    • Once:相機會調整白平衡,直到 紅色、綠色和藍色的平均灰階值完全相同。當達到此狀態,或在經過數個計算週期後,相機會將自動功能設為 Off ,並將最後一次計算所得的平衡比率套用到所有後續的影像。
    • Continuous:相機在擷取影像時會持續調整白平衡。調整程序會持續進行,直到 Operating Mode 設為 Once 或 Off.
    • Off:停用 Balance White Auto 自動功能。 BalanceRatio 參數會維持上次自動或手動調整所產生的數值。

資訊

在以下相機型號上無法使用 Continuous Operating Mode:acA1920-25gc、acA2500-14gc、racer 2 S color 相機

運作原理#

自動白平衡是一個兩步驟的程序。

根據相機型號, BalanceRatio 參數的設定方式如下:

ace Classic#

對於 Basler ace Classic 相機型號,自動白平衡的運作方式如下:

  1. 當 BalanceRatioAbs 紅、綠、藍的參數值各自設為 1.5。
  2. 假設採用「灰世界 (gray world)」模型, BalanceRatioAbs 參數值會自動調整,使平均紅色和藍色像素值與平均綠色像素值相符。

ace U/L, MED ace, boost V, dart Classic, pulse#

對於 Basler ace U、ace L、MED ace、boost V、dart Classic 和 pulse 相機型號,自動白平衡的運作方式如下:

  1. 相機會比較紅色、綠色和藍色像素的平均灰階值。它會判定具備 最高平均灰階值 (即最亮的顏色)的顏色,並將 BalanceRatio 參數 該顏色的值設為 1。
  2. 相机会自动调整 BalanceRatio 其他兩種顏色的參數值,直到紅色、綠色和藍色的平均灰階值相同。

    因此, BalanceRatio 參數設定為 1(適用於其中一種顏色),另外兩種顏色則設定介於 1 到 ≈15.98 之間的值。

    範例: 假設您影像中的綠色像素具有最高的平均灰階值。如果您啟用 Balance White Auto 自動功能,相機將會把 BalanceRatio 綠色的參數值設為 1。接著,相機就會自動調整 BalanceRatio 紅色和藍色的參數值,直到紅色、綠色和藍色的平均灰階值相同。新的平衡比率可能例如為:綠色 = 1、紅色 = 1.08789,以及藍色 = 2.19678。

ace 2, boost R, dart R, dart M, racer 2 S/L#

對於 Basler ace 2、boost R、dart R、dart M 和 racer 2 L/S 相機型號,自動白平衡的運作方式如下:

  1. 相機會比較紅色、綠色和藍色像素的平均灰階值。它會判定具備 中位數平均灰階值 並將 BalanceRatio 參數 該顏色的值設為 1。
  2. 相机会自动调整 BalanceRatio 其他兩種顏色的參數值,直到紅色、綠色和藍色的平均灰階值相同。

    因此,擁有中位數灰階值的顏色的 BalanceRatio 參數會設為 1。相較於中位數值具有較高灰階值的顏色,其 BalanceRatio 參數會設為 0 到 1 之間的值;而相較於中位數灰階值具有較低灰階值的顏色,其參數則會設為 1 到 ≈15.98 之間。

    範例: 假設影像中的綠色像素具有中位數灰階值,紅色像素的灰階值高於綠色像素,而藍色像素的灰階值低於綠色像素。
    如果您啟用 Balance White Auto 自動功能,相機就會將 BalanceRatio 綠色的參數值設為 1,紅色設為 0 到 1 之間的值,藍色的值則設為 1 到 ≈15.98 之間。新的平衡比率可能例如為:綠色 = 1、紅色 = 0.568,以及藍色 = 3.1986。

資訊

  • 若要檢視 BalanceRatio 紅色、綠色或藍色的參數值,請使用以下項目切換至各自的色彩通道: BalanceRatioSelector.
  • 當相機持續擷取影像時,自動功能會稍有延遲地生效。前幾張影像可能不會受到自動功能的影響。
  • 在 boost V 彩色相機上,指派給 Balance White Auto 自動功能的 Auto Function ROI 不得包含任何飽和度達 100% 的彩色像素。否則,將會產生非預期的偽色效應。

範例程式碼#

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.AutoFunctionAOISelector.Value = "AOI2"
# Enable the Balance White Auto auto function
# for the auto function ROI selected
camera.AutoFunctionAOIUsageWhiteBalance.Value = True
# Enable Balance White Auto by setting the operating mode to Continuous
camera.BalanceWhiteAuto.Value = "Continuous"
其他相機#
// 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);
# Select auto function ROI 2
camera.AutoFunctionROISelector.Value = "ROI2"
# Enable the Balance White Auto auto function
# for the auto function ROI selected
camera.AutoFunctionROIUseWhiteBalance.Value = True
# Enable Balance White Auto by setting the operating mode to Continuous
camera.BalanceWhiteAuto.Value = "Continuous"

您也可以 use the pylon Viewer 來輕鬆設定參數。