レオン ≡ほのぼのブログ≡ -5ページ目

レオン ≡ほのぼのブログ≡

毎日のささいな出来事を書いていきたいと思います★
良かったら見てください♪♪♪




HMの各動きベクトルを調査したところ
動きベクトルがSearchRange=64を超えてしまっている問題について






まず,プログラムの中身をおってみると,やはり1/4精度でやっているので,動きベクトル値は4倍されていた.なので,SearchRangeは256と等価





んでも値は644とかあったんだけど,フレームを2つ飛ばしてやったりするとスケーラブルなんちゃらで動きベクトルの値も2倍3倍されるらしいので,この値は十分にありえるのだと人から聞いた




HEVCの英語版のウィキペディアも見たところ,最大で32768となっているので,こんだけでかい値も許容してるのなら,644なんて全然大丈夫か


みたいな



いいのかこれで














MDP-Flow2のオプティカルフローのプログラムを使ってみた.




使用したのはBQSquare(416x240画素,60fps)のうちの0フレーム目から8フレーム目にかけてのものである.画像を以下に示す.


<0フレーム目>

$レオン ≡ほのぼのブログ≡





<8フレーム目>

$レオン ≡ほのぼのブログ≡



両者にはほとんど差はないと思われる.(8/60秒の変化だから)
しかし,よく見ると,歩いている人はわずかに動いている.
その動きをMDP-Flow2のとらえたオプティカルフローカラーマップ表示を以下に示す.

$レオン ≡ほのぼのブログ≡


色がどのような動きに対応しているかを以下の色円グラフから分かるようにする.

$レオン ≡ほのぼのブログ≡




このように,オプティカルフローでは,色によって動きを判別することができるが,色では分かりにくい場合もあるので,今回矢印にプログラムを書き換えて表示してみることにした.


ただし,1画素ごとに矢印を書くと画像がつぶれるので,画像を3倍,5倍,7倍と拡大しながら矢印を描く.今回は5倍の画像を用いてみる.

$レオン ≡ほのぼのブログ≡


動いている部分を表す人付近が矢印に埋め尽くされていることが分かる.

ここで,中央下の女の人の部分のみを拡大してみる

$レオン ≡ほのぼのブログ≡


左下方面へすすむ矢印が描かれていることが分かる.
このように,オプティカルフローでは1画素ごとに小数精度で動きを追うことができる




オプティカルフローのフリーソフトがいろいろ公開されているが,今回はそのうち

MDP-Flow2


と呼ばれるものを使ってみる



<インストール方法>
http://www.cse.cuhk.edu.hk/~leojia/projects/flow/のサイトからOptical Flow Estimation Software と書いているところをクリックし,ダウンロードを行う.


②ダウンロードしたファイルを展開する.

http://vision.middlebury.edu/flow/data/にあるThe ground-truth flow is provided in our .flo format. Information and C++ code is in flow-code.zipから,flow-code.zipをダウンロードする
floファイルをカラーマップに変換するプログラムである.

④ダウンロードしたファイルを展開する.

インストール完了.かなり簡単である.



<プログラム使用方法>
①インストール後展開してできたmdpofフォルダ内のmdpofフォルダ内にあるmdpof.exeを実行する.
実行方法は,コマンドプロンプトなどを用いて,

mdpof.exe imgdir [imgtype][smooth][largemotion][occlusion] [resultdir]

と記述する.
imgdir: 画像があるディレクトリ.オプティカルフローを計算する画像(2枚以上)を格納しておく.
imgtype: 画像の拡張子を記述する(.png,.bmp,.jpg,.ppmなど).
smooth: フロー数値の強度を表す.値は5~30で指定.大きいほど滑らかになる(デフォルトは8).
largemotion: 大きな動き(50ピクセル以上)の動きがあるかどうかで1か0かの値を記述する.ある場合は1を選択する(デフォルトは1).
occlusion: オクルージョン処理が適用されるかどうかを1か0で記述する.適用する場合は1,しない場合は0を選択する(デフォルトは0).
resultdir: 結果が出力されるディレクトリ(デフォルトはimgdir).

入力例
dpof.exe ".\data\Bird" ".png" 8 1 0 ".\data\Bird"


これで,出力ディレクトリに.floファイルが出力される.この.floファイルにflow情報が格納されている.


②インストール後展開してでてきたflow-codeフォルダ内のflow-codeフォルダ内にあるcolor_flow.exeを実行する.
実行方法は,コマンドプロンプトなどを用いて,

color_flow.exe flowFile pngFile

と記述する.
flowFile: mdpof.exeにより作成されたfloファイルのこと.
pngFile: floファイルによって変換されるカラーマップの出力pngファイル.




以上により終了である.しかし,私の場合は,カラーマップよりも実際のフロー数値を知りたいので,color_flow.cppを編集して新たなプログラムを作成した.

コンパイルを通すにはpngライブラリとのビルドを通さなくてはいけないので,少し大変.