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

Tonal Range#

Tonal Range 카메라 기능을 사용하면 수동으로 대비를 조정하거나 색상 치우침을 보정할 수 있습니다.

이 기능을 사용하려면 tonal range 및 이미지 히스토그램 개념에 대한 이해가 있어야 합니다.

Tonal Range를 자동으로 조정하려면 Tonal Range Auto 기능을 사용하십시오.

선형 또는 S-커브 함수를 사용하여 대비를 조정하려면 Brightness and Contrast 기능(사용 가능한 경우)을 사용하십시오.

기능 사용법#

대비 조정#

정보

Basler는 Tonal Range Auto 기능을 먼저 사용할 것을 권장합니다. 그 후 아래 지침에 따라 대비를 미세 조정할 수 있습니다.

수동으로 대비를 조정하는 방법:

  1. 낮은 대비 또는 색상 치우침과 같은 문제만 남은, 이미 양호한 이미지를 생성하는 상태인지 카메라를 확인하십시오. Tonal Range 작업은 이미 화질이 양호한 이미지에만 수행해야 합니다.
    화질을 최적화할 때는 아래 순서를 따르십시오.
  2. 다음 값 중 하나로 TonalRangeEnable 매개변수: On.
  3. 다음 값 중 하나로 TonalRangeSelector 매개변수: Sum.
  4. 다음 값 중 하나로 TonalRangeSourceDark 및 TonalRangeTargetDark 파라미터 설정: 어두운 소스 및 타깃 값.
    어두운 타깃 값이 하위 어두운 소스 값보다 크면 대비가 증가합니다.
  5. 다음 값 중 하나로 TonalRangeSourceBright 및 TonalRangeTargetBright 파라미터 설정: 밝은 소스 및 타깃 값.
    밝은 타깃 값이 크고 밝은 소스 값보다 크면 대비가 증가합니다.

색상 치우침 보정#

정보

Basler는 Tonal Range Auto 기능을 먼저 사용할 것을 권장합니다. 그 후 아래 지침에 따라 색상 보정을 미세 조정할 수 있습니다.

수동으로 색상 치우침을 보정하는 방법:

  1. 낮은 대비 또는 색상 치우침과 같은 문제만 남은, 이미 양호한 이미지를 생성하는 상태인지 카메라를 확인하십시오. Tonal Range 작업은 이미 화질이 양호한 이미지에만 수행해야 합니다.
    화질을 최적화할 때는 아래 순서를 따르십시오.
  2. 다음 값 중 하나로 TonalRangeEnable 매개변수: On.
  3. 다음 값 중 하나로 TonalRangeSelector 매개변수: Red, Green, 또는 Blue, 보정하려는 색상 치우침에 따라 다릅니다.
    예: 이미지에 녹색 캐스트가 있는 경우 파라미터를 다음으로 설정하십시오. Green.
  4. 다음 값 중 하나로 TonalRangeSourceDark, TonalRangeTargetDark, TonalRangeSourceBright및 TonalRangeTargetBright 파라미터를 다음으로 설정: 소스 및 타겟 값 현재 히스토그램을 다른 히스토그램에 정렬합니다.

이미지 최적화 순서#

부작용을 방지하고 이미지 Quality을 최적화하려면 다음 순서를 따르십시오.

  1. 기본 이미지 최적화를 위해 Exposure Time, Black Level 및 Gain 기능을 사용하십시오. 이미지가 과도하게 채도되지 않도록 하십시오.
  2. 컬러 카메라를 사용하는 경우 Light Source Preset, Balance White Auto 또는 Balance White 기능을 사용하여 화이트 밸런스를 조절하십시오.
  3. 대비, 색상 또는 둘 다를 최적화하려면 Tonal Range Auto 및 Tonal Range 기능을 사용하십시오.

작동 원리#

Tonal Range 작업은 이미지의 톤 분포를 그래픽으로 표현한 것, 즉 image histogram을 보면 가장 잘 이해할 수 있습니다.

Basler pylon Viewer는 Tonal Range 작업을 수행할 때 매우 유용한 Histogram 창을 제공합니다.

정보

카메라에서 활성화된 다른 기능에 따라, pylon Viewer의 Histogram 창에는 Tonal Range 기능이 실제로 사용하는 데이터가 표시되지 않을 수 있습니다.
예를 들어 Gamma 기능은 Tonal Range 작업 후에 처리됩니다. 결과적으로 감마 보정은 pylon Viewer에 표시되는 히스토그램에는 포함되지만, Tonal Range 기능이 사용하는 데이터에는 포함되지 않습니다.

소스 및 타깃 값#

대비와 Color Adjustment 모두 source 값을 target 값에 매핑하는 동일한 개념을 기반으로 합니다.

이를 설명하기 위해 source 값을 히스토그램의 "앵커"로 생각하고, target 값을 앵커가 이동하는 지점으로 생각할 수 있습니다.

소스 및 타겟 값 일러스트레이션

source 값이 target 값에 매핑되면 전체 히스토그램이 그에 따라 확산되거나 늘어납니다.

히스토그램 늘리기 애니메이션

어둡거나 밝은 소스 및 타겟 값#

위에서 설명한 것처럼 Tonal Range 작업을 수행하려면 두 가지 소스 및 타겟 값 세트를 정의해야 합니다.

  • 어두운 소스 및 타겟 값은 하위 히스토그램의 끝 부분에 위치합니다.
    이러한 값을 지정하려면 다음을 사용합니다. TonalRangeSourceDark 및 TonalRangeTargetDark 파라미터의 상태를 업데이트합니다.
  • 밝은 소스 및 타겟 값은 상단 히스토그램의 끝 부분에 위치합니다.
    이러한 값을 지정하려면 다음을 사용합니다. TonalRangeSourceBright 및 TonalRangeTargetBright 파라미터의 상태를 업데이트합니다.

모든 소스 및 타겟 값은 0부터 최대 픽셀 값(예: 12비트 Pixel Format이 설정된 경우 4095)까지 지정할 수 있습니다. 히스토그램 늘리기 및 확산 정도가 제한되므로 매개변수 범위도 제한될 수 있습니다.

대비 조정(모노 및 컬러 카메라)#

Tonal Range 기능을 지원하는 모든 카메라에서 이 기능을 사용하여 대비를 조절할 수 있습니다.

대비가 낮은 이미지는 톤 범위가 좁습니다.

좁은 Tonal Range 예시

Tonal Range 기능을 사용하면 Tonal Range를 수동으로 넓혀 대비를 높일 수 있습니다.

넓은 Tonal Range 예시

Tonal Range를 넓히려면 dark source value를 더 낮은 target 값에 매핑하고 bright source value를 더 높은 target 값에 매핑합니다.

두 source 값 사이의 영역은 미드톤, 즉 이미지에 필수적이라고 판단되는 픽셀 값을 정의합니다.

이 과정을 자동화하려면 Tonal Range Auto 기능을 사용하십시오.

색상 보정(컬러 카메라 전용)#

Tonal Range 기능을 지원하는 컬러 카메라에서는 이 기능을 사용하여 색상 치우침을 보정할 수도 있습니다.

이미지의 색상이 치우친 경우, 세 개의 RGB(빨간색, 초록색, 파란색) 히스토그램이 정렬되지 않은 상태로 나타납니다. 예를 들어 이미지에 붉은빛이 도는 경우, 빨간색 히스토그램이 초록색 및 파란색 히스토그램보다 오른쪽으로 훨씬 더 치우쳐 표시됩니다(아래 예시 참조).

Tonal Range 기능을 사용하면 RGB 히스토그램을 수동으로 정렬하여 색상 치우침을 줄일 수 있습니다.

RGB 히스토그램 정렬 애니메이션

모든 히스토그램이 늘어나고 유사한 시작점 및 종료점으로 이동하도록 source 및 target 값을 설정하여 RGB 히스토그램을 정렬할 수 있습니다.

이 과정을 자동화하려면 Tonal Range Auto 기능을 사용하십시오.

샘플 코드#

// Enable tonal range adjustments
camera.TonalRangeEnable.SetValue(TonalRangeEnable_On);
// Specify that the summed RGB pixel values are used for tonal range adjustments
camera.TonalRangeSelector.SetValue(TonalRangeSelector_Sum);
// Set the dark source and target values
camera.TonalRangeSourceDark.SetValue(30);
camera.TonalRangeTargetDark.SetValue(0);
// Set the bright source and target values
camera.TonalRangeSourceBright.SetValue(240);
camera.TonalRangeTargetBright.SetValue(255);
INodeMap& nodemap = camera.GetNodeMap();
// Enable tonal range adjustments
CEnumParameter(nodemap, "TonalRangeEnable").SetValue("On");
// Specify that the summed RGB pixel values are used for tonal range adjustments
CEnumParameter(nodemap, "TonalRangeSelector").SetValue("Sum");
// Set the dark source and target values
CIntegerParameter(nodemap, "TonalRangeSourceDark").SetValue(30);
CIntegerParameter(nodemap, "TonalRangeTargetDark").SetValue(0);
// Set the bright source and target values
CIntegerParameter(nodemap, "TonalRangeSourceBright").SetValue(240);
CIntegerParameter(nodemap, "TonalRangeTargetBright").SetValue(255);
// Enable tonal range adjustments
camera.Parameters[PLCamera.TonalRangeEnable].SetValue(PLCamera.TonalRangeEnable.On);
// Specify that the summed RGB pixel values are used for tonal range adjustments
camera.Parameters[PLCamera.TonalRangeSelector].SetValue(PLCamera.TonalRangeSelector.Sum);
// Set the dark source and target values
camera.Parameters[PLCamera.TonalRangeSourceDark].SetValue(30);
camera.Parameters[PLCamera.TonalRangeTargetDark].SetValue(0);
// Set the bright source and target values
camera.Parameters[PLCamera.TonalRangeSourceBright].SetValue(240);
camera.Parameters[PLCamera.TonalRangeTargetBright].SetValue(255);
/* 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 tonal range adjustments */
errRes = PylonDeviceFeatureFromString(hdev, "TonalRangeEnable", "On");
CHECK(errRes);
/* Specify that the summed RGB pixel values are used for tonal range adjustments */
errRes = PylonDeviceFeatureFromString(hdev, "TonalRangeSelector", "Sum");
CHECK(errRes);
/* Set the dark source and target values */
errRes = PylonDeviceSetIntegerFeature(hdev, "TonalRangeSourceDark", 30);
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "TonalRangeTargetDark", 0);
CHECK(errRes);
/* Set the bright source and target values */
errRes = PylonDeviceSetIntegerFeature(hdev, "TonalRangeSourceBright", 240);
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "TonalRangeTargetBright", 255);
CHECK(errRes);
# Enable tonal range adjustments
camera.TonalRangeEnable.Value = "On"
# Specify that the summed RGB pixel values are used for tonal range adjustments
camera.TonalRangeSelector.Value = "Sum"
# Set the dark source and target values
camera.TonalRangeSourceDark.Value = 30
camera.TonalRangeTargetDark.Value = 0
# Set the bright source and target values
camera.TonalRangeSourceBright.Value = 240
camera.TonalRangeTargetBright.Value = 255

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