『デジタルアートセミナー#3 openFrameworksで学ぶ、クリエイティブ・コーディング』の最終セッション『映像解析によるインタラクション』のメモです。
openFrameworksとOpenCV(ofxOpenCV、ofxCv)を組みあわせることで、映像を用いたインタラクティブな表現の可能性が大きく拡がります。このセッションでは、実例を紹介しながら映像とのリアルタイムなインタラクションの手法を探ります。
田所先生のイントロ、ひつじさんのオプティカルフロー+ドロネー変換、ライゾマ登本さんによるアドバンストな話、の3本立て構成でした。
過去のセッションのレポートはこちら。
- 【oFセミナーメモ4】openFrameworksと映像制作ソフトの連携 - Over&Out その後
- 【oFセミナーメモ3】プロジェクションマッピング - Over&Out その後
- 【oFセミナーメモ2】 GLSL(Shader)テクニック - Over&Out その後
- 【oFセミナーメモ1】 boostライブラリの使い方 - Over&Out その後
田所先生のイントロ
講義資料: Session 6: 映像解析によるインタラクション
オプティカル・フロー
映像内の物体の動きを、ベクトル場で表したもの
2種類のアルゴリズム
- Gunner Farneback
- 密なオプティカルフロー
- ofxCv::FlowFarneback
- Pyramidal LK
- 疎な特徴集合に対するオプティカルフロー
- ofxCv::FlowPyrLK
ひつじさん
講義資料: オプティカルフローを使ったモーショングラフィックス生成|ひつじ|note
ダンサーさんの踊っている映像を使用して、それをリアルタイムにカットアップしながらオプティカルフローを使ったグラフィックを載せているというプログラムです。
- YCAMのダンサーの映像にオプティカルフローをかける・・・特徴点を抽出
- ofxDelaunay ドロネー変換
登本さん
Kinectで3Dモデリング
キャリブレーション
- Kinect3台
- それぞれのカメラの位置がわかってない
- そのままだと 2.5d
- 光る玉を3台のKinectから見える位置で振る
- kinectのcolorの方で見ると、暗い部屋との対比で、簡単に中心位置を割り出せる
- カメラ位置の推定に、OpenCV の estimateAffine3D を使用
ofxEvm
Eulerian Video Magnification
動画の中から、人間の目ではわからないような微細な変化を検出する
Eulerian Video Magnification - YouTube
EVMのアルゴリズム
(上記動画内の解説図)
論文と MATLAB
- 論文のコードは MATLAB で公開されてることが多い
- EVM も MATLAB でコードが公開されてる
- MATLAB が使われるのは、その世界ではみんな使ってるので、referされやすいから。Pythonも増えてきた。
- MatLabからのC++エクスポート機能はつかってない。自分でC++で書き直している。
SVGでAR
- カメラを固定して、映っている対象物の頂点の位置を示したSVGファイル をつくる
- → その位置に別の映像をオーバーレイするとAR的なことができる
- CameraCalibrate3D を使用 する
- (ってメモしたけどググっても見当たらないので、OpenCV の calibrateCamera かも。。)
- 最終的なテクスチャをズームしたり変位させたり回転させたりすることでカメラが動いてるっぽくも見える
TLD Tracker
ofxTldTracker
- ライセンスはLGPL
OpenCV 3.0 にTLDアルゴリズムのとラッカーが追加される
Tracker Algorithms — OpenCV 3.0.0-dev documentation の TrackerTLD