1

ビデオ キャプチャを介して流体ソリューション内の粒子を追跡するために、いくつかの MATLAB コードを使用しています。

追跡されるすべての粒子は、セルの配列 ( tr) に格納され、各セル エントリは追跡される異なる粒子になります。セルにはN x 11行列が含まれ、各行にはその特定のフレーム (位置、サイズ、コントラストなど) での粒子のパラメーターが含まれ、N は粒子が追跡されたビデオ フレームの数です。

各セルの列 1 には粒子の x 位置が含まれ、各セルの列 2 には粒子の y 位置が含まれ、各セルの列 11 には、キャプチャされたすべてのフレームでの粒子の平均速度が含まれます (他の列はすべて無視します)。

粒子セルの例:

典型的な粒子セルの例

通常、キャプチャしたビデオの最初のフレームにこれらのトラックをプロットするには、次のコードを使用します。

image = read(mmreader([movie '.avi']), 1);  %Loads the first frame of the avi file
figure
imshow(image);
hold on
for i = 1:length(tr) % Or choose which particle you want to show
plot3(tr{i}(:,1),tr{i}(:,2),tr{i}(:,11),'r')
end

しかし、私がやりたいのは、上記のコードを使用して粒子をプロットすることですが、粒子トラックの色は平均速度の値に依存します (赤 - 高速、青 - 低速など)。これを行う最善の方法は、3D でプロットし、平均速度を Z 軸の値として使用することだと思いましたか? しかし、プロットに色を追加して相対的に保つ方法はまだわかりません。これにより、異なる粒子の速度をプロットされた色で比較できます。

どんな助けでも大歓迎です!

4

2 に答える 2

1

FEX パッケージclineを参照してください。

この例を考えてみましょう (速度によって色が決まる 2D 曲線)

tt = 0:.1:5

x_v = sin(tt);y_v = tt.^2;                % // my curve

speed = sqrt( cos(tt).^2 + (2 * tt).^2 ); % // its local speed
figure
cline(x_v,y_v,speed);

ここに画像の説明を入力

3Dでも動くので、思いspeedのままに3つめの座標として入れることができます。

于 2012-11-27T15:42:14.127 に答える
1

私の提案は、最初にトラックごとに、色の範囲のどこになりたいかを決めることです. (たとえば、各トラックの速度を計算します)

この後sort、トラックを正しい順序で取得できます。

次に、 a を使用しcolormapて、各行が正しい色になるようにします。

于 2012-11-27T14:51:24.687 に答える