跳转到内容
STAGING SERVER
DEVELOPMENT SERVER

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 运行模式:acA1920-25gc、acA2500-14gc、racer 2 S 彩色相机

运作原理#

自动白平衡是一个两步处理过程。

根据相机型号的不同, 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 轻松设置参数。