주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

GigE Vision 카메라를 사용한 하드웨어 트리거 수집

Image Acquisition Toolbox™는 GigE Vision® 카메라의 하드웨어 트리거 수집 기능을 제공합니다. 이 기능은 외부 트리거 신호를 통해 카메라 수집을 다른 장치(예: DAQ 장치 또는 다른 카메라)와 동기화해야 하는 애플리케이션에 유용합니다. 다른 응용 분야로는 외부 신호로 수집 프레임 속도를 제어하거나 HDR(고동적 범위) 이미징을 위한 다중 노출 이미지 시퀀스를 수집하는 것이 있습니다. 이 예제에서는 videoinput gige 인터페이스를 사용하여 프레임 속도와 노출 시간에 대한 외부 트리거 신호 제어를 허용하도록 카메라 수집을 구성하는 방법을 보여줍니다.

요구 사항 및 하드웨어 설정

  • MATLAB® R2016a 이상, Image Acquisition Toolbox 및 Image Acquisition Toolbox Support Package for GigE Vision Hardware.

  • 하드웨어 트리거 기능이 있는 GigE Vision 호환 카메라입니다. 이 예제에서는 Basler acA1300 GigE 카메라를 사용합니다.

  • GigE Vision 이미지 수집 빠른 시작 가이드에 설명된 대로 구성된, 직접 카메라 네트워크 연결을 제공하는 기가비트 이더넷 어댑터입니다.

  • 카메라 트리거 라인 입력에 트리거 신호를 제공할 수 있는 외부 트리거 설정입니다. 예를 들어, 디지털 출력이 있는 DAQ 장치, Arduino® 보드 또는 함수 생성기 장비를 사용하여 사용자 정의 트리거 신호를 출력할 수 있습니다. 트리거 신호 전압 레벨/전류 요구 사항 및 카메라 입력 라인에 대한 올바른 신호 연결에 대해서는 카메라 사용 설명서를 참조하세요. 이 예제에서는 트리거 신호를 보내도록 이미 구성된 Arduino Mega 2560 보드를 사용합니다.

카메라에 연결

원하는 비디오 형식으로 videoinput 객체를 생성하고 카메라 장치의 특정 속성에 액세스합니다. videoinput gige 어댑터를 사용하는 경우, 카메라 GenICam 기능과 파라미터 값은 videoinput 소스 속성으로 표현됩니다.

v = videoinput("gige","1","Mono8");
s = v.Source;

GigE Vision 이미지 수집 빠른 시작 가이드에 설명된 대로 최적의 스트리밍 파라미터를 결정할 수 있습니다. 이러한 값은 설정에 따라 달라집니다.

s.PacketSize = 9000;
s.PacketDelay = 17327;

즉각적인 수집으로 프레임 캡처

기본적으로 videoinput start 함수를 호출하고 하드웨어 트리거 구성을 지정하지 않으면 즉각적인 수집이 이루어집니다. 단순화를 위해 이 예제에서는 유한한 수의 프레임을 수집하여 MATLAB 작업 공간에 저장합니다.

triggerconfig(v,"immediate");

노출시간과 모드를 설정합니다.

s.ExposureMode = "Timed";
s.ExposureTimeAbs = 4000;

획득할 프레임의 수를 지정합니다.

v.FramesPerTrigger = 30;
v.TriggerRepeat = 0;

연속 버퍼링 수집을 시작하고 수집이 완료될 때까지 기다립니다.

start(v);
wait(v,10);

수집 입력 버퍼에서 수집된 프레임을 작업 공간에 저장합니다.

data = getdata(v,v.FramesAvailable);

획득한 프레임을 표시합니다.

figure;
imaqmontage(data)

수집을 중단하십시오.

stop(v)

FrameStart 트리거로 프레임 캡처

대부분의 GigE Vision 카메라는 FrameStart 하드웨어 트리거 모드를 지원합니다. 이 모드는 카메라 라인 입력에 적용되는 각 상승 에지(또는 하강 에지) 신호에 대해 프레임을 수집하도록 카메라를 구성하는 데 사용됩니다. 이 예에서는 Arduino를 사용하여 카메라의 Line1 입력에 적용되는 외부 주기적 사각파 신호를 공급합니다. 신호 주파수는 카메라 프레임 속도를 효과적으로 제어합니다.

gige 어댑터를 사용하여 하드웨어 트리거 수집을 구성하는 경우, videoinput 트리거 유형을 hardware로 설정해야 합니다. 나머지 구성은 해당 카메라 기능과 파라미터를 나타내는 videoinput 소스 속성을 사용하여 수행됩니다.GigeHardwareTriggering_03.png

획득할 총 프레임 수를 지정합니다. 외부 신호 펄스마다 한 개의 프레임이 수집됩니다.

numFrames = 30;
v.FramesPerTrigger = 1;
v.TriggerRepeat = numFrames - 1;

videoinput 트리거 유형을 hardware로 지정하세요.

triggerconfig(v,"hardware","DeviceSpecific","DeviceSpecific");

카메라를 FrameStart 트리거 모드로 구성하고 외부 트리거 신호 입력 라인과 원하는 트리거 조건을 지정합니다.

s.TriggerSelector = "FrameStart";
s.TriggerSource = "Line1";
s.TriggerActivation = "RisingEdge";
s.TriggerMode = "on";

노출시간과 모드를 설정하세요.

s.ExposureMode = "Timed";
s.ExposureTimeAbs = 4000;

연속 버퍼링 수집을 시작하고 수집이 완료될 때까지 기다립니다.

start(v);
wait(v,10);

수집 입력 버퍼에서 수집된 프레임과 타임스탬프를 작업 공간에 저장합니다.

[data2,ts2] = getdata(v,v.FramesAvailable);

획득한 프레임을 표시합니다.

figure;
imaqmontage(data2)

외부 트리거 신호의 10Hz 주파수에 해당하는 타임스탬프 차이를 플롯합니다.

figure;
plot(diff(ts2),"-x")
ylim([0 0.2]);
xlabel("Frame index");
ylabel("diff(Timestamp) (s)");

수집을 중단하십시오.

stop(v)

노출 시간을 제어하여 프레임 캡처

일부 GigE Vision 카메라 모델은 외부 신호 펄스 폭 지속 시간에 따라 각 프레임의 노출 시간을 제어하는 것을 지원합니다. 이 구성은 FrameStart 하드웨어 트리거 모드와 TriggerWidth 노출 모드를 사용하여 구현할 수 있습니다.

가능한 적용 분야로는 HDR(고동적 범위) 이미징이 있으며, 여기서 외부 트리거 신호는 서로 다른 펄스 폭 지속 시간을 갖는 펄스 시퀀스가 될 수 있습니다. 이 예에서 트리거 신호는 다양한 펄스 폭(5, 10, 20, 50ms)의 펄스를 반복해서 출력하도록 프로그래밍된 Arduino에 의해 생성되며, 펄스 간에는 50ms 지연이 있습니다. Arduino를 사용하여 사용자 정의 트리거 신호를 생성하는 방법에 대한 간단한 예는 GigE Vision 카메라에서 하드웨어 트리거 수집을 구성하는 방법?을 참조하세요.

GigeHardwareTriggering_06.png

획득할 총 프레임 수를 지정합니다. 외부 신호 펄스마다 한 개의 프레임이 수집됩니다.

numFrames = 30;
v.FramesPerTrigger = 1;
v.TriggerRepeat = numFrames - 1;

videoinput 트리거 유형을 hardware로 지정하세요.

triggerconfig(v,"hardware","DeviceSpecific","DeviceSpecific");

카메라를 FrameStart 트리거 모드로 구성하고 외부 트리거 신호 입력 라인과 원하는 트리거 조건을 지정합니다.

s.TriggerSelector = "FrameStart";
s.TriggerSource = "Line1";
s.TriggerActivation = "RisingEdge";
s.TriggerMode = "on";

노출 시간을 제어하려면 TriggerWidth 노출 모드를 구성하세요.

s.ExposureMode = "TriggerWidth";

카메라 ExposureOverlapTimeMaxAbs를 마이크로초 단위로 지정하세요.

s.ExposureOverlapTimeMaxAbs = 5000;

연속 버퍼링 수집을 시작하고 수집이 완료될 때까지 기다립니다.

start(v);
wait(v,10);

수집 입력 버퍼에서 수집된 프레임과 타임스탬프를 작업 공간에 저장합니다.

[data3,ts3] = getdata(v,v.FramesAvailable);

획득한 프레임을 표시합니다.

figure;
imaqmontage(data3)

figure;
plot(diff(ts3),"-x");
ylim([0.05 0.11]);
xlabel("Frame index");
ylabel("diff(Timestamp) (s)");

수집을 중단하십시오.

stop(v)

획득한 각 다중 노출 이미지 시퀀스는 Image Processing Toolbox™의 makehdr 함수를 사용하여 추가 처리하여 높은 동적 범위 이미지를 얻을 수 있습니다.

정리

카메라 작업이 끝나면 작업 공간을 정리하세요.

delete(v)
clear v