この記事は eeic (東京大学工学部電気電子・電子情報工学科)その2 Advent Calendar 2016 の16日目の記事です。
はやめに投稿した気がしてきたが、多分大丈夫。
クリスマスも近いし、EEICのみんなさんはかわいい女の子やイケメンを持ち帰りしたいですよね?よね?
21コマでそもそも彼女作れそうではないので、みんなさんに簡単にかわいい女の子を持ち帰り方を教わりたいと思います(上から目線
http://pointclouds.org/
とりあえず、女の子を用意する、3Dモデルが望ましいです。モデル化できるリアル女子でもいいですが、そもそもリアル女の子を用意できる人はオタクにはならない、なる必要がない。
それと厳密な数学モデルを説明してくれと期待してる方はお帰りになってください。
PCL ポイントクラウドライブラリPOINT CLOUD LIBRARY、あるゆる3次元点群を扱うアルゴリズムの詰まった素晴らしいAPIです。言語サポートは確かにC++だけ。PYTHON PORTもあるらしいけど
使ったことないので、興味ある人はぜひ見て教えてください。
じゃなにができるの~?という君
具体的になにかできるかというと。
Kinect Fusion
KINECTを使って3Dスキャンするアプリケーション、アルゴリズムはPCLの中にある。
論文
http://research.microsoft.com/en-us/um/people/pkohli/papers/uist_2011.pdf
MSRから出てきたアルゴリズム
一般的なICPの上に、フレイムの間に移動が僅かであると仮定して(計算量的に)シンプル化したアルゴリズム。
それと最近だと、ちょうど先日マカオ(最高)で開催されたSIGGRAPH2016でも公開されたものでこちらになります。
Fusion4D
論文:http://www.samehkhamis.com/dou-siggraph2016.pdf
オープンソースにはなってないかも(まだ読み終わってない)
上との違ってKINECT20台くらいで撮ってるけど、それでも今まで一番すごかったしやすい(似たようなシステムに比べて)。
それと、PCLのホームページにいくとインストールマニュアルあるので、説明はしないと思うが、WINDOWSでやるとややめんど。UBUNTUとかがおすすめです。(APT-GETから行けるはず)
これで、君も自宅をスキャンして、3Dモデル入れてみましょう。
実例 : https://twitter.com/nobelchoco/status/782425311451414528
PCLでやると割りと簡単にできる(多分そうやってるわけではないが)
流れとしてはスキャンして、ダウンサンプルーー>距離フィルタリングー>ポイントの法線を計算してー>平面検出してアリシアさんをそこに置く仕組みになってるはず。(3Dカスタムめメイドをバイト先のパソコンを入れる勇気がないので、どなたがry)
そして、「KINECT持ってないけど」の君にも、STEREO VISIONと古き良き手法もあるので、
要は2つのカメラをくっつけて、2つのストリームからの画像を比較して距離を計算するタイプ。
精度かなり下がるけど、OPENCVとかでドキュメントされてて作りやすいです。
最後にスマホじゃできない?という君にも
同じくMSRから2014年の論文 :https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/depth4free_SIGGRAPH.pdf
スマホのカメラに赤外線LEDつけるだけでそれなりに精度出るやつ、近距離用なので、女の子()との触れ合いとして使うのはいいかもしれないが、さきのようなことはできないと思うのでごちゅういを。
以上、彼女を作る技術のまとめのようなものになっております。
興味あるや一緒になにか作りたい人はぜひ僕に声かけてみてください、ツイッタでもリアルでも。
では諸君!セイ夜のご武運を祈る。