OpenCV/OpenGLによる映像処理(電子情報工学科3年後期実験課題)

2010年度の優秀作品

背景差分法による拡張現実アプリ集 木下 僚 くん

 Webカメラで撮った映像をOpenCVを用いて加工・出力する拡張現実感アプリです。
   神隠し:急に消えてしまう「神隠し」にあったような効果を得ることができます。
   迷彩:あらかじめ撮影した写真の一部を手を使って消すことができます。
   タイムリープ:3秒前の過去と現在が混ざった不思議な映像を作り出します。
   ノイズ:動いているものがノイズとして表示されます。
これらの映像を得るベースになっているのは,背景差分法をはじめとする画像差分計算です。背景差分法やコマ間の差分計算をOpenCV組み込みの関数を用いずに自分で実装し, 高速でなめらかな処理を行うことができました。

3Dシューティングゲーム 板持 貴之 くん

 キーボードで画面中央に映っている自機を操作し,弾を撃って敵を倒す3Dシューティングゲームもどきです。
 GLSLを用いてシャドウマッピングを行っています。これにより,映っている球体そのものの陰影だけでなく,足場などの物体が地面に落とす影も描画できています。また,ビルボーディング技術を用い,敵キャラの体力を示すバーが常にカメラの方向を向くように描画しています。

ボールと影 天野 宗佑 くん

 Webカメラで取り込んだ画像を色情報で2値化し,当たり判定を作ることで,画面中を跳ね回るボールにあたかも触れているかのような感覚を得られる拡張現実感アプリケーションです。  画像の2値化やボールの反射の仕方を工夫することで,見た目にも綺麗で楽しいアプリケーションとなっています。

Street View 片岡 拓朗 くん

 特殊な機材やGPSを使わずに,Webカメラの動画とプログラミングだけでGoogle ストリートビューのようなアプリケーションを作りました。
 OpenCVのテンプレートマッチングを利用してフレーム間の移動距離を推定し,動画から適当な間隔でフレームを切り出します。 これに,手作業による間引きを加えて風景画像とします。 この画像をキー操作に応じて順次読み込むことで,ストリートビューを実現しました。 前進・後退・右折・左折時にはアニメーションを付け,動きをわかりやすくしました。

擬似タッチディスプレイ 毛利 圭佑 くん

 PCのディスプレイをカメラで撮影することで,普通のスクリーンをタッチスクリーンのように使うことができるプログラムです。  OpenCVを用いて,ディスプレイに特定の画像を表示し,ディスプレイの座標系とカメラの座標系の対応をとります。そこに肌色領域の凸領域の輪郭の角度変化から抽出した指先の座標を組み合わせる事で,指先の位置とスクリーン上の点を対応させています。

Change Face 山田 剛史 くん

 ライブラリを最適化したり,処理内容を工夫することで,キャプチャ,顔検知といった,処理負荷の重い処理を,2つのカメラ映像に対してリアルタイムに行い,2つの映像の顔を交換しています。
 顔検知に成功した場合,次のフレームの探索範囲を絞り込んだり,処理の重いフレームと軽いフレームを用意してバランスを取ったり,同期する必要のない処理を非同期に行うなどして,処理負荷を軽減しています。
 カメラ同士の顔の交換のみならず,アニメーション内の顔とカメラの顔の交換,といったこともできるので,キャラクターになりきることもできます。

22.5°系折紙シミュレータ 西村 光平 くん

 単純な命令列から折紙を折る過程をシミュレートする作品です。
 多数のノードとポリゴンにより1枚の紙を構成し,ノードの移動から折り線を計算してポリゴンを更新します。 z座標の設定により,紙の重なりと影をそれらしく演出しています。

絶対に勝てないジャンケン 佐藤 和博 くん

 カメラに向かってじゃんけんをし,コンピュータに必ず負けてしまうゲームです。
キャプチャした画像をHSV色空間に変換後,H成分が肌色に相当する画素を抽出,ラベリング処理によって隣接画素をグループ化し面積最大のものを手領域と判断します。 続いて,手領域を囲みこむ凸包の面積と,凸包内の肌色部分面積との比率及び,凸包の縦横比などを用いて,グー・チョキ・パーの判別をしています。

Orchestra4U 谷合 竜典 くん

 体の動きに応じて音楽の音量操作を行うことで,誰でも気軽にオーケストラの指揮を体感できるようにしたシステムです。 音楽的知識は一切不要で,カメラの前で音楽に合わせて思うままに指揮を振るだけで,その動きの激しさに応じて演奏の音量がリアルタイムに変わります。 曲も音楽CDから抽出したファイルなど,好きな曲を自由に指定できます。
 激しさ検出はOpenCVによる差分画像,表示はOpenGLの2次元描画などで,使用した機能の1つ1つは基本的なものばかりですが,アイディアの実現に向かって,いくつかの問題に対して解決方法を模索しながら,1つのシステムとして形にするところに苦労しました。

マウスでマウス 垣内 紀明 くん

 カメラの前で口を動かすことでマウスポインタを操作できるアプリケーションです。
 カメラで撮影した画像の画素のRGB値から唇の赤紫色を検出し,その領域の重心を求めて口の位置として認識します。口の移動をマウスポインタの移動に対応させているほか,舌を出す動作をマウスの左ボタンを押す動作に対応させているので,左クリックやドラッグ&ドロップもできます。

2009年度の優秀作品

UFO 大垣慶介 くん

 ノートPCを傾けることで,画面に表示されるUFOの動きを制御するゲームです。傾きセンサを搭載しないノートPCで,カメラ入力だけを手掛かりに傾きを推定している点が評価されました。
 特徴点追跡アルゴリズムを利用することで,画像中の同一物体がどのように動いたのか(オプティカルフロー)を求めることができます。ノートPCにUSBカメラを固定し,事前に撮影した画像と比較することで,オプティカルフローを求めます。オプティカルフローからノートPCがどの程度傾いているのかを推定し,それに応じた処理を行うことで,傾きセンサと同様の機能を実現しています。

ハンバーガーイーター 森功 くん

 画面の中を飛んでくるハンバーガーを自分の口でキャッチするゲームです。一生懸命口をあけてカメラの前を動き回る滑稽さが評価されました。
 OpenCVを用いてカメラからの画像を取り組み,Haar分類器でプレイヤの顔を特定して,口の位置を検出しています。そこに,OpenGLで作成したハンバーガーの3Dオブジェクトを用意し,テクスチャ機能を使ってプレイヤのレイヤーとハンバーガーのレイヤーを合成しています。

keysic 河野一歩 くん

 上から落ちてくるブロックのタイミングに合わせてキーボードを打ち込むことで,ピアノのように楽曲を演奏できる音楽ゲームです。音を扱った唯一の作品として評価されました。
   各文字の画像ファイルをテクスチャとしてブロックを生成しし,落ちてくるブロックとキー入力とのタイミングをOpenGLのキー入力関数を用いて計っています。キーを打つタイミングによって,Exellent/Good/Badの点数が与えられています。

残像 大津恭平 くん

 実空間における動きが残像を伴って画面に表示される作品です。VFX映画のような遊び心のある映像効果が評価されました。
 カメラで撮影した画像の各画素の輝度値の変化から前景領域を抽出し,前景の過去数フレーム分を現在の画像に重ね描きすることで,残像表現を実現しています。

カメラ目線 加藤由訓 くん

 カメラに写っている人が,実際にはどこを見ていても,必ずカメラ目線になってしまうという作品です。自分の顔が勝手に書き換えられる楽しさが評価されました。
 OpenCVには様々な識別器が収録されています。ここでは,目の検出機能を用いて,画像中から目の位置を求め,そこにあらかじめ用意しておいたカメラ目線の画像を重ね描きしています。

Solar System Simulator 甲斐常伸 くん

 太陽系の惑星の自転や公転,地軸の傾きをシミュレートして配置し,それを自由な視点から眺めたり,一つの惑星を自動的に追尾することを可能にした作品です。美しい完成度の高い映像が評価されました。
 OpenGLのテクスチャマッピング機能を活用し,適切な視点計算でこれを実現しています。

Fractal 河野瑛 くん

 フラクタル図形を描きだす作品です。フラクタルとは,部分と全体が自己相似な図形のことで,拡大しても同じような形が現れる図形です。美しい映像が評価されました。
 OpenGLで多角形を描くのと同様にマンデルプロ集合やジュリア集合を複素平面上に描くことにより,フラクタルを生成しています。

指でお絵描き 中村真也 くん

 指先の描く軌跡で実空間中に落書きをしているような体験ができる作品です。シンプルな処理によって,遅延のない直観的な操作を実現している点が評価されました。
 カメラで撮影した画像中の赤の成分が強い領域を肌色として検出し,そのライブ画像上に指先の軌跡を重ね描きしています。指先と肌領域の重心との距離から,指を伸ばして描くモードと,手を握って描かないモードを切り替えています。

Magic Slider 中島直哉 くん

 マウス・キーボード・遠隔操作の複数の操作に対応できるスライダーインタフェースです。多機能な実装が評価されました。
 OpenGLライブラリが提供するキー入力・マウス操作による画面操作と,OpenCVライブラリを使った物体追跡による遠隔操作を実現しています。物体追跡には特定領域の色の分布を用いる手法を使っています。

ロボット 佐々木達哉 くん

 ロボットの姿勢を制御して表示する作品です。複雑な構造をきちんと扱った点が評価されました。
 ロボットの各部位を行列によって階層構造化して表現することで,体の姿勢・向きを制御しています。行列演算を深く理解することで,このように3次元オブジェクトの構造的な制御が可能になります。