[![image010.jpg](http://blog-imgs-42.fc2.com/a/k/i/akihikofr/blog_import_4f563fa5dcbd0.jpg)](http://blog-imgs-42.fc2.com/a/k/i/akihikofr/blog_import_4f563fa5ef45c.jpg)

先週末から直接教鞭を取るようになって来たのだが、その最初の科目になったのが「Travaux Pratiques」=Tutorial、約3時間で「必ず成功できるVRに関係する実践的な課題」というのを与える。まあ日本の工学部で言えば「~実験演習」というやつだ。全部で6つあって、他には・HMDのつかいかた・データグローブの使い方・3次元音響・Virtools独自ビルディングブロックの開発・分散レンダリングと、けっこう面白くて新しい話題も扱ってる。で、私の「GPUVision」を使った「コンピュータビジョンの基礎」。基礎、といいながら最先端のGPUをつかった高速コンピュータビジョンなところが侮れないが、演習の半分以上は地味な測量をやらせる。それというのも、一言に「カメラ」といってもデザイン学や情報系出身の学生は三脚の扱い(の手順の本質)も知らないし、シャッタスピードやアイリス、ホワイトバランス、オートフォーカス、AE、光学ズームとデジタルズームの違い、画角と焦点距離…といった光学の基礎のようなものがわかってなかったり、あやふやだったりするので、線形光学のレベルでも理解しておかないと、以下のような例に出くわすのでしっかり演習させてみた。・使ってるプァ��ジェクタの最近投影距離を知らない・カメラの画角と焦点距離を知らない・なのにシステムの全体図だけは描いてしまうまあこんな例は、出くわしてから困ればいいんですが、日本の学生と同じく、プログラミングとか遊びのセンスがある学生ほど、三角関数とかが忘却のかなたに去っていたりするのでいい頭の運動にはなるかと。というわけで、お暇な方は試してみてください。・ビデオカメラとメジャーを用意・ある奥行き(1)において、水平垂直の画像幅(2)を測定する。→画角は何度か?・ズームを最大と最小にして、誤差込みで計算してみよう・このカメラでWindowsMovieMakerで10秒キャプチャして、DV-AVI形式とWMV形式でファイルのサイズを比較してみよう・このカメラの映像を320x240で処理したとして、ある奥行き面( )mmにおける、1ピクセルあたりの水平・垂直の解像度は?けっこうこういう基本的なパラメータって、カメラ買った後に調べるしかないんですよねえ。本当は「広角の収差が少ないレンズが欲しいのに」なんてことがよくあります。まあ選んで買えないまでも、買ってからスペック試すのは大事なことぁ��と。で、測量がおわったら、やっとプログラミングです。例によって.NET のライセンスがそろってないので、コンパイルなしで実験できるよう、工夫してあります。ピクセルシェーダーを使ってGPUコンピュータビジョンを実装するのですが、HLSLを使います。なぜかというと、これなら変更→実行で.NETによるコンパイルがいらないし、ドキュメントはmicrosoftのMSDNにそろっている。しかも覚える関数なんて沢山ないから、C/C++ができる学生なら、何の苦もない、ただセンスにしたがって試せばいい。さらに大盤振る舞いで、多階調マスクBMPやスクリーンショットも使えます。まあこの辺はRoboGamerでmasafumi君と一緒に開発したものをちゃんと動くようにしてあるだけのことなんだけど。で、CPU側のプログラムは、FF値になってるRGBそれから白のピクセルをカウントして、平均座標を出力して、元画像にオーバーレイするだけ。まあこれもGPU度を上げることはできるんですが、それをやってしまうと、学生が試せる場所がどんどん減ってくるし、プログラムのメンテと安定動作に不安があるのでやめといた、てゆか次の更新ぐらいに。レポートは月曜日までに、と言って��おいたのだが、いくつかのグループがまだ出してない。まあいいや、こういうときは外人の振りして冷酷にとぼけよう…成績つけるわけじゃないしねえ。スクリーンショットは提出学生のレポートより。ソース画像にどっかからもってきたガンダムSEEDを使っている…。もしかしてガンクロスつくりたかったのかな?ガンダム認識シェーダーとかまで書いてくれればよかったんだが…あと2・3歩だなあ。明日も沢山教える予定。