科学祭プロジェクトと、マーカーレス拡張現実感プロジェクトの発表を見た。ARチームのうちわデモがうまくいっていた。カメラから頂点が取得できたとして、どの点でどうマッピングすればいいのかという問題について考えた。取得した画面上を左上〜右下へと走査して、取得した頂点に順番に1、2、3、...と番号をうつとする。すると、屋根の頂点は番号1・2・4・5、側面は4・5・7・8、前面は2・5・8・6、という組み合わせになる。いうことが分かったが、カメラ位置に依存しあまり確実ではないので有用性は低い。SURFによる特徴点検出で屋根、側面、前面の検出が出来るかと考えたが、模型の形的に屋根と側面の判別が出来そうになく断念。他に、3D形状のデータをあらかじめパターンファイル化するなどして検出する方法を調べた。PSeyeを使って模型の家を撮影するのは暗くて難しく、Pseyeの設定をいじって明るくすると、ノイズが混じってしまう。そのままハフ変換をかけると画面上あちこちに線が検出されてしまうため、通常のUSBカメラで撮影することにした。通常のUSBカメラでは、輪郭を黒でなぞった家はハフ変換で輪郭抽出できるが、何も加工していない家だと光源によって輪郭抽出できたりできなかったりする。輪郭つきの家でマッピングが出来るようにしたい。その後、作業中にUSBカメラが断線した。断線したUSBカメラを直した。TAでゲイナーを教えるという人に色々と質問された。その人はmacを使っていて、processingの新しいバージョンでフォルダ構造が少し違ったので戸惑った。openframeworksのハフ変換のソースに苦戦した。opencvの色んなクラスライブラリ?を参照するので難しい。あとでゆっくり読みます。3dのモデルは決まっているので常に映る面から頂点を決めてみては?その際頂点の順番を考えてみて。家の模型を写真で撮り、バイナリ化した画像でのハフ変換による直線検出を見せた。輪郭を綺麗に抽出した画像ならば直線抽出は行えることがわかった。今後は、辺から頂点情報の取得が課題となる。openframeworksでopencvのアドオンを使う方法について質問した。ゼミ後、addonexampleからコピーしてきたプロジェクトファイルを用いることでopencvが使えた。うまく画像から頂点を取得する方法は無いかと、opencv(openframeworksでは無い方)のc用サンプルプログラムをいくつかビルドして確認した。数が多かったり、エラーやファイルサイズの大きさに苦戦した。イジローの撮影を手伝った。opencvのサンプルプログラムを全てビルドした。vc++のパスについても、以前より大分理解できた気がする。以前先生に教わったSURFを用いた特徴点検出も実行することが出来た。動作が重たしばらくするとアドレス違反?のようなエラーが出る。openframeworksのフォーラムを検索したところ、openframeworks用のハフ変換のcppファイルとヘッダファイルを見つけた。openframeworksのハフ変換のプログラムを組んだ。家の模型の各辺にマジックで色を付け、pseyeで直線検出を行った。映像がグレースケールなので、辺にマジックで色を塗っただけでは取得し辛いが、家の輪郭や屋根の四角形を抽出できることが確認できた。hullが使えないかと思った。最外の点を繋ぐ方法なので、模型の単色塗りならこれで出来るかもしれない。...メモリーリークっぽい。宣言した配列を使わなくなったらちゃんと開放してあげてますか?C/C++はJavaなどとちがってメモリ割り当てをプログラマ側で面倒みてあげる必要があります。配列はその一番顕著な例。私もよくやらかします。ミュージアムにてイジローを展示した。Twinkleの論文を読み、仕組みを解説した。メインとなるシステムはハフ変換による形状検出だった。天気家の模型は直線を多く含むので、カメラで読み取れないか検討する。Openframeworksを使ってみることに。