MPEG-2などの動きベクトル算出方法について

まるもさんの日記の動きベクトルについてが非常に分かりやすい。

ffmpegとx264を調べたところ以下の動きベクトル算出法が見つかった。

  • full motion estimation – full search(alias ‘esa’ – exhaustive search algorithm)
  • EPZS motion estimation (alias ‘dia’ – diamond search)
  • tesa motion estimation – transformed exhaustive search algorithm
  • log motion estimation
  • phods motion estimation – parallel hierarchical one-dimensional search algorithm
  • hex motion estimation – hexagonal search
  • umh motion estimation – uneven multi-hexagon search
  • iter motion estimaion – iterative search

ffmpegで通常使われるのはEPZSというアルゴリズムだが、このアルゴリズムはdiamond search→MVFAST→PMVFAST→EPZSと改善に改善の論文を重ねて作られている。ffmpegではdiamond searchのエイリアスでEPZSが選択される。

full searchやumhについてはffmpegの中には入っておらず、x264のソースコード内にて発見した。

SIMD化されたCPUで上手く動作するのだろうか、気になった。アセンブリで書かれているのはiDCTとDSPの部分をMMX, SSE化しているものが多かった。ffmpeg、x264ともにマルチスレッドや64ビット化には対応しており、ベンチマークしている方々がいらっしゃる。x264のcell化は無理だったのか、と、ふと思う。

このコード群をJAVAやRubyにしたら面白いかなーと思いつつ、別に面白くないやと思う今日の午後。

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>