opticalFlowLKの出力を用いてQuiverプロットを行いたい
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Atsushi Ueno
le 7 Juin 2023
コメント遅くなりました。「内容を理解したら追記します」と書きましたが、当時も良く分からないまま追記しましたし、もうすっかり忘れてしまいました。
現在のカラーマップ(デフォルトで64色のグラデーション)の色数をビン数として、矢印の長さを各ビンに分配します。つまり、矢印の長さに応じた色を決めています。この色を全ての矢印(矢じりと軸に分かれたプロパティ)各々に対し設定しています。
Réponses (0)
Voir également
Catégories
En savoir plus sur ベクトル場 dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!