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

Balance White#

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

自動功能的像素資料可以來自一個或多個 auto function ROIs。

若要手動校正色偏,請使用 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 Property 值設為 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 Property 值設為 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"

您也可以使用 pylon Viewer 來輕鬆設定參數。