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

Pixel Beyond#

Pixel Beyond camera feature를 사용하면 카메라가 출력하는 이미지의 해상도를 줄일 수 있습니다.

이 기능은 Binning 기능과 유사하지만, 해상도를 더욱 세밀하게 조절할 수 있습니다.

자세한 내용은 Basler 웹사이트의 기능 설명을 참조하세요.

기능 사용법#

Pixel Beyond를 사용하는 이유#

Pixel Beyond 기능은 Binning 기능과 유사하게 작동합니다. 카메라는 인접한 픽셀들의 픽셀 값을 결합하며, 이를 통해 시야각(Field of View)을 변경하지 않고도 해상도를 효과적으로 줄입니다.

애플리케이션과 이미지 센서의 특성에 따라 다음과 같은 이점을 얻을 수 있습니다.

  • 광 반응성 향상
  • 데이터 양 감소
  • 프레임 레이트 증가
  • 신호 대 잡음비(SNR) 향상
  • 다른 센서의 해상도 시뮬레이션 기능. 이를 통해 예를 들어 비전 시스템을 재설계하지 않고도 단종된 센서를 교체할 수 있습니다.

Binning 기능은 정수(integer) 단위로만 해상도를 줄일 수 있는 반면 (예: 2x2 또는 3x3 binning 사용), Pixel Beyond 기능은 부동 소수점(float) Scaling 값을 사용하여 해상도를 조절할 수 있으므로 더 큰 유연성을 제공합니다.

또한, 다른 Scaling 알고리즘과 달리 결과 이미지의 EMVA data는 보간법(interpolation)의 영향을 받지 않습니다.

Pixel Beyond 구성#

Pixel Beyond를 구성하려면:

  1. 카메라가 대기 상태(유휴 상태)인지, 즉 이미지를 캡처하고 있지 않은지 확인하세요.
  2. 컬러 카메라의 경우, pixel format을 non-Bayer 컬러 pixel format, 즉 사용 가능한 RGB, BGR 또는 YUV pixel format 중 하나로 설정하십시오.
  3. 다음 값 중 하나로 BslScalingFactor 파라미터를 1.0에서 2.8 사이의 값으로 설정합니다.

계수(Factor)가 1.0일 경우 이미지 해상도는 유지됩니다. 1.0보다 큰 계수는 이미지의 너비와 높이를 비례하여 줄입니다.

  • Width * (1 / BslScalingFactor) = Scaled Width
  • Height * (1 / BslScalingFactor) = Scaled Height

Example: Image ROI의 너비가 1936으로 설정되어 있고 Scaling 계수를 1.75로 설정했다고 가정해 보겠습니다. 카메라가 출력하는 이미지의 너비는 1936 * (1 / 1.75) = 1106이 됩니다.

정보

카메라 모델에 따라 값의 반올림 방식이 다르므로, 실제 적용되는 이미지 크기는 계산된 이미지 크기와 다를 수 있습니다.

Scaling Factor 계산 방법#

Image Size#

특정 크기로 이미지를 스케일링해야 하고 Scaling 계수를 확인해야 하는 경우 다음 공식을 사용하십시오.

Width / Desired Width = BslScalingFactor

스케일링은 항상 비례하여 수행되므로 너비만 지정하면 됩니다.

Example: Image ROI가 1936 x 1216이고 이미지를 800 x 600으로 스케일링하려는 경우를 가정해 보겠습니다. 적절한 Scaling 계수는 1936 / 800 = 2.42입니다.

Pixel Size#

특정 픽셀 크기의 단종된 센서를 교체해야 하고 Scaling 계수를 확인해야 하는 경우 다음 공식을 사용하십시오.

이전 센서 픽셀 크기 / 현재 센서 픽셀 크기 = BslScalingFactor

예시: 픽셀 크기가 7.4 µm인 ICX424 센서를 a2A1920-51gcPRO (픽셀 크기 3.45 µm)의 IMX392 센서로 교체하려고 한다고 가정해 보겠습니다. 적절한 Scaling 계수는 7.4 / 3.45 = 2.14입니다.

샘플 코드#

// Set scaling to 1.5, i.e., set the resolution
// to (1 / 1.5) = 66 % of the original resolution
camera.BslScalingFactor.SetValue(1.5);
// Disable scaling
camera.BslScalingFactor.SetValue(1.0);
INodeMap& nodemap = camera.GetNodeMap();
// Set scaling to 1.5, i.e., set the resolution
// to (1 / 1.5) = 66 % of the original resolution
CFloatParameter(nodemap, "BslScalingFactor").SetValue(1.5);
// Disable scaling
CFloatParameter(nodemap, "BslScalingFactor").SetValue(1.0);
// Set scaling to 1.5, i.e., set the resolution
// to (1 / 1.5) = 66 % of the original resolution
camera.Parameters[PLCamera.BslScalingFactor].SetValue(1.5);
// Disable scaling
camera.Parameters[PLCamera.BslScalingFactor].SetValue(1.0);
/* 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 scaling to 1.5, i.e., set the resolution */
/* to (1 / 1.5) = 66 % of the original resolution */
errRes = PylonDeviceSetFloatFeature(hdev, "BslScalingFactor", 1.5);
CHECK(errRes);
/* Disable scaling */
errRes = PylonDeviceSetFloatFeature(hdev, "BslScalingFactor", 1.0);
CHECK(errRes);
# Set scaling to 1.5, i.e., set the resolution
# to (1 / 1.5) = 66 % of the original resolution
camera.BslScalingFactor.Value = 1.5
# Disable scaling
camera.BslScalingFactor.Value = 1.0

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