跳转到内容
暂存服务器
开发服务器

Balance White Auto#

相机的 Balance White Auto 功能会自动校正所采集到的图像中的色彩偏移。

自动功能的像素数据可以来自一个或多个自动功能 ROI。

要手动纠正色彩偏移,请使用 Balance White 功能。

该功能的使用#

启用或禁用 Balance White Auto#

要启用或禁用 Balance White Auto 自动功能:

  1. 将至少一个自动功能 ROI 分配给 Balance White Auto 自动功能。
    确保自动功能 ROI 部分或完全与图像 ROI 重叠。
  2. 设置 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 相机型号,自动白平衡的工作原理如下:

  1. 即: BalanceRatioAbs 红色、绿色和蓝色的参数值均设为 1.5。
  2. 假设采用“灰度世界”模型, 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"

您也可以使用 pylon Viewer 轻松设置参数。