Balance White#
自動功能的像素資料可來自一個或多個自動功能 ROI。
若要手動修正顏色偏移,請使用 Balance White 功能。
使用功能#
啟用或停用「Balance White 」自動功能#
若要啟用或停用「Balance White 」的自動功能:
- 請為「Balance White Auto」自動功能指派至少一個自動功能 ROI。
請確保自動功能 ROI 與影像 ROI存在部分或完全的重疊。 - 將相機中的
BalanceWhiteAuto將參數設定為以下其中一種運作模式:Once: 相機會調整白平衡,直到 紅色、綠色和藍色的平均灰度值完全相同. 當此目標達成時,或經過數個計算週期後,相機便會將自動功能設定為Off並將上次計算得出的平衡比例套用至所有後續影像。Continuous: 相機在拍攝影像時會持續調整白平衡。此調整過程將持續進行,直到操作模式設定為Once或Off.Off: 停用「Balance White 」的自動功能。該BalanceRatio參數將維持在最後一次自動或手動調整後的數值。
資訊
以下相機型號不支援連續運作模式:acA1920-25gc、acA2500-14gc、racer 2 S 彩色相機
運作原理#
自動白平衡是一個分兩步進行的過程。
視相機型號而定,該 BalanceRatio 該參數的設定方式如下:
ace Classic#
對於 Baslerace Classic系列相機型號,自動白平衡的運作方式如下:
- 當
BalanceRatioAbs紅色、綠色和藍色的參數值均設定為 1.5。 - 假設採用「灰色世界」模型,則
BalanceRatioAbs參數值會自動調整,使紅、藍兩色的平均像素值與綠色的平均像素值相符。
ace U/L、MED ace、boost V 、dart Classic、pulse#
對於 Baslerace U、ace L、MED ace、 boost V、dart Classic 及脈衝式相機型號,自動白平衡的運作方式如下:
- 相機會比較紅、綠、藍三色像素的平均灰階值,並根據此來判定顏色, 最高平均灰度值 (即最鮮豔的顏色),並將
BalanceRatio參數 將此顏色的值設為 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#
對於 Baslerace 2、 boost Rdart R、dart M 以及racer 2 L/S相機型號,自動白平衡的運作方式如下:
- 相機會比較紅、綠、藍三色像素的平均灰階值,並根據此來判定顏色, 中位數平均灰度值 並設定
BalanceRatio參數 將此顏色的值設為 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 自動功能的自動功能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 來輕鬆設定參數。