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

카메라 파라미터 구성#

이 항목에서는 가장 흔히 사용되는 매개변수 몇 가지에 대해 설명합니다.

Exposure Time#

노출 시간은 각 프레임마다 카메라 센서가 빛에 노출되는 시간을 의미합니다. 이는 이미지의 밝기, 모션 블러, 신호 품질에 직접적인 영향을 미치기 때문에 이미지 촬영 시 가장 중요한 매개변수 중 하나입니다.

~의 영향 Exposure Time#

노출 과정에서 센서는 광자를 수집하여 전기 신호로 변환합니다. 노출 시간이 길수록 더 많은 빛이 축적됩니다. 다음 시각화 자료는 이를 요약하여 보여줍니다:

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

노광 시간의 길이는 다음과 같은 영향을 미칩니다:

  • Brightness
    • 노출 시간을 길게 하면 밝기가 증가합니다.
    • 노출 시간을 줄이면 밝기가 줄어듭니다.
  • 모션 블러
    • 장시간 노출을 하면 움직이는 물체가 흐릿하게 나타납니다.
    • 노출 시간을 짧게 설정하면 움직이는 피사체가 마치 멈춰 있는 것처럼 보입니다.
  • 이미지 노이즈
    • 노출 시간이 매우 짧으면 노이즈가 많은 사진이 나올 수 있습니다(신호가 약함).
    • 노출 시간을 늘리면 신호 품질은 향상되지만, 모션 블러가 발생할 수 있습니다.

사용 목적에 따라 노출 시간을 설정할 때 어떤 효과를 우선시할지 결정해야 합니다. 다음 표를 참고하시기 바랍니다.

목표 권장 노출량
빠른 동작 정지 단기 노출
밝기 최대로 설정 장시간 노출
안정적인 측정 균형 잡힌 노출

구성 예제#

camera.ExposureAuto.Value = "Off"
camera.ExposureTime.Value = 3000  # Value, usually in microseconds
  • ExposureAuto = Off 수동 제어를 보장합니다.
  • ExposureTime 다음에 명시되어 있습니다. 마이크로초 (µs).

주요 핵심 사항#

노광 시간은 항상 다음 사항을 고려하여 선택해야 합니다:

  • 장면 밝기
  • 운동 속도
  • 프레임 속도 요구 사항

올바른 노출 시간을 설정하는 것은 신뢰할 수 있는 비전 시스템을 구축하는 데 있어 필수적인 단계입니다.

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#

게인은 노출 후 센서 신호의 전자적 증폭을 조절합니다. 노출 시간과 달리, 게인은 포착되는 빛의 양을 늘리는 것이 아니라 기존 신호를 증폭시킵니다. 다음 그림은 이를 요약하여 보여줍니다:

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

이득의 영향#

  • Brightness
    • 이득을 높이면 화면이 더 밝아집니다.
    • 실제 신호 강도를 높여주지는 않습니다. 이미 수신된 신호만 증폭할 뿐입니다.
  • 이미지 노이즈
    • 이득이 높을수록 신호와 잡음 모두 증폭됩니다.
    • 게인이 지나치게 높으면 영상이 거칠어집니다.
  • 상세 정보 Quality
    • 이득을 높이면 명암비와 미세한 디테일의 가시성이 떨어질 수 있습니다.

구성 예제#

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

주요 핵심 사항#

  • 노출 시간을 늘릴 수 없는 경우(예: 모션 블러가 발생할 위험이 있는 경우 등)에는 게인을 사용하십시오.
  • 화질과 신호대잡음비가 매우 중요한 경우에는 과도한 이득을 피하십시오.

일반적인 원칙: 가능한 한 높은 게인보다는 긴 노출 시간을 우선적으로 선택하십시오.

ROI#

관심 영역(ROI) 은 각 프레임마다 실제로 판독되어 전송되는 센서의 일부를 정의합니다. 기본적으로 ROI는 센서와 동일한 크기(전체 해상도)입니다. 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를 변경하려면 이미지 획득을 중지해야 합니다.

ROI 변화의 영향#

  • 프레임 속도 향상: 프레임당 데이터량이 적을수록 판독 속도가 빨라지고 프레임 속도(fps)가 높아집니다.
  • 대역폭 감소: 이는 특히 GigE 카메라의 경우 매우 중요합니다.
  • 처리 부하 감소: 이미지 크기가 작을수록 이미지 처리(OpenCV/AI) 속도가 빨라집니다.
  • 관련 영역에 집중: 장면에서 관련 없는 부분을 무시할 수 있게 해줍니다.

다음 표는 ROI가 낮을 경우 애플리케이션에 어떤 이점이 있을 수 있는지에 대한 참고 자료가 될 수 있습니다.

사용 사례 ROI가 낮을 때의 이점
작은 물체 추적하기 더 빠른 처리 속도와 더 적은 노이즈
고속 검사 프레임 속도 증가
특정 영역 내의 에지 감지 계산량 감소

구성 예제#

camera.StopGrabbing()

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

camera.StartGrabbing()

주요 핵심 사항#

ROI를 축소하는 것은 머신 비전 시스템에서 가장 효과적인 성능 향상 수단 중 하나입니다. 소스에서 데이터 양을 줄임으로써 다음과 같은 측면을 개선할 수 있습니다:

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

소프트웨어를 이용한 이미지 자르기와는 달리, ROI를 축소하면 데이터가 파이프라인으로 유입되기 전에 불필요한 데이터를 제거할 수 있습니다.

정적 결함 픽셀 보정#

결함 픽셀 보정 기능을 사용하면 센서의 개별 픽셀 간 감도 차이로 인한 영향을 최소화할 수 있습니다. 이 기능은 모든 카메라에서 지원되는 것은 아닙니다. 따라서 현재 사용 중인 기기에서 이 기능을 사용할 수 없을 가능성에 대비하는 것이 중요합니다.

정보

  • 설정하려는 속성을 식별하려면 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

주요 핵심 사항#

정적 결함 픽셀 보정을 디바이스 의존적 기능으로 취급하십시오. 사용 가능한 경우에는 이를 활용하고, 사용 불가능한 경우에는 성능 저하가 최소화되도록 처리하십시오.