optical flow(LUKAS KANADE法)での速度ベクトルの大きさの補正

opticalflowで(t-1)の画像フレームからtのフレームの解析をした場合に実際の画像データに重ねると速度ベクトルが過少もしくは過大になってしまいます。
移動量を正確に得たいのですが、どのように処理をすればいいか分かりますでしょうか?
LUKAS KANADE方でのオプティカルフローは以下のURLを参考にしています。
estimateFlow関数を使う方法でもなんでも構いません。

댓글 수: 6

flower
flower 2023년 4월 9일
回答ありがとうございます。
表示されているベクトルは実際の動きよりも大きいように思えるのですが、それを補正する方法はないでしょうか?
Atsushi Ueno
Atsushi Ueno 2023년 4월 9일
편집: Atsushi Ueno 2023년 4월 9일
>表示されているベクトルは実際の動きよりも大きいように思えるのですが、それを補正する方法はないでしょうか?
プログラム中の u と v の値に倍率を掛け quiver 関数による矢印表示を拡大縮小する事であれば簡単に出来ます。(quiver 関数はUとV(矢印の大きさ)を正規化するので、'AutoScale'機能をOFFにする必要があります)。
% downsize u and v
u_deci = u(1:10:end, 1:10:end) * 10;
v_deci = v(1:10:end, 1:10:end) * 10;
%(中略)
quiver(X_deci, Y_deci, u_deci, v_deci, 'y', 'AutoScale','off');
% 下図の様に個々の矢印の長さが長く表示されます
> 移動量を正確に得たいのですが
しかしながら上記の例で明らかな様に、個々の矢印の長さ(LUKAS KANADE法による演算結果)がその直下の画素の移動量と一致しているかというと、そうではないと思います。
演算方法 (畳み込みでエッジを検出し、部分毎に逆行列を演算する) を考えると、最終的に計算されるuとvの値は、窓の大きさ(w)とエッジが検出される「具合」即ち元画像のコントラストや色の違い等によって変わります。
flower
flower 2023년 4월 10일
ご提示の通り、quiverで掛ける”倍率”が分かれば、と思ったのですが、単純な比較は難しいようですね。ありがとうございます。
上記のような図(cf. openCV)を得たく、1frame毎の移動量が分かればと考えていました。
1frameごとの正確な移動量が分からない中で、MATLABで上図を実装するようなアイデアはありますでしょうか?
Atsushi Ueno
Atsushi Ueno 2023년 4월 10일
LUKAS KANADE法による演算で得られた移動量分布データから上図の様な奇跡を得るのですか。オクルージョン(オブジェクトの重なり)もあるので、車のオブジェクト認識枠が必要になると思います。元画像からオブジェクトを認識し、そのトラッキング処理を組み合わせるのが良いと思います。Computer Vision Toolboxのドキュメントに事例が多数あります。追跡と動き推定 - MATLAB & Simulink - MathWorks 日本
flower
flower 2023년 4월 12일
参考のURLの紹介までありがとうございます。
解析する手法を広げて検討してみたいと思います。ご助言ありがとうございました。

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

제품

릴리스

R2022a

질문:

2023년 4월 5일

댓글:

2023년 4월 12일

Community Treasure Hunt

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

Start Hunting!