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

Tonal Range#

Tonal Range camera feature를 사용하면 수동으로 명암을 조절하거나 색상 편향을 보정할 수 있습니다.

이 기능을 사용하려면 tonal range 및 image histograms의 개념을 잘 알고 있어야 합니다.

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

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

기능 사용#

대비 조절#

정보

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

명암을 수동으로 조절하려면:

  1. low contrast 또는 shifted colors와 같은 문제만 남은 상태에서 카메라가 이미 양호한 이미지를 생성하는지 확인하십시오. Tonal range 작업은 이미지가 이미 좋은 image quality을 가진 경우에만 수행해야 합니다.
    Image quality을 최적화할 때는 sequence given below을 따르십시오.
  2. 파라미터를 원하는 TonalRangeEnable 파라메터 On.
  3. 파라미터를 원하는 TonalRangeSelector 파라메터 Sum.
  4. 파라미터를 원하는 TonalRangeSourceDark 및 TonalRangeTargetDark parameters to the dark source and target values.
    If the dark target value is lower than the dark source value, contrast is increased.
  5. 파라미터를 원하는 TonalRangeSourceBright 및 TonalRangeTargetBright parameters to the bright source and target values.
    If the bright target value is greater than the bright source value, contrast is increased.

색편차 보정#

정보

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

색상 편향을 수동으로 보정하려면:

  1. low contrast 또는 shifted colors와 같은 문제만 남은 상태에서 카메라가 이미 양호한 이미지를 생성하는지 확인하십시오. Tonal range 작업은 이미지가 이미 좋은 image quality을 가진 경우에만 수행해야 합니다.
    Image quality을 최적화할 때는 sequence given below을 따르십시오.
  2. 파라미터를 원하는 TonalRangeEnable 파라메터 On.
  3. 파라미터를 원하는 TonalRangeSelector 파라메터 Red, Green, 또는 Blue, 보정하려는 색상 편향에 따라 달라집니다.
    예: 이미지에 녹색 캐스트가 있는 경우 파라미터를 다음으로 설정하십시오. Green.
  4. 파라미터를 원하는 TonalRangeSourceDark, TonalRangeTargetDark, TonalRangeSourceBright및 TonalRangeTargetBright 매개변수를 설정합니다. source and target values that align the current histogram with the other histograms.

이미지 최적화 순서#

부작용을 방지하면서 image 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 기능이 사용하는 데이터에는 포함되지 않습니다.

소스 및 타겟 값#

대비 및 색상 조정은 모두 source 값을 target 값으로 매핑하는 동일한 개념을 기반으로 합니다.

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

Source 및 Target 값 예시

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

히스토그램 스트레칭 애니메이션

Dark/Bright Source 및 Target 값#

위에서 설명한 것처럼 Tonal range 작업을 수행하려면 두 세트의 source 및 target 값을 정의해야 합니다.

  • Dark source 및 target 값은 히스토그램의 lower 끝에 위치합니다.
    이러한 값은 다음을 사용하여 지정합니다. TonalRangeSourceDark 및 TonalRangeTargetDark 매개변수.
  • Bright source 및 target 값은 히스토그램의 상단 끝에 위치합니다.
    이러한 값은 다음을 사용하여 지정합니다. TonalRangeSourceBright 및 TonalRangeTargetBright 매개변수.

모든 source 및 target 값은 0부터 최대 픽셀 값(예: 12비트 Pixel Format이 설정된 경우 4095)까지 지정할 수 있습니다. 히스토그램 스트레칭 및 확산 정도가 제한되어 있으므로 파라미터 범위도 제한될 수 있습니다.

대비 조절(흑백 및 컬러 카메라)#

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

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

좁은 톤 범위 예시

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

넓은 톤 범위 예시

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

두 source 값 사이의 영역은 이미지에 필수적이라고 생각하는 픽셀 값인 중간톤(mid-tones)을 정의합니다.

이 프로세스를 자동화하려면 Tonal Range Auto 기능을 사용하십시오.

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

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

이미지의 색상에 편차가 있는 경우, 세 개의 RGB(빨강, 초록, 파랑) 히스토그램이 정렬되지 않은 상태로 표시됩니다. 예를 들어 이미지에 붉은빛이 감도는 경우, 빨간색 히스토그램이 초록색 및 파란색 히스토그램보다 훨씬 오른쪽에 표시됩니다(아래 예시 참조).

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

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

모든 히스토그램이 늘어나고 유사한 시작점과 끝점으로 이동하도록 소스 및 타겟 값을 설정하여 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를 사용하여 파라미터를 손쉽게 설정할 수도 있습니다.