콘텐츠로 건너뛰기
STAGING SERVER
DEVELOPMENT SERVER

Spatial Correction#

Spatial Correction camera feature를 사용하면 둘 이상의 픽셀 라인이 동시에 노출되는 라인 스캔 센서의 색상 정보를 결합할 수 있습니다.

정보

기능 사용법#

작동 원리#

Basler racer 2 컬러 카메라는 컬러 듀얼 라인 센서와 컬러 트리플 라인 센서의 두 가지 서로 다른 센서 타입을 갖추고 있습니다.

정보

카메라 모델의 센서 타입을 확인하려면 해당 카메라 모델의 카메라 항목을 확인하십시오. 카메라 항목은 Area and Line Scan Cameras 섹션에서 찾을 수 있습니다.

컬러 듀얼 라인 센서에는 두 개의 픽셀 라인이 있고 컬러 트리플 라인 센서에는 서로 나란히 배열된 세 개의 픽셀 라인이 있습니다. 듀얼 라인 센서의 라인들은 서로 직접 인접해 있는 반면, 트리플 라인 센서의 라인들은 간격을 두고 분리되어 있습니다.

컬러 카메라 센서 면

각 라인은 카메라를 통과하는 모든 개체에 대해 서로 다른 시야(field of view)를 가집니다. 취득(acquisition)이 트리거될 때마다 센서의 모든 라인이 동시에 노출됩니다. 이는 단일 노출에 대해 센서의 각 라인이 개체상의 서로 다른 영역을 취득함을 의미합니다.

다음 그림은 컬러 트리플 라인 센서의 시야를 보여줍니다.

트리플 라인 센서의 시야

다음 예시에서는 개체상의 작고 단일한 영역 "A"가 카메라를 지나갑니다. 개체가 카메라를 지나감에 따라 영역 A는 세 가지 다른 시점에 파란색 라인, 초록색 라인, 빨간색 라인의 시야에 차례로 들어오게 됩니다. 즉, 영역 A에 대한 파란색 정보, 초록색 정보, 빨간색 정보는 세 번의 서로 다른 이미지 취득 과정에서 수집됩니다.

라인 스캔 컬러 카메라를 통과하는 개체

영역 A에 대한 전체 RGB 정보를 얻으려면 세 번의 서로 다른 취득에서 얻은 데이터를 결합해야 합니다. 전체 색상 정보를 얻기 위해 서로 다른 취득의 데이터를 결합해야 하는 이 과정을 spatial correction이라고 합니다. 즉, spatial correction은 이미지의 색상 정보를 정렬합니다. 현재 노출의 빨간색 라인 데이터는 과거 노출에서 가져온 초록색 및 파란색 라인 데이터와 결합됩니다.

Spatial Correction Stride#

이 BslSpatialCorrectionStride 매개변수는 spatial correction을 활성화 및 비활성화하고, 시작 라인과 스트라이드라는 spatial correction의 두 가지 측면을 설정하는 데 사용됩니다.

Starting Line#

Spatial correction 시작 라인은 개체가 카메라를 통과하는 방향과 관련이 있습니다.

다음 설정: BslSpatialCorrectionStride 매개변수를 양수 또는 음수 값으로 설정하여 시작 라인을 결정하고, 이를 통해 spatial correction의 방향을 결정합니다.

라인 스캔 컬러 카메라#

다음 그림은 움직임 방향에 따른 color 트리플 라인 센서의 시작 라인을 보여줍니다.

라인 스캔 컬러 카메라 움직임 방향을 통과하는 개체

컬러 트리플 라인 센서:

  • 양수 매개변수 값: 시작 라인은 파란색 라인입니다.
  • Negative parameter value: 시작 라인은 빨간색 라인입니다.

Color dual line sensor:

  • Positive parameter value: 시작 라인은 파란색/빨간색 라인입니다.
  • Negative parameter value: 시작 라인은 녹색 라인입니다.
Line Scan Mono Camera#

다음 그림은 움직임 방향에 따른 mono quad line sensor의 시작 라인을 보여줍니다.

Object Passing Line Scan Mono Camera Direction of Motion

Mono quad line sensor:

  • Positive parameter value: 시작 라인은 라인 4입니다.
  • Negative parameter value: 시작 라인은 라인 1입니다.

Mono dual line sensor:

  • Positive parameter value: 시작 라인은 라인 2입니다.
  • Negative parameter value: 시작 라인은 라인 1입니다.

Stride#

Spatial Correction stride는 이미지의 특정 영역에 대해 전체 RGB 또는 전체 HDR 데이터를 얻기 위해 올바른 라인 데이터를 결합하기 위해 버퍼링해야 하는 획득 횟수를 결정합니다.

이 BslSpatialCorrectionStride parameter는 카메라 모델에 따라 -4에서 4 사이의 범위로 설정할 수 있습니다. stride 값을 0으로 지정하면 Spatial Correction이 사실상 비활성화됩니다.

다음 표는 전체 RGB/HDR 정보를 얻는 데 필요한 stride 값과 획득 횟수 간의 관계를 보여줍니다.

라인 스캔 컬러 카메라#
Color Dual Line Sensor
Stride = 1 Full RGB = blue/red[n-1] + green[n]
Stride = -1 Full RGB = blue/red[n] + green[n-1]
Color Triple Line Sensor
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]
Line Scan Mono Camera#
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]

정보

라인 취득은 대개 incremental encoder의 신호에 의해 트리거됩니다. 라인 간 객체의 움직임과 트리거된 취득 간의 관계는 라인의 픽셀 너비와 일치하도록 설정되어야 합니다.

후광 효과 방지#

색상 정보가 올바르게 정렬되면, 아래 이미지의 오른쪽에 표시된 것처럼 취득된 이미지가 선명하고 깨끗해집니다. 서로 다른 라인에서 이미지를 취득할 때 위치 지정에 편차가 있으면, 아래 이미지의 왼쪽에 표시된 것처럼 색상 "헤일로(halo)" 현상이 발생합니다.

객체의 특정 영역이 올바르게 취득되려면 해당 이미지의 상이 센서 내의 컬러 픽셀 라인에 정확히 맺혀야 합니다.

헤일로 현상

정보

색상 헤일로 현상을 방지하려면 시스템 설계 요구사항이 올바르게 충족되었는지 확인하십시오.

Spatial Correction 방향 반전#

애플리케이션 환경에 따라 물체가 카메라를 통과하는 방향이 바뀔 수 있습니다. 또는 카메라가 물체 위에서 앞뒤로 움직일 수 있습니다. 두 경우 모두 움직임의 방향이 바뀝니다. 움직임 방향의 변경에 대한 정보는 올바른 Spatial Correction을 달성하는 데 필수적입니다.

이 정보는 I/O 라인을 통해 얻거나 카메라의 Encoder Control에서 출력되는 Encoder Reverse 1 신호를 사용할 수 있습니다.

이 BslSpatialCorrectionDirectionReversal parameter를 사용하면 Spatial Correction 방향의 반전을 트리거하는 데 사용할 신호 소스를 결정할 수 있습니다.

다음을 설정할 수 있습니다. BslSpatialCorrectionDirectionReversal 매개변수를 다음 값 중 하나로 설정합니다:

  • Off: 방향 반전이 비활성화되었습니다. Spatial Correction 방향은 설정된 양수 또는 음수에 의해 결정됩니다. BslSpatialCorrectionStride 파라미터.
  • Line1, Line2, Line3: I/O 라인 1, 2 또는 3의 신호 레벨이 High인 경우 Spatial Correction 방향이 반전됩니다.
  • EncoderReverse1: Encoder Reverse 1 신호가 High인 경우 Spatial Correction 방향이 반전됩니다.

Spatial Correction 구성#

Spatial Correction을 구성하려면:

  1. 다음 값 중 하나로 BslSpatialCorrectionStride parameter (예: 2).
  2. 필요한 경우 다음을 설정하십시오. BslSpatialCorrectionDirectionReversal parameter (예: 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를 사용하여 파라미터를 손쉽게 설정할 수 있습니다.