1

質問自体。

現在、MATLAB を使用してリアルタイムの画像認識ソフトウェアを開発していますが、Web カメラでフレーム レートを高速化しようとすると問題が発生します。画像の一部のみを処理しても (ROI を使用してトリミングしても)、フレーム レートはそれほど速くなりません。

そのため、すべてのフレームでの計算 (より具体的にはフレームのサイズ) は問題ではないと信じるようになりました。それで、答えを探して、私は簡単なコードを作りました:

imaqreset;

% Turn the webcam on with a MJPG_6480x480 acquisition format.
webcam1 = videoinput('winvideo',1,'MJPG_640x480');
set(webcam1,'FramesPerTrigger',1);
set(webcam1,'TriggerRepeat',Inf);
triggerconfig(webcam1,'Manual');
start(webcam1);

% Pre-allocate for the variable wich will hold the frame rates over time.
a = zeros(1,100)';

% Acquire frames in a loop and saves the frame rate in each iteration.
for i=1:100

    % Starts the timer.
    tic;

    % Triggers the webcam1 to capture a frame.
    trigger(webcam1);

    % Saves the frame in a dummy variable (just to simulate the acquisition time)
    i1 = getdata(webcam1,1);

    % The frame rate for this iteration will 1/(time for iteration).
    a(i) = 1/toc;    
end

% Plots the frame rates over time.
plot(a);

% Cleans up.
delete(webcam1);

私のコンピューターでは、このコードは 12.4 fps 前後である程度安定して動作します。ここで注意が必要なのは、取得形式を「MJPG_160x120」に変更すると、コードは同じフレーム レートで実行されることです。または「MJPG_1280_1024」に!!

これは、MATLAB が Web カメラから取得する必要がある画像のサイズに関係なく、この Web カメラを使用してこのコンピューターで達成できる最速のフレーム レートが ~12.4 fps であることを意味しますか? または、何か不足していますか?

最後に一つだけ...

私のソフトウェア (つまり、上記の単純化されたコードではなく、各フレームを処理する私の実際のコード) では、フレーム全体を処理するときにフレーム レートが約 7 fps に低下しますが、コンピューターがターゲットを見つけると (したがって、 ROI を使用して検索を絞り込みます) フレーム レートは約 12 fps に戻ります (私が期待するほど高くはありません)。私にとってこれは、最大フレーム レートが私のコードではなく、画像の取得速度によって決定されていることを示す良い証拠です。


事前に感謝します。

4

0 に答える 0