Magiquand1.0公開 [OpenCV関係]
昨日の時点でとりあえず動いてると思えたので、昨夜遅くまで(というか明け方近くまで)かかっていっきにバージョン1.0に仕上げた。こういうのってやり始めたら一段落するまでやらないと、何やってたのかわからなくなってしまうので片付けた。いつものようにいちげんさん向けサイトも作った(そしていつもの通り英語版も作ってある。これもいつもの怪しい「しんぐりっしゅ」だけど)。例によってhtml手書きの簡単なもの。ダウンロードはこのサイトの一番下からできる。
昼間の仕事もこのくらい集中できればいいのに...
ベータバージョンからの修正点は
フルスクリーン対応は、お子様向け。どっちにしても大人が遊んで楽しめるようなアプリではないので、子供さんに遊んでもらおうという考え。iMacの前で自分の姿を見ながら踊ってもらうためには、フルスクリーンにした方が見やすい。
アプリのアイコンは、お子様にもアピールしてキラキラのイメージが伝わるようにミュシャのヒヤシンス姫にご登場いただいた。アイコンを変えるだけで一気にアプリの魅力が増したような気がする。もちろん気のせいだけど。
実はCore Animationのstderrメッセージや、32バイト単位のリークは修正できていない。これは僕のせいじゃないぞ、と暗に言いたいということなんだけど。CAEmitterLayerの座標もよくわかってないまま。CALayerの乗ったNSViewをリサイズしてもCALayerのジオメトリに関するproperty(frame、bounds、position、contentsScale、trnaformなどなど)はなにも変わらない。全然理解できない。しかしまあ、そのうち何かのきっかけで思想がわかるようになるだろう、との観測で公開には差し支えないと判断した。もしわかれば1.1を公開したい。
バージョン1.0を作ってみてひとつわかったことがある。Optical Flowはまず画像の特徴点をOpenCVのcvGoodFeaturesToTrack()関数を使ってひろいだして、それをもとにcvCalcOpticalFlowPyrLK()でOptical Flowを計算する。InstrumentsでProfileしてみると、アプリ全体の30%近くをcvGoodFeaturesToTrack()が消費して、cvCalcOpticalFlowPyrLK()はその半分くらいしか負荷がない。画像ピラミッド(同じ画像の解像度を変えたものを作って荒いものから探索して狭めていく)が効率に効果的ということなんだろう。いっけん誰でも考えそうなアイデアなんだけど有効なアルゴリズムとそうでないのがある、ということでなかなか面白い。
そもそもなんでこんなアプリを作ろうと思ったかというと、OpenCVを使ってユーザの視線やジェスチャを検出して、あるアプリの動作をさせたかったから。なんだかまるで本来の目的を忘れてしまったみたい。というかほんとに忘れそうになっている。これを仕上げたことで、本来の目的に興味を戻したい。
でもどっちみちいつもバージョン1.0を作るとそれに興味を失ってしまう。本来ならそれではいけないとは思うんだけど、ついついつぎつぎにやりたいことができてしまって興味がそっちに移ってしまう。そういう時ってみんなどうしてるんだろう....
昼間の仕事もこのくらい集中できればいいのに...
ベータバージョンからの修正点は
- 表示しないなどの致命的なバグを除いた
- パラメータをユーザが変更できるようにした
- 日本語リソースを作った
- フルスクリーンに対応した
- アプリアイコンを整備した
フルスクリーン対応は、お子様向け。どっちにしても大人が遊んで楽しめるようなアプリではないので、子供さんに遊んでもらおうという考え。iMacの前で自分の姿を見ながら踊ってもらうためには、フルスクリーンにした方が見やすい。
アプリのアイコンは、お子様にもアピールしてキラキラのイメージが伝わるようにミュシャのヒヤシンス姫にご登場いただいた。アイコンを変えるだけで一気にアプリの魅力が増したような気がする。もちろん気のせいだけど。
実はCore Animationのstderrメッセージや、32バイト単位のリークは修正できていない。これは僕のせいじゃないぞ、と暗に言いたいということなんだけど。CAEmitterLayerの座標もよくわかってないまま。CALayerの乗ったNSViewをリサイズしてもCALayerのジオメトリに関するproperty(frame、bounds、position、contentsScale、trnaformなどなど)はなにも変わらない。全然理解できない。しかしまあ、そのうち何かのきっかけで思想がわかるようになるだろう、との観測で公開には差し支えないと判断した。もしわかれば1.1を公開したい。
バージョン1.0を作ってみてひとつわかったことがある。Optical Flowはまず画像の特徴点をOpenCVのcvGoodFeaturesToTrack()関数を使ってひろいだして、それをもとにcvCalcOpticalFlowPyrLK()でOptical Flowを計算する。InstrumentsでProfileしてみると、アプリ全体の30%近くをcvGoodFeaturesToTrack()が消費して、cvCalcOpticalFlowPyrLK()はその半分くらいしか負荷がない。画像ピラミッド(同じ画像の解像度を変えたものを作って荒いものから探索して狭めていく)が効率に効果的ということなんだろう。いっけん誰でも考えそうなアイデアなんだけど有効なアルゴリズムとそうでないのがある、ということでなかなか面白い。
そもそもなんでこんなアプリを作ろうと思ったかというと、OpenCVを使ってユーザの視線やジェスチャを検出して、あるアプリの動作をさせたかったから。なんだかまるで本来の目的を忘れてしまったみたい。というかほんとに忘れそうになっている。これを仕上げたことで、本来の目的に興味を戻したい。
でもどっちみちいつもバージョン1.0を作るとそれに興味を失ってしまう。本来ならそれではいけないとは思うんだけど、ついついつぎつぎにやりたいことができてしまって興味がそっちに移ってしまう。そういう時ってみんなどうしてるんだろう....
2013-10-03 22:07
nice!(0)
コメント(0)
トラックバック(0)
コメント 0