今回は画像処理の2回目です。
前の画像処理1の内容は、原理的なことに触れているので、結構難しかった人もいるかと思います。
今回は、インタラクティブアート作品に利用するためのより実践的な方法を学びます。
まず、これから扱うプログラムを正常に動かすために、露出固定が可能なカメラを使用してください。MacBookなどに搭載されているカメラやUSBカメラにはこのような機能が付いていないので、Firewire (iLink)が付いているDVカメラなどが一番適しています。
インスタレーションなどに使う場合は、Firewireの長さに限界がある(最長4.5m)ので、長く繋ぎたい場合には、通常のビデオコードをカメラに付け、パソコンには、アナログ-DVコンバータでFirewire接続します。
まずは、カメラの前で対象物(人など)が動いた場合に、その変化量を計算するプログラムです。
これを画像処理の用語で「フレーム差分」と言います。
movementSumに動いたピクセルの総数が代入されます。
この場合は640 x 480の画面なので、フレームごとのピクセルは307200ピクセルとなります。
ですから、動作量は0 ~ 307200の値を取ります。
これは単純にint型の変数なので、少し動いた、かなり動いた、激しく動いたなどという動作量を扱うことができますね。
次は、フレーム差分の応用で、「背景画像の黒抜き」です。
画面上のマウスクリックによって、backgroundPixelsにその時点の画像が保存され、その保存された画像と現在の映像を比較して変化した部分だけに映像が表示されます。
今回は、ライブラリの一種であるBlobDetectionを使用します。かなりよくできたライブラリなので、オブジェクトの位置を認識するようなプログラムが簡単に書けてしまいます。
参考:
http://jp.youtube.com/watch?v=2syCUEJcvLM
http://jp.youtube.com/watch?v=k_TKwb-RWB8
http://jp.youtube.com/watch?v=NaUWAlSVFQA
http://jp.youtube.com/watch?v=oMmSEkAOF4s&feature=related
まずは、色の差が極端な場所を探し、その縁に円を描いていくプログラムです。
次に、オブジェクトの位置を検出するプログラムです。
reacTIVisionというライブラリを紹介します。
参考
http://jp.youtube.com/watch?v=J78U4Hu0qws
http://jp.youtube.com/watch?v=VfipEyEmHx0
http://jp.youtube.com/watch?v=fPOQqF-o1Ec
ダウンロードするファイルは2つあります。
1. reacTIVision vision engine
reacTIVision-1.4pre1-w32.zip (Win32)
reacTIVision-1.4pre1-mac.zip (MacOS X)
ここではMacでの利用法を解説します。
ダウンロードしたzipファイルを解凍すると、「reacTIVision-1.4」フォルダになるので、その中のsimbols –> amoeba.pdf をプリントする。原寸か、70%ぐらいの出力でいいでしょう。

2. reacTIVision client examples
Processing: TUIO_Processing.zip
解凍すると「TUIO_Processing」フォルダになるので、その中の「tuio」フォルダを、processingのlibrariesフォルダに入れる。

3. 「reacTIVision-1.4」フォルダの「reacTIVision.app」を起動する。すると、カメラ選択画面が出てくるので、使用するカメラを選択する。
キャプチャ画面が出てくるので、そこにプリントしたパターンを映すと個体番号が表示され、それぞれの個体が認識されていることが分かる。
4. この「reacTIVision.app」が起動している状態で、「TUIO_Processing」フォルダの中の「TuioDemo」を実行すると、processingの画面上の四角形が、それぞれのパターンに対応して動く。

うーん、よくできてますね。これがフリーソフトとは・・・
Sorry, comments are closed.