콘텐츠로 바로 가기
STAGING SERVER
DEVELOPMENT SERVER

Spatial Correction#

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

정보

기능 사용#

작동 방식#

Basler racer 2 컬러 카메라는 컬러 듀얼 라인 센서와 컬러 트리플 라인 센서의 두 가지 서로 다른 센서 타입이 탑재되어 있습니다.

정보

카메라 모델의 센서 타입을 확인하려면 해당 카메라 모델 항목을 참조하십시오. 카메라 항목은 면 및 라인 스캔 카메라 섹션에서 확인할 수 있습니다.

컬러 듀얼 라인 센서에는 두 개의 픽셀 라인이 있고 컬러 트리플 라인 센서에는 서로 인접하여 배열된 세 개의 픽셀 라인이 있습니다. 듀얼 라인 센서의 라인들은 서로 직접 인접해 있는 반면, 트리플 라인 센서의 라인들은 틈(gap)을 두고 떨어져 있습니다.

컬러 카메라 센서면

각 라인은 카메라를 통과하는 모든 물체에 대해 서로 다른 시야(Field of View)를 갖습니다. 획득이 트리거될 때마다 센서의 모든 라인이 동시에 노출됩니다. 즉, 단일 노출 시 센서의 각 라인은 물체의 서로 다른 영역을 획득합니다.

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

트리플 라인 센서의 시야

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

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

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

Spatial Correction Stride#

The BslSpatialCorrectionStride 파라미터는 Spatial Correction을 활성화 및 비활성화하고 Spatial Correction의 시작 라인과 스트라이드(stride)라는 두 가지 측면을 설정하는 데 사용됩니다.

Starting Line#

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

설정 BslSpatialCorrectionStride 파라미터를 양수 또는 음수로 설정하면 시작 라인이 결정되며, 결과적으로 Spatial Correction의 방향이 결정됩니다.

라인 스캔 컬러 카메라#

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

라인 스캔 컬러 카메라의 모션 방향 통과 물체

컬러 트리플 라인 센서:

  • 양의 파라미터 값: 시작 라인은 파란색 라인입니다.
  • 음의 파라미터 값: 시작 라인은 빨간색 라인입니다.

컬러 듀얼 라인 센서:

  • 양의 파라미터 값: 시작 라인은 파란색/빨간색 라인입니다.
  • 매음수인 파라미터 값: 시작 라인은 녹색 라인입니다.
라인 스캔 흑백 카메라#

다음 그림은 움직임 방향에 따른 흑백 쿼드 라인 센서의 시작 라인을 보여줍니다.

물체가 지나가는 라인 스캔 흑백 카메라의 움직임 방향

흑백 쿼드 라인 센서:

  • 양수인 파라미터 값: 시작 라인은 라인 4입니다.
  • 매음수인 파라미터 값: 시작 라인은 라인 1입니다.

흑백 듀얼 라인 센서:

  • 양수인 파라미터 값: 시작 라인은 라인 2입니다.
  • 매음수인 파라미터 값: 시작 라인은 라인 1입니다.

Stride#

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

The 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]
라인 스캔 흑백 카메라#
흑백 듀얼 라인 센서
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 Effect) 방지#

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

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

할로 효과

정보

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

Spatial Correction 방향 반전#

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

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

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

다음을 설정할 수 있습니다. BslSpatialCorrectionDirectionReversal 파라미터를 설정하십시오:

  • Off: 방향 반전이 비활성화되었습니다. Spatial Correction 방향은 에 설정된 양수 또는 음수 값에 의해 결정됩니다. BslSpatialCorrectionStride 파라미터에 HTML 로그 파일(*.html)의 경로와 이름을 지정할 수 있습니다.
  • 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를 사용하여 파라미터를 손쉽게 설정할 수도 있습니다.