2015年5月14日木曜日

ローテクミックス指向

最近JavaやMSのプロダクトをしばらく無視してシステム開発をしている。
この理由は、JavaScriptに傾倒しているからで、P5JSを使うと簡単に音やカメラ
が直接WEB上で使えてしまう。ブラウザにより使えないことを無視すれば理想的環境。

あまりにもすっきりした開発にシフトしている。ここまでシンプルになるとあまり
どのシステム開発も大差がないように感じる。もちろんサーバ上でしかやれないこと
もまだまだ活躍中なのですが、あまりにも簡単なシステム開発なのでアルゴリズム
に集中できるメリットがある。プログラムを組もうとすると最新のJSのフレームワーク
を検索すると既に存在しているのでAPIを呼ぶだけで目的を果たしてしまう。

これではもう誰が開発しても同じではないかと思える今日この頃ですが、最新の動画を見て関心するのは、ローテクミックス指向が断然面白いと思うし、可能性がまだまだ残っている領域だと考える。

赤外線、偏光版、サーマルカメラ、脳波計、サウンドミキサー(最後の3つはハイテク)等々、今ではほとんどの基礎的な研究やアルゴリズムは発表されていて、自分にとって未知の分野に踏み込むと殆どが周回遅れになっている時代。
世界中の特許なんかもどんどん出願されていて全部リサーチしているわけにはいけない今日この頃、
こんな訳でこれからはローテクミックス指向をモチベーションとして取り組んでみようと考えています。






2015年4月5日日曜日

kinect fusionを検索する

kinect fusionをググると3900件しかヒットしないことに驚いた。
遅らせながら調査すると、2013年には既にkinectFusionの話題になり、
昨年にはYouTubeでもリアルタイムで3D化できていることを知る。

又昨年Webカメラから簡単に赤外線カメラにする方法が公開されていたので、
早速手っ取り早く追体験してみた。

用意したものは、WEBCAM130万画素、赤外線LEDです。
可視光を遮断しなければいけないですが、暗闇の中で赤外線だけを使い撮影することにより、可能性を調査することにした。
顔を取り込もうとしたところ、とても使い物にならない感じだったので、顔の半面を5分割でスキャンすると、鼻や口の凹凸がある程度、直接depthMap画像で取り入れることができた。
でもこれはカラー写真でも綺麗に撮れたモデルの目元近くを、depthMap画像として扱うと
ある程度綺麗な3D写真になることが解っているので、単なる光の反射だけによるものかも知れない。
いずれにしろ、赤外線写真にしたことにより結果二色写真になったので、depthMapとして
扱いやすくなることが理解できた。

近い将来、この手法による直接物体を3D化する技術が安価で提供される可能性を感じとれた。

追伸:
この話題は既に研究が進んでいて、
Infrared and Visible Image Fusion for Face
のタイトルで検索できるようです。

改善:
Canon PowerShot A2200+赤外線で暗室で顔を撮影したところ、
顔全体の写真でも鼻の線が取得できることが解りました。
鼻と頬の間については補正計算が必要なので、直接は使えませんが
入力手段の一つの選択肢にはなると思います。
次は、室外の自然の赤外線写真も利用価値がないか模索してみようと
考えています。

2015年3月25日水曜日

ワンランク上を行くサイト

2D43D(2Dと3D変換)について調査していたところ、
HeightMapとBAS-Reliefが一般的な手法であることを知らないでいた、
改めて考えると古代ローマの頃から存在していた手法なので
「何時か来た道」と理解した。

通りすがりに何やらすごいサイトに出会ったので紹介させていただく。
http://www.cnc4free.org/
でシステム開発の自動化の手法をフリーのツールや手法を動画でも丁寧に説明してくれる。

まさしく最先端のサイトなので是非一度アクセスしてみると面白い。
私は、YouTubeを「Inkscape Overview」見たので早速BAS-ReliefをInkscapeで作成してみようと思う。

追伸:
それにしても、以前は調査でググって、ファイル縛りで文献をちまちま目を通していましたが、慣れない英語の上頁数も半端ない感じのものが多いので、一日中検索に時間を使ってしまうこともありおかげで視力が増々低下してしまいました。
今では、キーを頼りに画像で検索するほうが全体がつかめる場合があり重宝しています。
また3D系の調査ではYouTubeの方が文字の説明よりも解りやすい場合があり、何か物凄い変化を感じています。
結論:
この後さらに実験をしたところ、
Sculprisでオブジェクトファイルを作成し、
これをMeshLABでdepthmapを作成してSceneJSで表示できました。
無料のツールで効率よく完成度もまあまあ満足できる手法であることが判明しました。
GIMPでも平面が中心の物体は作成できるようですが試していません。

2015年3月18日水曜日

データ駆動型で変わること

昨年日本の経済産業省が「データ駆動型(ドリブン)イノベーション創出戦略協議会」を立ち上げた、大変良いことだと感じた。
ようやく日本のソフトウェア業界が、「オブジェクト指向」や「アジャイル開発」の呪文から解放され、次の流れが始まる期待がします。

データ駆動型で変わることはなにか、一番は基盤又はエンジンを作成している層とデータを作成している層の責任分界点が明確に分割できることだと私は考えています。
今まで、オブジェクト指向でも確かに基盤やフレームワークの層とこれを利用するアプリケーションの層に二分されていましたが、どちらも仕様の変更が頻繁になる時期がありようやく落ち着いてくると、次のデバイスやインフラの流れで再利用が殆ど行われないできました。システムサイドの仕事がなくならなくて良いのでしょうが、ユーザは何やらテクノロジーが変化しているのでしょうがない事態にしか思えません。
データ駆動型は別の意味でデータ中心的な開発方法であり、データ宣言やデータ定義が開発の中心になり、開発が安定し再利用率も向上することが予想されます。

方法論についてはこれぐらいにして。

ここで紹介したかったのは、JavaScriptでのデータ駆動型の成功例です。
D3JSは有名なフレームワークで既に誰でも知っていることと思いますが、SceneJSは検索でヒットする件数が非常に少なく、あまり知られていないです。

SceneJSとは「ブラウザの3Dを扱うエンジン」で、非常に容易にWebGLを利用した3Dを扱うことができます。他にもThreeJS,BabylonJS,Away3D,JSC3Dがありますが、データ駆動型ではありません。

SceneJSの特徴は次のような感じです。
1.JSONのNodeデータを階層型に設定するだけで3Dの画面を完成できる
2.階層的に定義した情報を、再利用して複雑な構造の物体を作成できる
3.データの判断、繰り返し等の手順も定義できる
4.非常に整理されたスクリプトで構築でき、人のソースの可読性が高い

ただし、欠点もありリアル感が大事な影の表現ができません。自分が扱っているPCでは時々動作が重くなります。
多分、あまり注目されていない理由は、スマホには現在のところ向いていないことだと思います。

今後注目されるデータ駆動型開発の例として一度体験されると面白いフレームだと感じています。
又単なる3Dツールとして、BlenderやMeshLabで作成する別の手段としてSceneJSが使えるとも考えています。