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

Digital Shift#

Digital Shift 카메라 기능을 사용하면 이미지의 픽셀 값을 곱할 수 있습니다.

이렇게 하면 이미지의 밝기가 증가합니다. 카메라가 디지털 시프트 기능을 지원하지 않는 경우 Gain 기능을 사용하여 비슷한 효과를 얻을 수 있습니다.

기능 사용#

작동 방식#

Digital Shift 계수를 n으로 설정하면 모든 픽셀 값에 대해 n만큼 논리적 왼쪽 시프트(Logical Left Shift)가 수행됩니다. 그 결과 모든 픽셀 값에 2n이 곱해집니다.

결과 픽셀 값이 현재 Pixel Format에서 가능한 최대값(예: 12비트 Pixel Format의 경우 4,095)보다 큰 경우, 해당 값은 최대값으로 설정됩니다.

자세한 내용은 아래 예시를 참조하세요.

Digital Shift 설정#

Digital Shift 계수를 설정하려면 다음 항목에 원하는 값을 입력합니다. DigitalShift 파라미터에 HTML 로그 파일(*.html)의 경로와 이름을 지정할 수 있습니다.

기본적으로 이 파라미터는 0으로 설정되어 있어 디지털 시프트가 비활성화됩니다.

예제#

예시 1: Digital Shift 1, 12비트 이미지 데이터#

12비트 Pixel Format을 사용하는 카메라에서 Digital Shift 계수를 1로 입력했다고 가정해 보겠습니다. 이 경우 다음과 같은 효과가 나타납니다.

Digital Shift 1, 12비트 이미지 데이터 출력

  • 각 12비트 이미지 데이터 워드의 최하위 비트(Least Significant Bit)가 0으로 설정됩니다.
  • 픽셀 값에 21= 2가 곱해집니다.
  • 최하위 비트가 0으로 설정되므로 카메라는 2, 4, 6, 8, 10 등 짝수 픽셀 값만 전송합니다.

예시 2: Digital Shift 2, 12비트 이미지 데이터#

12비트 Pixel Format을 사용하는 카메라에서 Digital Shift 계수를 2로 입력했다고 가정해 보겠습니다. 이 경우 다음과 같은 효과가 나타납니다.

Digital Shift 2, 12비트 이미지 데이터 출력

  • 각 12비트 이미지 데이터 워드의 하위 2개 최하위 비트가 0으로 설정됩니다.
  • 픽셀 값에 22= 4가 곱해집니다.
  • 두 개의 최하위 비트가 0으로 설정되므로 카메라는 4, 8, 12, 16, 20 등 4의 배수에 해당하는 픽셀 값만 전송합니다.

예제 3: 2만큼 Digital Shift, 8비트 이미지 데이터#

카메라의 최대 픽셀 비트 심도(Maximum Pixel Bit Depth)가 12비트이지만 현재 8비트 Pixel Format을 사용하고 있다고 가정해 보겠습니다.

이 경우 카메라는 먼저 12비트 이미지 데이터에 대해 Digital Shift 계산을 수행합니다. 그런 다음 하위 4개의 비트를 버리고 상위 8비트를 전송합니다.

Digital Shift 2, 8비트 이미지 데이터 출력

정보

다음 카메라 모델의 경우 8비트 Pixel Format이 설정되어 있으면 최대 픽셀 비트 심도와 관계없이 10비트 이미지 데이터에 대해 Digital Shift가 수행됩니다: acA720-290gm/gc, acA1440-73gm/gc, acA1920-40gm/gc, acA1920-50gm/gc, acA1440-220um/uc, acA1920-40um/uc, acA1920-155um/uc, acA2040-120um/uc, acA2440-75um/uc, acA4096-40um/uc, acA4112-30um/uc.

예제 4: 1만큼 Digital Shift, 12비트 이미지 데이터, 상위 값#

카메라가 12비트 Pixel Format을 사용하고 있다고 가정해 보겠습니다. 또한 원래 픽셀 값 중 하나가 2,839라고 가정해 보겠습니다.

Digital Shift 1회 적용, 12-bit 이미지 데이터 출력, 값 2839

이 픽셀 값에 Digital Shift를 1만큼 적용하면, 결과 값은 12-bit Pixel Format의 최대 가능 값(4096 + 1024 + 512 + 32 + 8 + 4 + 2 = 5678, 12-bit format의 최대 값: 4095)을 초과하게 됩니다. 이 경우 값은 최대 값으로 설정되며, 즉 모든 비트가 1로 설정됩니다:

Digital Shift 1회 적용, 12-bit 이미지 데이터 출력, 결과 값 4095

정보

따라서 이미지 촬영 시나리오에 비해 너무 높은 Digital Shift 팩터를 적용하지 않도록 주의해야 합니다. 그렇지 않으면 이미지의 모든 밝은 영역이 흰색으로 설정되어 이미지 정보가 손실됩니다.

샘플 코드#

// Disable digital shift
camera.DigitalShift.SetValue(0);
// Enable digital shift by 2
camera.DigitalShift.SetValue(2);
INodeMap& nodemap = camera.GetNodeMap();
// Disable digital shift
CIntegerParameter(nodemap, "DigitalShift").SetValue(0);
// Enable digital shift by 2
CIntegerParameter(nodemap, "DigitalShift").SetValue(2);
// Disable digital shift
camera.Parameters[PLCamera.DigitalShift].SetValue(0);
// Enable digital shift by 2
camera.Parameters[PLCamera.DigitalShift].SetValue(2);
/* 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 */
/* Disable digital shift */
errRes = PylonDeviceSetIntegerFeature(hdev, "DigitalShift", 0);
CHECK(errRes);
/* Enable digital shift by 2 */
errRes = PylonDeviceSetIntegerFeature(hdev, "DigitalShift", 2);
CHECK(errRes);
# Disable digital shift
camera.DigitalShift.Value = 0
# Enable digital shift by 2
camera.DigitalShift.Value = 2

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