【AviUtl】動体検知スクリプトを配布【拡張編集】

20160521151528

2016/05/29に更新(修正と追加)
対象記事:【AviUtl】動体検知スクリプトのバグ修正と階調化版を追加【拡張編集】

 

動体検知スクリプトは指定した色を検知してその動きを追い、別の素材にその動きを反映させるアニメーション効果。

検知用と反映用の2種類から成り、検知用は動きを解析したい動画に追加し、反映用は動きを反映させたい素材に追加する。

動画中の指定した部分の色を検知して反映させるため、指定色と同じ色が散見している動画は苦手。上手く動きを追わせたい場合は背景に気を使ったり、追わせる物体の色を補色に近い色になるようにするのが吉

項目解説

20160521152347

 

  • H判定:色相を絞り込む。
  • S判定:彩度を絞り込む。
  • V判定:明度を絞り込む。
  • 解析範囲:どの程度の範囲を検索するかの値。値が大きいほど広範囲を検索して、指定色を検知することが可能になる反面、その範囲に予想外の指定色が含まれていると誤検知してしまうので程々の値にする。
  • Setting:最初に指定色の範囲を検知、確認するためのチェック。

 

20160521152951

 

  • 反応度:フレーム平均の動きを算出する。値が小さいほど反応用を追加したオブジェクトが敏感に動く。1~240の範囲で指定。
  • 基準色:ここで指定した色を追いかける。
  • 検索A:指定色を検知するときの透明度の最小値。範囲は0~1。検索Bに対応。
  • 検索B:指定色を検知するときのぼかしの度合い。範囲は0~30。※
  • 解析範囲制限:チェックを入れると、解析範囲を制限する。
  • 開始X(Y):解析を開始するピクセルの指定。左上が0。右下がプラス。
  • 終了X(Y):解析を終了するピクセルの指定。左上が0。右下がプラス。
  • pos:アンカーの座標を格納するためのもの。

 

※ 検索Bは動画次第。たとえば、色の使われ方がはっきりとした動画(図形で作ったようなもの、アニメ)であれば、0に近い値でOK。逆に動きを検知したいものがリアル系であればデフォルトの値かそれ以上にする。

 

20160521155329

 

  • 補正X:検知した部分と素材の位置Xを補正する。
  • 補正Y:検知した部分と素材の位置Yを補正する。
  • Guid:ちょっとした注意事項の表示。

 

注意事項

  • 検知用を追加した動画の拡大率は100%のままで使用。
  • 動画の拡大率を変えたいときは、動画の上にグループ制御を置き、グループ制御の拡大率を変化させる必要あり

 

使い方

20160521154135

 

  1. 動きを検知させたい素材(動画)を上位レイヤーに配置して、動体検知(検知用)を追加する。
  2. 反映させたい素材(テキスト、画像、図形など)を下位レイヤーに配置して、動体検知(反映用)を追加する。
  3. 初期化のために0フレーム(※)に合わせる。
  4. 検知用の『色』をクリックして、色の選択の中から『スポイト』をクリック。更に動画の中から動きを追跡したい部分をクリックする。
  5. 色を取得したら、『Setting』にチェックを入れる。
  6. 指定色部分のみが表示されるので、アンカーを表示されている指定色の左上に持っていく。
  7. 指定色部分が消えて、ピンクの点線で指定色の部分の輪郭が覆われたら捕捉成功。また、反映用を追加した素材がピンクの点線付近に移動しているはず。
  8. 『Setting』のチェックを外す。
  9. 反映用の素材の補正Xと補正Yの値を変えて、表示位置を調節する。
  10. プレビュー再生をさせて、上手く動体検知が行われているようであれば終了。上手く動体検知されていないようであれば、HSV判定、解析範囲、反応度、検索Bや検索Aの値を変更する。

 

20160521160711

※ 0フレーム初期化は、検知用のオブジェクトの0フレーム(オブジェクトの頭)に現行カーソルを合わせること。

上の画像はメディアオブジェクトとして使った場合。動画オブジェクトに追加した場合は動画オブジェクトの先頭。

手順のサンプル

20160521155101

動体検知を行いたい動画素材。背景が木だったので、検知しやすいように補色に近い緑のライターを使用している。

 

20160521154959

上の動画オブジェクトに動体検知(検知用)を追加し、『色』をクリックして色を選択の『スポイト』を更にクリックし、動画の中の緑のライターから色を取得したところ。このあと、OKをクリック。

 

20160521155139

動体検知(検知用)の『Setting』にチェックを入れたところ。取得したライターの緑色だけが表示されている。

使用する動画によっては、余計な部分が表示されていたり、逆に必要な部分まで消えてしまっていることがあるので、HSV判定や解析範囲の値を変えて、可能な限りある程度の大きさを持った、必要な部分だけを表示させるようにする。

 

20160521155204

アンカーを緑の部分の左上(解析が上から下に向かうので上が優先)に移動させる。指定色が検知されると、ピンクの点線が緑の部分を囲む。※

ちなみにこの囲みから算出された値が反映用を追加した素材のXYに反映される。

 

※ 囲みができず点のみになってしまった場合は、出来る限りそれなりの大きさを持つ囲みができるようにアンカーを動かすか、検索Aや検索Bの値を変えてやる

20160521155239

動体検知(検知用)のチェックを外したところ。

 

20160521155613

カスタムオブジェクトの集中線を追加し、動体検知(反映用)を追加したところ。ライターを動かすと、集中線もライターの動きを追って動く。

 

20160521162320

吹き出しとテキストオブジェクトに動体検知(反映用)を追加して、補正XYの値を調節したもの。ライターを動かすと、吹き出しとテキストがライターの動きを追って動く。

 

DL

 

今回はC言語(!)でdllファイルを作り、処理をさせています。Luaで処理させるよりも多少軽くなっているはずなのですが、ブログのほうにはZipやdllファイルがアップロード出来なかったので、DLのリンク先を変更して配布しています。

利用するにはDLしたZipファイルを圧縮解凍ソフトで解凍後、出てきたdllファイルとanmファイルをAviUtlのScriptフォルダにコピペすれば使えるようになるはずです。

 

 

関連記事
スポンサーサイト

0 Comments

Post a comment