2

私は現在、カメラの映像を記録し、「image」コマンドを使用してグラフィックウィンドウでmatlabで表現しようとしています。私が直面している問題は、画像の再描画が遅いことであり、これはもちろんスクリプト全体に影響します。私のプログラムを説明するための簡単な擬似コードを次に示します。

    figure
    while(true)
      Frame = AcquireImageFromCamera();  % Mex, returns current frame
      image(I);
    end

AcquireImageFromCamera()は、カメラの API からの mex です。取得した画像を表示せずに、スクリプトはカメラからのすべてのフレームを簡単に取得します (制限されたフレームレートで記録します)。しかし、リアルタイム ビデオ ストリームのすべての画像を表示するとすぐに、速度が著しく低下し、キャプチャされないためフレームが失われます。

たとえば、CPUの複数のコアを使用するために、画像を取得して表示するプロセスを分割する方法を知っている人はいますか? 並列コンピューティングが最初に頭に浮かびますが、並列ツールボックスは、私がここで求めているものとはまったく異なる形で機能します...

編集: 私は学生で、私の学部の matlab バージョンにはすべてのツールボックスが含まれています :)

4

3 に答える 3

2

疑似コードがどれほど正確かはわかりませんが、画像オブジェクトの作成にはかなりのオーバーヘッドがかかります。一度作成してから画像データを設定するだけの方がはるかに高速です。

figure
himg = image(I)
while(true)
  Frame = AcquireImageFromCamera();  % Mex, returns current frame
  set(himg,'cdata',Frame);
  drawnow; %Also make sure the screen is actually updated.
end
于 2013-08-29T02:44:18.717 に答える
2

Matlab のコンピューター ビジョン ツールボックスには、image() を使用するよりも高速なビデオ プレーヤーがあります。

player = vision.VideoPlayer
while(true)
  Frame = AcquireImageFromCamera();  % Mex, returns current frame
  step(player, Frame);
end
于 2013-08-28T15:18:32.563 に答える