주요 콘텐츠

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

수집율 결정

이 예제에서는 GETDATA 함수가 제공하는 타임스탬프를 사용하는 방법과 MATLAB® 함수를 사용하여 장치 프레임 속도를 추정하는 방법을 보여줍니다.

1단계: 장치 접근 및 구성

비디오 입력 객체를 생성하고 비디오 소스 객체에 액세스하여 원하는 수집 속도를 구성합니다. 수집 속도는 비디오 소스 객체의 장치별 FrameRate 속성 값에 따라 결정됩니다.

FrameRate는 장치별 속성이므로 일부 장치에서는 지원되지 않을 수 있습니다.

% Access an image acquisition device.
vidobj = videoinput('winvideo', 1);

% Configure the number of frames to log.
vidobj.FramesPerTrigger = 50;

% Skip the first few frames the device provides
% before logging data.
vidobj.TriggerFrameDelay = 5;

% Access the device's video source.
src = getselectedsource(vidobj);

% Determine the device specific frame rates (frames per second) available.
frameRates = set(src, 'FrameRate')
frameRates = 

    '30.0000'
    '24.0000'
    '8.0000'	
% Configure the device's frame rate to the highest available setting.
src.FrameRate = frameRates{1};
actualRate = str2num( frameRates{1} )
actualRate =

    30

2단계: 데이터 기록 및 검색

수집을 시작하고 기록된 프레임과 타임스탬프를 검색합니다.

% Start the acquisition.
start(vidobj)

% Wait for data logging to end before retrieving data.  Set the wait time
% to be equal to the expected time to acquire the number of frames
% specified plus a little buffer time to accommodate  overhead.
waittime = actualRate * (vidobj.FramesPerTrigger + vidobj.TriggerFrameDelay) + 5;
wait(vidobj, waittime);

% Retrieve the data and timestamps.
[frames, timeStamp] = getdata(vidobj);

3단계: 수집율 계산

각 프레임의 타임스탬프를 표시하면 수집 속도가 일정하다는 것을 확인할 수 있습니다.

% Graph frames vs time.
plot(timeStamp,'x')
xlabel('Frame Index')
ylabel('Time(s)')

평균 시간 차이는 예상 수집률과 비교하기 위해 결정될 수도 있습니다.

% Find the time difference between frames.
diffFrameTime = diff(timeStamp);

% Graph the time differences.
plot(diffFrameTime, 'x');
xlabel('Frame Index')
ylabel('Time Difference(s)')
ylim([0 .12])

% Find the average time difference between frames.
avgTime = mean(diffFrameTime)
avgTime =

    0.0333
% Determine the experimental frame rate.
expRate = 1/avgTime
expRate =

   30.0245

실험적 프레임 속도와 알려진 프레임 속도 사이의 시간 차이를 비교하면 오차율을 계산할 수 있습니다. 일반적인 USB 웹 카메라를 수집 장치로 사용하므로 실제 장치 프레임 속도가 변동될 것으로 예상됩니다.

% Determine the percent error between the determined and actual frame rate.
diffRates = abs(actualRate - expRate)
diffRates =

    0.0245	
percentError = (diffRates/actualRate) * 100
percentError =

    0.0817
% Once the video input object is no longer needed, delete
% it and clear it from the workspace.
delete(vidobj)
clear vidobj