アットウィキロゴ
ImageProcessingTester @wiki
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

ImageProcessingTester @wiki

動画で利用する

最終更新:

ansoft

- view
管理者のみ編集可

動画で利用する





概要

IPTは動画としてAVIファイルと、カメラを利用できます。
ファイルやカメラから読み込まれた動画はライブソースとして扱われ、次の図のように働きます。


ライブソースは生成時に出力の数を指定し、現在の画像+(出力の数-1)フレーム前の画像までをノードとして出力します。
例えば、時系列差分(フレーム間差分)を構築する場合などは、出力を2以上にする必要があります。

このへんの事情は知らなくても問題ありません。
出力の数を1より大きくしたら過去のフレームの画像も同時に得られるんだな、程度で十分です。


ファイルを読み込む

IPTでは、AVI形式の動画など、OpenCVでサポートされる動画形式(最新ではMPEGやFLVなども?)を読み込むことができます。

読み込む方法としては、画像の場合と同様にして、左側にあるノードリストに動画ファイルをドロップすることでダイアログを開けます。


また、このダイアログはメインメニューの「ファイル」→「動画を追加」でも開くことができます。

カメラ番号と幅、高さはカメラからキャプチャする場合に入力する項目で、ファイルの場合は入力できないようになっています。

出力の数概要で説明したように、動画から利用するフレームの数を指定します。

動画の最後に達したら巻き戻すのチェックは、動画ファイルを最後のフレームまで読み終わった時、自動的に再生を再開するかのチェックです。
処理を確かめる目的の時はチェックを入れ、結果を動画に保存する場合はチェックを入れないことを推奨します。

最後にOKを押すと、ライブソースの生成が行われます。


ノードリストのtestがライブソースで、test-0が出力されたノード(数字は0からの連番)です。
これらのノードを使って画像処理を構築します。




カメラからキャプチャする

Webカメラなどを接続している場合、カメラからのリアルタイム画像をライブソースとして取り込むことができます。

メインメニューの「ファイル」→「動画の追加」を選択し、次のダイアログを開きます。


まず、動画ソースの選択カメラをソースにするを選択します。

そして、カメラ番号ですが、これは通常0からの連番になっているようです。
うまく行かない場合は変更してください。

幅と高さについては、そのまま取得する画像のサイズです。
カメラによって指定できる値が違うようです。

出力の数概要で説明したように、動画から利用するフレームの数を指定します。

最後にOKを押すと、ライブソースの生成が行われます。


ノードリストのcamera[0]がライブソースで、camera[0]-0が出力されたノード(数字は0からの連番)です。
これらのノードを使って画像処理を構築します。


ライブソースを操作する

以降の説明はウィキメディア・コモンズにGFDLライセンスで公開されているInukai no taki video.ogvをAVI形式に変換したものを用います。
ファイル名としては簡単のため、test.aviとしています。

まず、ファイルを読み込むの操作を行い、ライブソースを生成します。

次に、利便性のためにtest-0簡易表示窓を開きます。
簡易表示窓の表示中はメイン画面のプレビューの更新は停止されます。
しかし、メイン画面のプレビューはコマ落ちが発生したりする可能性もあるため、簡易表示窓の利用を強くおすすめします



ライブソース操作はメインメニューの動画から行うことができますが、キーボードショートカットを用いた方が簡単です。
ショートカットには次のようなものがあります。

  • F5・・・再生を開始/終了する
  • F6・・・1フレーム進める
  • F7・・・最初に巻き戻す(ファイル限定)

なお、これらはアクティブになっているライブソースに対する操作になります。
アクティブになっているライブソースはノードリストで名前が太字になっています。
ライブソースの名前を右クリックし、アクティブな動画にするを選択することで変更が可能です。

また、ショートカットにはShiftキーを加えることで、全てのライブソースを対象に操作することができます。

再生間隔や、自動巻き戻しの設定などを変更したい場合は、ライブソースの名前を右クリックし、再生情報の変更で変更できます。
この際の設定の項目はライブソース生成の時と同様です。



画像処理を加える

やり方は静止画の場合と同様です。

ここでは明るい部分のみを抜き出して表示する処理を例にとって説明します。

まず、ノードリストのtest-0を右クリックし、グレースケール変換を選択します。


test-0.Grayが生成されるので、これに対して2値化のゲートを追加します。
ここではフィルタ処理2値化(大津の方法)を選択します。

大津の方法は判別分析法とも呼ばれ、2値化の閾値を自動的に計算して2値化を行うアルゴリズムです。

ゲートを追加する際に設定する出力の名前は何でもいいですが、maskとでもしておきましょう。


さて、最後にこれを原画像に重ね合わせます。

test-0に対し、ゲートを追加します。
フィルタ処理マスク処理を選択します。


2番目の出力に先ほど作ったmaskを設定し、出力名をdestとつけます。


画像中の明るい部分だけが抜き出された画像ができているのが分かると思います。
F5などで動画を再生してみたりして確認してください。

最後に今回の処理結果を動画で示します。



結果を保存する

前項で載せたような処理結果の動画を簡単に作成することができます。

動画の保存を開始する前に、自動巻き戻しをオフにします(ファイルからライブソースを生成している場合)。
これは、IPTの動画保存機能がノードの画像が更新されたタイミングで記録を行うようになっているためです。
(オフにしておかないとループして記録されてしまう)

オフにする方法はライブソースを操作するを見て行ってください。
オフにしたら、F7を押して巻き戻しを行っておきます。

ここまでの前準備が済んだら、保存したい処理結果のノード(ここではdest)をノードリストで右クリックし、動画保存を開始を選択します。


すると、次のようなダイアログが開きます。


まず、選択ボタンを押し、ファイルの保存場所を決定します。

次にコーデックを選択します。
対象となるコーデックがインストールしてあるのが確認できる場合、コンボボックスの中から選んでください。
何がインストールされているか分からない場合などは、bold(){自分で選択}にすると、OKを押したときに選択画面が開き、インストールされているコーデックから選択ができます。
また、容量は大きくなりますが無圧縮でも大丈夫でしょう。(Windows Media Video 9もWindows Media Playerを使っていれば入っている気がしますが・・・)

FPSは、1秒間に再生するコマ数です。
元となる動画(またはライブソースの再生間隔)に合わせると良いでしょう。(動画の場合29.97が良いようです)

OKを押すと、動画保存モードに入ります。

これで動画の記録ができるようになったわけですが、IPTでは複数のノードを同時に動画保存することもできます。
やり方は簡単で、他のノード(例えば test-0.Gray)でも同じように動画保存を開始を選び、設定を行うだけです。
ここではやりませんが、複数の処理や、処理の過程を同時に保存したい場合に使ってください。

それでは動画の記録を行います。
どのようにするかというと、F5を押して動画を再生するだけです。

再生が終わったら(カメラの場合はF5を押して再生を終了したら)、destを右クリックして動画保存を終了を選択します。


これで完了です。
先ほど指定した保存場所に動画ファイルができていると思います。

ここで0byteのファイルになっていたり、開けなかった場合は対応していないコーデックを選択していた可能性があります。
コーデックを別のものにするか、インストールを行ってもう1度保存しましょう。




最近更新されたスレッド
ウィキ募集バナー