Balance White Auto#
自动功能的像素数据可以来自一个或多个自动功能 ROI。
要手动纠正色彩偏移,请使用 Balance White 功能。
该功能的使用#
启用或禁用 Balance White Auto#
要启用或禁用 Balance White Auto 自动功能:
- 将至少一个自动功能 ROI 分配给 Balance White Auto 自动功能。
确保自动功能 ROI 部分或完全与图像 ROI 重叠。 - 设置
BalanceWhiteAuto参数设置为以下工作模式之一: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 经典的#
对于 Basler ace Classic 相机型号,自动白平衡的工作原理如下:
- 即:
BalanceRatioAbs红色、绿色和蓝色的参数值均设为 1.5。 - 假设采用“灰度世界”模型,
BalanceRatioAbs参数值会自动调整,使红色和蓝色像素的平均值与绿色像素的平均值相匹配。
ace U/L, MED ace, boost V, dart Classic, pulse#
对于 Basler ace U、ace L、MED ace、boost V、dart Classic 和 pulse 相机型号,自动白平衡的工作原理如下:
- 相机比较红色、绿色和蓝色像素的平均灰度值。它会确定具有 最高平均灰度值 (即最亮的颜色)的颜色,并将其
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#
对于 Basler ace 2、boost R、dart 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 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 轻松设置参数。