Saqoosha

スーパー高速に射影変換するには

Blog

昨日のてら子で質問にあった射影変換の高速化。気になったのでやってみましたよ。射影変換 (Homography) てのは↓こういうのを言います。

2009052501-Homography

左のようなパースのついた画像から、真っ正面むいてる絵を取り出すのに使ったりするですね。まーったく理論とかわかってなかったのでいろいろググって探してみたところ、AS3 で書いてる人がいたのでこれをベースにやってみました。OpenCV のソースみてるとかなり複雑そうだったのにこれはすごくシンプル。意外と簡単。

高速化の方法としては 2 つ。1 つは、Pixel Bender を使う方法。もう 1 つは DisplacementMapFilter を使う方法。両方書いてみた。で、処理速度を計測してみた結果。

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
.TestSuite (20 iterations)
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
method...................................................ttl ms...avg ms
Test1_setPixel                                             6594   329.70
Test2a_PixelBender                                          155     7.75
Test2b_PixelBender_Smoothed                                 187     9.35
Test3_DisplacementMap                                        87     4.35
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
それぞれの方法で 20 回処理した時間が ttl ms。avg ms は 1 回あたりの平均処理時間。Test1_setPixel てのが元のコード。329.7ms。これじゃリアルタイムには使えない。Test2a_PixelBender が Pixel Bender 版。40 倍高速。さすが。Test2b_PixelBender_Smoothed これも Pixel Bender なんだけど、sampleNearest じゃなくって sampleLinear で色を取ってきてるので画質的には一番きれい。で、最速、Test3_DisplacementMap。DisplacementMapFilter 版。(あー、ちなみにこのベンチマークテストは gSkinner の PerformanceTest クラスを使わせてもらってます。便利。)

まあ数字だけ見ると DisplacementMapFilter が一番かなっと思うのだけど、画質がけっこうアレでして。このサンプルで一番歪みが激しい左上のを比較してみるとよくわかる。

20090525-Homography2

というわけで、速度的には、DisplacementMapFilter が一番速いけど画質も考慮すると Pixel Bender (sampleNearest) がベストですかね、っと。

ソースはこちら。

追記:Test3_DisplacementMap には DisplacementMap 用の画像を生成する時間が含まれてないので、対象となる四角形がグリグリ変わるのなら Pixel Bender のが断然高速。って、あー、そっか、Displace map を Pixel Bender で作ればいいのか。

キミも覚悟を示せ。

BlogFLARToolKit

20090525-Jfaflar

海外では FLARToolKit の商用案件がぞくぞくと出てきていて、うちにもそいうい話はいっぱいくるのになかなか実現しなかったのね。まあ、でも、よーやく、僕も、FLARToolKit でお仕事できましたよっと。

adidas のサッカー日本代表を応援するコンテンツ。「adidas×サッカー日本代表

2009052502-Kamo-1の、Web サイトの中、、、じゃなくって、店頭イベントで FLARToolKit が使われてます。ケータイサイトで応援メッセージを投稿すると日本代表のエンブレムに描かれている 3 本足の烏がデザインされたマーカー壁紙がゲットできて、それを店頭に設置してあるモニターにかざすとみんなの投稿したメッセージがそのマーカーから飛び出してくるって仕組み。長い。こんなん→

ケータイのマーカー認識はなかなか大変だわ。ちっちゃいし暗いし。まあ、なんとか使えるレベルまでにはしたつもり。このへんの改良はそのうちコミットします。そのうち。

ほんとはこういうのって、本家の ARToolKit 使って C 言語でガリガリ書いたほうが認識精度も動作速度もいいと思うんだけど、演出面に凝るとかネットワークを使うとかになってくると開発期間も長くなってコストもかかっちゃう。できる人もすごく限られる。その点、Flash なら割と簡単にできるから使ってもらえる機会も多いというわけですな。このプロジェクトもそんな感じ。(Java 版とか Processing 版はちょうどその間ぐらいの感じかな。)

あー、そうそう、BetweenAS3 も使ったよ! Bezier な動きも欲しかったから Tweener 併用だけどw

つーわけで、このイベント、まずは大阪の茶屋町、サッカーショップ加茂で体験できます。その他、澁谷、新宿など、5 ヶ所で 1 ヶ月ほどやってますので、お近くの方はサッカー日本代表を応援しがてら、体験しに行ってくれたらいいんじゃないかなー。詳しくはこつら。

追記:広告会議の中の人の体験レポート
追記:5/27 と 5/31 の日本代表戦でもやりますよ!
追記:5/31 の国立競技場イベントに某 Flasher たちも遊びに来てくれたよ!

Categories: FLARToolKit

大阪てら子 23 「みんなで作る特別授業」

Blog

2009061401-teraco23.jpg

6 月の大阪てら子はこんなん↓らしい。いちおううちでやるらしい。僕は参加しないらしい。

・・・

【 テーマ・概要 】 みんなで作る特別授業 6/27(土)

みんなで3年B組ごっこをします。その合間に勉強会します。
内容はFlashに限りませんが最終的にwebに落とし込める内容になればいいなと思っています。

勉強会って言っても、申し訳ないくらいゆるーい感じですので皆様お気軽に是非!

詳細はこちらまで → http://atnd.org/events/831