1

私はmatlabでプログラミングするのが初めてで、次のことをしようとしています:

getdata 関数を使用してライブ画像を取得するために、カメラで画像 (サイズ 1024x1024) を継続的にキャプチャします。測定を行うには、循環バッファーを使用して 100 枚の画像のみを保存したいと思います。より正確には、100 枚の画像を保存し、新しいデータが取得された場合は最も古い画像を消去し、最後の 100 枚の画像で測定を行うことを考えています。

私の懸念が理解できることを願っています...

答えてくれてありがとう!

4

3 に答える 3

1

この質問には、MathWorksの作業員が回答しました。連続測定用のバッファマトリックスを作成します。(彼はまたそれのビデオを作りました:http://blogs.mathworks.com/videos/2009/05/08/implementing-a-simple-circular-buffer/

コード :

buffSize = 10;
circBuff = nan(1,buffSize);
for newest = 1:1000;
   circBuff = [newest circBuff(1:end-1)]
end

循環バッファを画像処理に適用するgnoviceによる更新を確認してください。

于 2012-10-14T16:03:51.680 に答える
0

100個の1024x1024行列の配列を作成できますように。読み取りと書き込みの位置を維持するには、次のリンクを参照してください。 循環バッファのロジック

于 2012-10-14T16:00:19.173 に答える
0

「循環バッファー」と呼ばれるものは、キューまたはFIFO (先入れ先出し) として知られています。通常、これはリンクされたリストのデータ構造に格納され、すべてのオブジェクト (この場合はマトリックス) が次のオブジェクトを指します。ただし、Matlab には、組み込みのリンク リスト構造はありませんが、Matlab 配列 (ベクトル/行列) は、操作に関して非常に柔軟で効率的です。

したがって、各画像を長さ 100 の配列内の行列として単純に格納すると、寸法 100x1024x1024 の 3 次元行列が得られます。次に、新しいデータを取得したら、配列から最後の行列を削除し、配列の先頭に新しい行列を挿入します。うまくいけば、これはあなたにとって十分に速いでしょう。

幸運を!

于 2012-10-14T15:58:40.403 に答える