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

Stacked Zone Imaging#

Stacked Zone Imaging camera feature를 사용하면 단일 이미지로 전송될 센서 어레이의 영역을 최대 8개까지 정의할 수 있습니다.

해당 영역의 픽셀 데이터만 전송됩니다. 이를 통해 카메라의 frame rate가 향상됩니다.

기능 사용법#

작동 원리#

Stacked Zone Imaging 기능을 사용하면 센서 어레이에 너비가 동일한 수직 정렬 영역을 최대 8개까지 정의할 수 있습니다. 이미지가 획득되면 정의된 영역 내의 픽셀 정보만 센서에서 읽혀집니다. 그런 다음 픽셀 정보가 적층되어 단일 이미지로 전송됩니다.

Stacked Zone Imaging 예시

영역은 항상 너비가 동일하며 수직으로 정렬됩니다. ROI 영역을 구성하려면 Basler에서는 다음 절차를 권장합니다.

  1. 모든 영역에 유효한 너비와 수평 오프셋을 정의합니다.
  2. 개별 영역의 높이와 수직 오프셋을 정의합니다.

Stacked Zone Imaging 구성#

  1. 사용 가능한 경우 Center X and Center Y 및 Decimation 기능을 비활성화합니다.
  2. 다음 값 중 하나로 StackedZoneImagingEnable 매개변수: true.
    Stacked Zone Imaging 기능이 활성화되었으며 구성할 수 있습니다.
  3. 다음 값 중 하나로 OffsetX 파라미터를 원하는 수평 오프셋으로 설정합니다. 이 값은 다음 항목에 적용됩니다. 모든 영역.
  4. 다음 값 중 하나로 Width 파라미터를 원하는 영역 너비로 설정합니다. 이 값은 다음 항목에 적용됩니다. 모든 영역.
  5. 다음 값 중 하나로 StackedZoneImagingIndex 예를 들어 1과 같이 구성하려는 영역에 파라미터를 설정합니다.
  6. 다음 값 중 하나로 StackedZoneImagingZoneEnable 매개변수: true 단계 4에서 선택한 영역을 활성화합니다.
  7. 다음 값 중 하나로 StackedZoneImagingZoneOffsetY 파라미터를 원하는 수직 오프셋으로 설정합니다. 이 값은 4단계에서 선택한 영역에 적용됩니다.
  8. 다음 값 중 하나로 StackedZoneImagingZoneHeight 원하는 영역 높이로 파라미터를 설정합니다.
    값이 단계 4에서 선택한 영역에 적용됩니다.
  9. 구성하려는 각 영역에 대해 4단계부터 7단계까지 반복합니다.

Stacked Zone Imaging 사용 시 고려 사항#

  • 원하는 순서대로 영역을 활성화할 수 있습니다. 예를 들어 영역 2, 4, 6을 활성화하고 영역 1, 3, 5를 비활성화할 수 있습니다.
  • 센서 주위에 영역을 자유롭게 배치할 수 있습니다. 예를 들어 영역 1을 하단 근처에, 영역 3을 상단 근처에, 영역 2를 중간에 배치할 수 있습니다. 그러나 카อล라는 항상 센서의 가장 상단 영역에서 픽셀 데이터 읽기 및 전송을 시작한 다음 하단쪽으로 진행합니다.
  • 수직으로 겹치는 영역을 정의할 수 있습니다. 두 영역이 겹치면 병합된 단일 영역으로 전송됩니다. 겹치는 영역의 픽셀 데이터는 한 번만 읽혀서 전송됩니다.
  • 다음을 설정할 수 있습니다. StackedZoneImagingZoneOffsetY 및 StackedZoneImagingZoneHeight 모노 카메라는 1씩 증가하고 컬러 카메라는 2씩 증가하는 파라미터입니다. 컬러 카메라의 경우 파라미터 값이 짝수여야 합니다.
  • Stacked Zone Imaging 기능이 활성화되면 다음 파라미터가 읽기 전용으로 전환됩니다.
    • OffsetY
      파라미터가 가장 상단 영역의 수직 오프셋으로 설정됩니다.
    • Height
      파라미터가 최종 이미지의 높이, 즉 모든 영역의 높이의 합으로 설정됩니다.
    • CenterY
  • Stacked Zone Imaging 기능을 활성화한 다음 Binning을 활성화하면 적층된 영역의 위치와 크기가 자동으로 조정됩니다. 파라미터 값은 해당 binning 팩터로 나누어지고 내림 처리됩니다.
  • Stacked Zone Imaging 기능을 사용한 후 모든 영역을 비활성화하면 Image ROI의 크기와 위치가 마지막으로 비활성화된 영역의 크기와 위치로 설정됩니다. 예를 들어 영역 0, 1, 2가 활성화되어 있다고 가정해 보겠습니다. 그런 다음 2, 1, 0 순서로 영역을 비활성화합니다. 결과적으로 Image ROI의 크기와 위치는 비활성화된 영역 0의 크기와 위치로 설정됩니다.

샘플 코드#

// Enable stacked zone imaging
camera.StackedZoneImagingEnable.SetValue(true);
// Configure width and offset X for all zones
camera.Width.SetValue(200);
camera.OffsetX.SetValue(100);
// Select zone 1
camera.StackedZoneImagingIndex.SetValue(1);
// Enable the selected zone
camera.StackedZoneImagingZoneEnable.SetValue(true);
// Set the vertical offset for the selected zone
camera.StackedZoneImagingZoneOffsetY.SetValue(100);
// Set the height for the selected zone
camera.StackedZoneImagingZoneHeight.SetValue(100);
// Select zone 2
camera.StackedZoneImagingIndex.SetValue(2);
// Enable the selected zone
camera.StackedZoneImagingZoneEnable.SetValue(true);
// Set the offset Y for the selected zone
camera.StackedZoneImagingZoneOffsetY.SetValue(250);
// Set the height for the selected zone
camera.StackedZoneImagingZoneHeight.SetValue(200);
INodeMap& nodemap = camera.GetNodeMap();
// Enable stacked zone imaging
CBooleanParameter(nodemap, "StackedZoneImagingEnable").SetValue(true);
// Configure width and offset X for all zones
CIntegerParameter(nodemap, "Width").SetValue(200);
CIntegerParameter(nodemap, "OffsetX").SetValue(100);
// Select zone 1
CIntegerParameter(nodemap, "StackedZoneImagingIndex").SetValue(1);
// Enable the selected zone
CBooleanParameter(nodemap, "StackedZoneImagingZoneEnable").SetValue(true);
// Set the vertical offset for the selected zone
CIntegerParameter(nodemap, "StackedZoneImagingZoneOffsetY").SetValue(100);
// Set the height for the selected zone
CIntegerParameter(nodemap, "StackedZoneImagingZoneHeight").SetValue(100);
// Select zone 2
CIntegerParameter(nodemap, "StackedZoneImagingIndex").SetValue(2);
// Enable the selected zone
CBooleanParameter(nodemap, "StackedZoneImagingZoneEnable").SetValue(true);
// Set the offset Y for the selected zone
CIntegerParameter(nodemap, "StackedZoneImagingZoneOffsetY").SetValue(250);
// Set the height for the selected zone
CIntegerParameter(nodemap, "StackedZoneImagingZoneHeight").SetValue(200);
// Enable stacked zone imaging
camera.Parameters[PLCamera.StackedZoneImagingEnable].SetValue(true);
// Configure width and offset X for all zones
camera.Parameters[PLCamera.Width].SetValue(200);
camera.Parameters[PLCamera.OffsetX].SetValue(100);
// Select zone 1
camera.Parameters[PLCamera.StackedZoneImagingIndex].SetValue(1);
// Enable the selected zone
camera.Parameters[PLCamera.StackedZoneImagingZoneEnable].SetValue(true);
// Set the vertical offset for the selected zone
camera.Parameters[PLCamera.StackedZoneImagingZoneOffsetY].SetValue(100);
// Set the height for the selected zone
camera.Parameters[PLCamera.StackedZoneImagingZoneHeight].SetValue(100);
// Select zone 2
camera.Parameters[PLCamera.StackedZoneImagingIndex].SetValue(2);
// Enable the selected zone
camera.Parameters[PLCamera.StackedZoneImagingZoneEnable].SetValue(true);
// Set the offset Y for the selected zone
camera.Parameters[PLCamera.StackedZoneImagingZoneOffsetY].SetValue(250);
// Set the height for the selected zone
camera.Parameters[PLCamera.StackedZoneImagingZoneHeight].SetValue(200);
/* 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 */
/* Enable stacked zone imaging */
errRes = PylonDeviceSetBooleanFeature(hdev, "StackedZoneImagingEnable", 1);
CHECK(errRes);
/* Configure width and offset X for all zones */
errRes = PylonDeviceSetIntegerFeature(hdev, "Width", 200);
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "OffsetX", 100);
CHECK(errRes);
/* Select zone 1 */
errRes = PylonDeviceSetIntegerFeature(hdev, "StackedZoneImagingIndex", 1);
CHECK(errRes);
/* Enable the selected zone */
errRes = PylonDeviceSetBooleanFeature(hdev, "StackedZoneImagingZoneEnable", 1);
CHECK(errRes);
/* Set the vertical offset for the selected zone */
errRes = PylonDeviceSetIntegerFeature(hdev, "StackedZoneImagingZoneOffsetY", 100);
CHECK(errRes);
/* Set the height for the selected zone */
errRes = PylonDeviceSetIntegerFeature(hdev, "StackedZoneImagingZoneHeight", 100);
CHECK(errRes);
/* Select zone 2 */
errRes = PylonDeviceSetIntegerFeature(hdev, "StackedZoneImagingIndex", 2);
CHECK(errRes);
/* Enable the selected zone */
errRes = PylonDeviceSetBooleanFeature(hdev, "StackedZoneImagingZoneEnable", 1);
CHECK(errRes);
/* Set the offset Y for the selected zone */
errRes = PylonDeviceSetIntegerFeature(hdev, "StackedZoneImagingZoneOffsetY", 250);
CHECK(errRes);
/* Set the height for the selected zone */
errRes = PylonDeviceSetIntegerFeature(hdev, "StackedZoneImagingZoneHeight", 200);
CHECK(errRes);
# Enable stacked zone imaging
camera.StackedZoneImagingEnable.Value = True
# Configure width and offset X for all zones
camera.Width.Value = 200
camera.OffsetX.Value = 100
# Select zone 1
camera.StackedZoneImagingIndex.Value = 1
# Enable the selected zone
camera.StackedZoneImagingZoneEnable.Value = True
# Set the vertical offset for the selected zone
camera.StackedZoneImagingZoneOffsetY.Value = 100
# Set the height for the selected zone
camera.StackedZoneImagingZoneHeight.Value = 100
# Select zone 2
camera.StackedZoneImagingIndex.Value = 2
# Enable the selected zone
camera.StackedZoneImagingZoneEnable.Value = True
# Set the offset Y for the selected zone
camera.StackedZoneImagingZoneOffsetY.Value = 250
# Set the height for the selected zone
camera.StackedZoneImagingZoneHeight.Value = 200

또한 pylon Viewer를 사용하여 파라미터를 손쉽게 설정할 수 있습니다.