Balance White#
自動功能的像素資料可以來自一個或多個 auto function ROIs。
若要手動校正色偏,請使用 Balance White 功能。
使用此功能#
啟用或停用 Balance White Auto#
若要啟用或停用 Balance White Auto 自動功能:
- 指派 至少一個 auto function ROI 至 Balance White Auto 自動功能。
確保 auto function ROI 與 Image ROI 重疊(部分重疊或完全重疊)。 - 將
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 相機型號,自動白平衡的運作方式如下:
- 影像
BalanceRatioAbs紅、綠、藍的參數值分別設為 1.5。 - 假設採用「灰世界」(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 相機型號,自動白平衡的運作方式如下:
- 相機會比較紅、綠、藍像素的平均灰階值,並找出 平均灰階值最高 的顏色(即最亮的顏色),然後將該顏色的
BalanceRatioProperty 值設為 1。 -
相機會自動調整
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 相機型號,自動白平衡的運作方式如下:
- 相機會比較紅、綠、藍像素的平均灰階值,並找出 中位數平均灰度值 並將
BalanceRatioProperty 值設為 1。 -
相機會自動調整
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 來輕鬆設定參數。