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

카메라 파라미터 구성#

이 항목에서는 가장 일반적으로 사용되는 몇 가지 파라미터에 대해 설명합니다.

Exposure Time#

Exposure Time은 각 프레임마다 카메라 센서가 빛에 노출되는 시간을 정의합니다. 이는 이미지 밝기, 모션 블러 및 신호 Quality에 직접적인 영향을 미치기 때문에 이미지 취득에서 가장 중요한 파라미터 중 하나입니다.

Effects of Exposure Time#

노출되는 동안 센서는 광자를 수집하여 전기 신호로 변환합니다. Exposure Time이 길어질수록 더 많은 빛이 누적됩니다. 다음 시각 자료는 이를 요약한 것입니다.

Short exposure → less light → darker image
Long exposure  → more light → brighter image

Exposure Time의 길이는 다음과 같은 영향을 미칩니다.

  • Brightness
    • 노출이 길어지면 밝기가 증가합니다.
    • 노출이 짧아지면 밝기가 감소합니다.
  • 모션 블러
    • 노출이 길면 움직이는 물체가 흐리게 나타납니다.
    • 노출이 짧으면 움직이는 물체가 멈춘 것처럼 나타납니다.
  • 이미지 노이즈
    • 매우 짧은 노출은 노이즈가 있는 이미지(낮은 신호)를 초래할 수 있습니다.
    • 노출을 길게 하면 신호 Quality가 향상되지만 모션 블러가 발생할 수 있습니다.

어플리케이션에 따라 Exposure Time을 지정할 때 어떤 효과에 우선순위를 둘지 결정해야 합니다. 다음 표가 지침이 될 수 있습니다.

목표 권장 노출
빠른 움직임 고정 짧은 노출
밝기 극대화 긴 노출
안정적인 측정 균형 잡힌 노출

구성 예제#

camera.ExposureAuto.Value = "Off"
camera.ExposureTime.Value = 3000  # Value, usually in microseconds
  • ExposureAuto = Off 수동 제어를 보장합니다.
  • ExposureTime 에서 지정됩니다. 마이크로초(µs).

주요 핵심 사항#

Exposure Time은 항상 다음 요소들과 연관하여 선택해야 합니다.

  • 장면의 밝기
  • 움직임의 속도
  • 프레임 레이트 요구 사항

올바른 Exposure Time을 지정하는 것은 신뢰할 수 있는 비전 시스템을 구축하는 데 있어 기본적인 단계입니다.

camera.ExposureAuto.Value = "Off"
camera.ExposureTime.Value = 3000  # Value is in microseconds. Check ValueRange for valid values.
#alternatively:
camera.ExposureTimeAbs.SetValue(3000, pylon.FloatValueCorrection_ClipToRange)

Gain#

Gain은 노출 후 센서 신호의 전자적 증폭을 제어합니다. Exposure Time과 달리 Gain은 캡처된 빛의 양을 늘리지 않고 기존 신호를 증폭합니다. 다음 시각 자료는 이를 요약한 것입니다.

Low gain  → weak amplification → darker but cleaner image
High gain → strong amplification → brighter but noisier image

Effects of Gain#

  • Brightness
    • Gain을 높이면 이미지가 더 밝아집니다.
    • 실제 신호 강도 자체를 증가시키지 않으며, 이미 캡처된 내용만 증폭합니다.
  • 이미지 노이즈
    • 더 높은 Gain은 신호와 노이즈를 모두 증폭합니다.
    • 과도한 Gain은 이미지를 거칠게 만듭니다.
  • 디테일 Quality
    • 높은 Gain은 대비와 미세 세부 정보의 가시성을 저하시킬 수 있습니다.

구성 예제#

camera.GainAuto.Value = "Off"
camera.Gain.Value = 5

주요 핵심 사항#

  • Exposure Time을 늘릴 수 없을 때 (예: 모션 블러 발생 위험 등으로 인해) Gain을 사용하십시오.
  • 이미지 Quality와 신호 대 잡음비가 매우 중요한 경우 과도한 Gain을 피하십시오.

일반적인 규칙: 가능한 경우 높은 Gain보다 긴 Exposure Time을 선호하십시오.

ROI#

ROI(Region of Interest)는 각 프레임마다 실제로 읽혀지고 전송되는 센서의 영역을 정의합니다. 기본적으로 ROI는 센서와 동일한 크기(전체 해상도)입니다. 너비와 높이를 변경하여 장면의 관련 부분에만 집중할 수 있습니다. 다음 시각 자료는 이를 요약한 것입니다.

Full sensor → large image → more data
Part of the sensor → cropped image → less data

ROI를 줄이면 지정된 영역 외곽의 픽셀은 읽혀지거나 전송되지 않습니다.

다음 항목을 사용하여 ROI를 조정할 수 있습니다. Width, Height, OffsetX 및 OffsetY 매개변수. Width + OffsetX 제한을 받습니다 MaxWidth 및 Height + OffsetY 제한을 받습니다 MaxHeight.

정보

  • ROI 치수는 하드웨어 제약(증분, 정렬)의 적용을 받습니다.
  • 최대 ROI는 전체 센서 해상도와 같습니다.
  • ROI를 변경하려면 이미지 취득을 중지해야 합니다.

Effects of ROI Changes#

  • 프레임 레이트 증가: 프레임당 데이터가 줄어들면 더 빠른 리드아웃과 더 높은 프레임 레이트(fps)를 얻을 수 있습니다.
  • 대역폭 감소: 이는 GigE 카메라에 특히 중요합니다.
  • 프로세싱 부하 감소: 더 작은 이미지를 통해 더 빠른 이미지 처리(OpenCV/AI)가 가능합니다.
  • 관심 영역 집중: 장면에서 관련 없는 부분을 무시할 수 있습니다.

다음 표는 더 작은 ROI가 애플리케이션에 어떻게 도움이 되는지 가이드를 제공합니다.

사용 사례 더 작은 ROI의 이점
작은 개체 추적 더 빠른 처리 및 노이즈 감소
고속 검사 프레임 속도 증가
특정 영역의 에지 검출 연산량 감소

구성 예제#

camera.StopGrabbing()

camera.Width.Value = 640
camera.Height.Value = 480

camera.StartGrabbing()

주요 핵심 사항#

ROI 축소는 머신 비전 시스템에서 가장 효과적인 성능 향상 도구 중 하나입니다. 소스에서 데이터 양을 줄임으로써 다음 측면이 향상됩니다.

  • 처리량
  • Latency
  • 시스템 확장성

소프트웨어를 통한 이미지 자르기와 달리, ROI를 줄이면 데이터가 파이프라인으로 들어가기 전에 불필요한 데이터가 제거됩니다.

Static Defect Pixel Correction#

Defect Pixel Correction을 사용하면 센서 개별 픽셀의 감도 차이로 인한 영향을 최소화할 수 있습니다. 이 기능은 모든 카메라에서 지원되는 것은 아닙니다. 따라서 현재 장치에서 지원되지 않을 경우에 대비하는 것이 중요합니다.

정보

  • 설정하려는 속성을 식별하려면 pylon.StaticDefectPixelCorrection (각각 camera.NodeMap.
  • 설정하려는 속성을 식별하려면 ListType_Factory 공장 제공 결함 픽셀 읽기.
  • 설정하려는 속성을 식별하려면 ListType_User 사용자 지정 결함 픽셀 읽기/업데이트.
  • 예외 처리 pylon.RuntimeException 및 pylon.InvalidArgumentException 지원되지 않는 모델의 경우.

구성 예제#

from pypylon import pylon

with pylon.InstantCamera(pylon.FirstFound) as camera:
    # Read the factory defect pixel list.
    factory_ok, factory_pixels = pylon.StaticDefectPixelCorrection.GetDefectPixelList(
        camera.NodeMap,
        [],
        pylon.StaticDefectPixelCorrection.ListType_Factory,
    )

    # Build/update the user list as (x, y) or (x, y, type) tuples.
    user_pixels = [(100, 200), (300, 400, 0)]

    try:
        normalize_ok, normalized_pixels = pylon.StaticDefectPixelCorrection.NormalizePixelList(
            camera.NodeMap,
            user_pixels,
        )

        set_ok, written_pixels = pylon.StaticDefectPixelCorrection.SetDefectPixelList(
            camera.NodeMap,
            normalized_pixels,
            pylon.StaticDefectPixelCorrection.ListType_User,
        )

        get_ok, read_back_pixels = pylon.StaticDefectPixelCorrection.GetDefectPixelList(
            camera.NodeMap,
            [],
            pylon.StaticDefectPixelCorrection.ListType_User,
        )
    except (pylon.RuntimeException, pylon.InvalidArgumentException):
        # Camera does not provide this feature.
        pass

주요 핵심 사항#

정적 결함 픽셀 보정을 장치 종속 기능으로 취급하세요. 사용 가능한 경우 사용하고, 사용할 수 없는 경우 적절하게 대체 동작을 수행하도록 하세요.