跳转到内容
STAGING SERVER
DEVELOPMENT SERVER

Spatial Correction#

Spatial Correction 相机功能允许您组合线扫描传感器的色彩信息,在此传感器中,有多条像素线同时曝光。

信息

该功能的使用#

运作原理#

Basler racer 2 彩色相机配备两种不同类型的传感器:彩色双线传感器或彩色三线传感器。

彩色双线传感器有两条紧密相邻的像素线,彩色三线传感器有三条彼此相邻排列的像素线。双线传感器的各线彼此直接相邻,而三线传感器的各线之间存在间隙。

彩色相机传感器正面

对于通过相机的任何物体,每一线都有不同的视野。每当触发采集时,传感器的所有线都会同时曝光。这意味着对于单次曝光,传感器中的每一线都会采集物体上的不同区域。

下图显示了彩色三线传感器的视野。

三线传感器的视野

在以下示例中,物体上的一个小区域“A”通过相机。当物体通过相机时,区域 A 会在三个不同的时间点分别落入蓝色线、绿色线和红色线的视线中。这意味着区域 A 的蓝色信息、区域 A 的绿色信息以及区域 A 的红色信息是在三次不同的图像采集过程中收集的。

通过线扫描彩色相机的物体

为了获取区域 A 的完整 RGB 信息,必须组合来自三次不同采集的数据。需要组合来自不同采集的数据以获取完整色彩信息的过程称为 spatial correction。换句话说,spatial correction 会对齐图像的色彩信息。当前曝光的红色线的数据与过去曝光获取的绿色线和蓝色线的数据相结合。

Spatial Correction Stride#

即: BslSpatialCorrectionStride 参数用于启用和禁用 spatial correction 并设置 spatial correction 的两个方面:起始线和步长。

Starting Line#

Spatial correction 起始线与物体通过相机的方向有关。

将 BslSpatialCorrectionStride 参数设置为正值或负值可决定起始线,从而决定 spatial correction 的方向。

线扫描彩色相机#

下图显示了根据运动方向在彩色三线传感器上的起始线。

通过线扫描彩色相机的运动方向

彩色三线传感器:

  • 正参数值:起始行为蓝线。
  • 负参数值:起始行为红线。

彩色双线传感器:

  • 正参数值:起始行为蓝/红线。
  • 负参数值:起始行为绿线。
线扫描黑白相机#

下图显示了根据运动方向,黑白四线传感器上的起始行。

物体通过线扫描黑白相机运动方向

黑白四线传感器:

  • 正参数值:起始行为第 4 行。
  • 负参数值:起始行为第 1 行。

黑白双线传感器:

  • 正参数值:起始行为第 2 行。
  • 负参数值:起始行为第 1 行。

Stride#

Spatial Correction 步长决定了必须缓冲的采集次数,以便组合正确的行数据并获取图像区域的完整 RGB 或完整 HDR 数据。

即: BslSpatialCorrectionStride 参数可在 -4 到 4 的范围内设置,具体取决于您的相机型号。指定 0 的步长值实际上会禁用 Spatial Correction。

下表显示了步长值与获取完整 RGB/HDR 信息所需的采集次数之间的关系。

线扫描彩色相机#
彩色双线传感器
Stride = 1 Full RGB = blue/red[n-1] + green[n]
Stride = -1 Full RGB = blue/red[n] + green[n-1]
彩色三线传感器
Stride = 1 Full RGB = blue[n-2] + green[n-1] + red[n]
Stride = 2 Full RGB = blue[n-4] + green[n-2] + red[n]
Stride = -1 Full RGB = blue[n] + green[n-1] + red[n-2]
Stride = -2 Full RGB = blue[n] + green[n-2] + red[n-4]
线扫描黑白相机#
Mono Dual Line Sensor
Stride = 1 Full HDR = line 2[n-1] + line 1[n]
Stride = 2 Full HDR = line 2[n-2] + line 1[n]
Stride = -1 Full HDR = line 2[n] + line 1[n-1]
Stride = -2 Fuss HDR = line 2[n] + line 1[n-2]
Mono Quad Line Sensor
Stride = 1 Full HDR = line 4[n-3] + line 3[n-2] + line 2[n-1] + line 1[n]
Stride = 2 Full HDR = line 4[n-6] + line 3[n-4] + line 2[n-2] + line 1[n]
Stride = 3 Full HDR = line 4[n-9] + line 3[n-6] + line 2[n-3] + line 1[n]
Stride = 4 Full HDR = line 4[n-12] + line 3[n-8] + line 2[n-4] + line 1[n]
Stride = -1 Full HDR = line 4[n] + line 3[n-1] + line 2[n-2] + line 1[n-3]
Stride = -2 Full HDR = line 4[n] + line 3[n-2] + line 2[n-4] + line 1[n-6]
Stride = -3 Full HDR = line 4[n] + line 3[n-3] + line 2[n-6] + line 1[n-9]
Stride = -4 Full HDR = line 4[n] + line 3[n-4] + line 2[n-8] + line 1[n-12]

信息

行采集通常由来自增量编码器的信号触发。物体从一行到另一行的运动与触发采集之间的关系必须进行设置,使其与线条的像素宽度相匹配。

避免光晕效应#

如果色彩信息的对齐正确,所采集的图像将会清晰锐利,正如以下图像右侧所示。如果在不同线条采集图像时其定位存在偏差,则会出现颜色“光晕”,正如以下图像左侧所示。

为了正确采集物体上的给定区域,其图像必须精准落在传感器中的彩色像素线上。

光晕效应

信息

为避免出现彩色光晕,请确保正确满足系统设计要求。

反转 Spatial Correction 方向#

在您的应用环境中,物体通过相机的方向可能会交替变化,或者相机可能在物体上方来回移动。在这两种情况下,运动方向都会发生改变。运动方向改变的信息对于实现适当的 Spatial Correction 至关重要。

可以从 I/O 线路获取此信息,或者使用相机 Encoder Control 输出的 Encoder Reverse 1 信号。

即: BslSpatialCorrectionDirectionReversal 参数允许您确定应使用哪个信号源来触发 Spatial Correction 方向的反转。

您可以设置 BslSpatialCorrectionDirectionReversal 参数设置为以下值:

  • Off:禁用方向反转。Spatial Correction 方向由为 BslSpatialCorrectionStride 参数。
  • Line1, Line2, Line3:如果 I/O 线路 1、2 或 3 的信号电平为高电平,则 Spatial Correction 方向反转。
  • EncoderReverse1:如果 Encoder Reverse 1 信号为高电平,则 Spatial Correction 方向反转。

配置 Spatial Correction#

若要配置 Spatial Correction:

  1. 设置 BslSpatialCorrectionStride 参数,例如设置为 2。
  2. 如果需要,请设置 BslSpatialCorrectionDirectionReversal 参数,例如设置为 EncoderReverse1.

示例代码#

// Set the stride for spatial correction to 2
camera.BslSpatialCorrectionStride.SetValue(BslSpatialCorrectionStride_2);
// Set the spatial correction direction reversal to Encoder Reverse 1
camera.BslSpatialCorrectionDirectionReversal.SetValue(BslSpatialCorrectionDirectionReversal_EncoderReverse1);
INodeMap& nodemap = camera.GetNodeMap();
// Set the stride for spatial correction to 2
CEnumParameter(nodemap, "BslSpatialCorrectionStride").SetValue("");
// Set the spatial correction direction reversal to Encoder Reverse 1
CEnumParameter(nodemap, "BslSpatialCorrectionDirectionReversal").SetValue("EncoderReverse1");
// Set the stride for spatial correction to 2
camera.Parameters[PLCamera.BslSpatialCorrectionStride].SetValue(PLCamera.BslSpatialCorrectionStride.);
// Set the spatial correction direction reversal to Encoder Reverse 1
camera.Parameters[PLCamera.BslSpatialCorrectionDirectionReversal].SetValue(PLCamera.BslSpatialCorrectionDirectionReversal.EncoderReverse1);
/* 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 */
/* Set the stride for spatial correction to 2 */
errRes = PylonDeviceFeatureFromString(hdev, "BslSpatialCorrectionStride", "");
CHECK(errRes);
/* Set the spatial correction direction reversal to Encoder Reverse 1 */
errRes = PylonDeviceFeatureFromString(hdev, "BslSpatialCorrectionDirectionReversal", "EncoderReverse1");
CHECK(errRes);
# Set the stride for spatial correction to 2
camera.BslSpatialCorrectionStride.Value = ""
# Set the spatial correction direction reversal to Encoder Reverse 1
camera.BslSpatialCorrectionDirectionReversal.Value = "EncoderReverse1"

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