opticalFlo​wLKの出力を用いて​Quiverプロット​を行いたい

1 次查看(过去 30 天)
巧 平山
巧 平山 2023-5-10
openExample('vision/ComputeOpticalFlowUsingLucasKanadeAlgorithmExample')を用いてLucas-Kanade アルゴリズムを使用したオプティカル フローの計算を行っています。
while hasFrame(vidReader)
frameRGB = readFrame(vidReader);
frameGray = im2gray(frameRGB);
flow = estimateFlow(opticFlow,frameGray);
imshow(frameRGB)
hold on
plot(flow,'DecimationFactor',[5 5],'ScaleFactor',10,'Parent',hPlot);
hold off
pause(10^-3)
end
7行目のオプティカルフロープロット関数をquiverで置きかえて
例えば
% カラーマップ作成
colormap jet ; cmap=colormap;
%プロットのメッシュ作成
borderOffset = 5;
decimFactorRow = 50;
decimFactorCol = 50;
%%
R = Mov.Height;
C = Mov.Width;
RV = borderOffset:decimFactorRow:(R-borderOffset);
CV = borderOffset:decimFactorCol:(C-borderOffset);
[Y, X] = meshgrid(CV,RV);
% オプティカルフローの計算
flow = estimateFlow(opticFlow,frameGray);
U = flow.Vx ; V = flow.V y; L = hypot(U,V);
% ベクトルをオプティカルフローの大きさに応じて変化させる
for k = 1:numel(X)
quiver(X(k)*100,Y(k)*100,U(k)*20,V(k)*20,'Color',cmap(ceil(L(k)*128),:));
end
の様にベクトルを1本1本書いてそれぞれの色をオプティカルフローの大きさに応じて変化させたいと思っています。
しかし、単純な置き換えでは上手くいかず、
位置 1 のインデックスが無効です。配列インデックスは正の整数または logical 値でなければなりません。
のエラーが出てきます。
どの様に解決すれば宜しいでしょうか。
  7 个评论
巧 平山
巧 平山 2023-5-17
もしよろしければコードの説明を頂けますか??
Atsushi Ueno
Atsushi Ueno 2023-6-7
コメント遅くなりました。「内容を理解したら追記します」と書きましたが、当時も良く分からないまま追記しましたし、もうすっかり忘れてしまいました。
Quiver オブジェクトのプロパティ”Head”(矢じり部分)と”Tail”(矢の軸部分)は、quiverのプロパティの説明に登場しません。隠しプロパティなのではないかと思います。
現在のカラーマップ(デフォルトで64色のグラデーション)の色数をビン数として、矢印の長さを各ビンに分配します。つまり、矢印の長さに応じた色を決めています。この色を全ての矢印(矢じりと軸に分かれたプロパティ)各々に対し設定しています。

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 ベクトル場 的更多信息

产品


版本

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!