2013-04-01 2 views
2

1/0.14 초의 일정 비율로 외부 소스에 의해 트리거되는 카메라를 얻었으며 Matlab for 루프를 사용하여 실시간 측정을 위해 시간을 측정 한 사진을 찍습니다. 그러나 "getsnapshot"을 1 번 실행하는 데 소요되는 시간은 매번 매우 다릅니다. 때로는 0.14 초 미만의 사진 1 장을 가져 오기도하고 때로는 사진을 찍는 데 0.5 초 정도 걸릴 수도 있습니다. 어쨌든 "getsnapshot" 을 외부 트리거와 동기화 할 수 있습니까? 또는 적어도 "getsnapshot"을 정확히 시간 지정합니까? 이것은 왜 담당자 아마,Matlab : 실시간 이벤트 분석을위한 정확한 시간 스냅 샷

vid = videoinput('camera'); 
preview(vid); 

for i=1:100 
data=getsnapshot(vid); 
%...data processing... 
%.... 
clear data 
end 

답변

2

첫째, preview(vid) 줄을 삭제 :

다음은 내 코드입니다. 속도가 이상하다. 데이터를 가져올 때 CPU에서 자원을 사용하므로 미리보기 옵션이 필요 없습니다.

그런 다음 imaq 도구 상자의 카메라 속성을 트리거 모드로 설정해야 할 수 있습니다. 예를 들어, gentl 카메라 유형이 같은 것을 볼 수 있습니다로, 그리고

triggerconfig(vid, 'hardware', 'DeviceSpecific', 'DeviceSpecific'); 

    src = getselectedsource(vid); 
    src.FrameStartTriggerMode = 'On'; 
    src.FrameStartTriggerActivation = 'RisingEdge'; 
    src.FrameStartTriggerDelayAbs = 0; 
    src.FrameStartTriggerSource = 'Line1'; 
    src.FrameStartTriggerOverlap = 'Off'; 

일부 카메라의 해당 카메라가 노출 될 때마다, 그것은 어떤 출력에 TTL을 전송하고, 자신의 트리거를 읽을 수 있습니다. Matlab에서 정의하는 방법은 다음과 같습니다.

src.SyncOut1SyncOutPolarity = 'Normal'; 
    src.SyncOut1SyncOutSource = 'Exposing'; 

다시 말해서 imaq 도구에서 카메라의 옵션으로 재생해야합니다. 나중에 처리 할 데이터 처리 단계에는 시간이 걸릴 수 있으므로 병목 현상없이 데이터를 가져 와서 분석 할 수있는 벤치마킹이 필요합니다.

마지막으로, 당신은 (자신의 차이를 볼 수있는 설명서를 참조) 대신 getsnapshotgetdata 사용할 수 있으며, 형태 : [img, time, metadata] = getdata(vid);는 이 각 이미지 촬영을 위해 당신이 무슨 일이 일어나고 있는지 볼 수 있도록, 타임 스탬프를 제공 할 것입니다. 또한 clear data 대신 을 사용하면 vid 객체가 메모리 버퍼를 완전히 채우지 못하게 할 수 있습니다 (루프에서 100 반복 만 실행하더라도 괜찮을 것입니다).

+0

src이란 무엇입니까? triggerinfo (vid) 아래입니까? 나는 당신의 명령을 따라하려고했지만 "???"정의되지 않은 함수 또는 변수 'src'가 나타납니다. " – user1650256

+0

'src'는'src = getselectedsource (vid);로 얻습니다. '답변을 업데이트했습니다. – bla

+0

Hamamatsu c4742 카메라를 사용 중이며 get (src) 아래에 "src.SyncOut1SyncOutPolarity"가 없습니다. 조정 가능한 기능은 FrameStartTrigger뿐입니다. 이것이 내가 당신의 방법을 사용할 수 없다는 것을 의미합니까? – user1650256