Archive for the Diffused Illumination Category

CNET Japanマルチタッチスクリーンを格安でゲットする方法という記事があったので読んでみました.
※おそらく,メンバがLEDパネルを作ってみたの記事の人が書かれたものと思われます.

記事中の「影絵でマルチタッチ」というところは,おそらく,
MTmini - How Toあたりを参考にしてるんだろうなーという印象.
実際に作ってみたい人は,上記のリンク先の情報の方が参考になるかと思います.
特に動画はオススメ.

あと,記事中の「Diffuse Illumination」のところで,

>あとはソフトウェアの画像処理でそのポイントを抽出し、複数の点を見つけるだけらしい。

という記述が個人的にちょっと気になりました。。。
#自身が現在苦戦しているところなので,ちょっと琴線に触れました.スミマセン.

ええと,冷静に補足してみると,引用されているFTIR vs DI at

>* blobs are not as clear and sharp, when compared to ftir

という記述もありますし,実際の体験上,FTIRに比べて接触部の輝度値はそこまで大きくならない,かつ
接触部以外(手のひら等)の輝度値も大きくなるので,ソフト側でそれなりに頑張る必要があります.
地味に難しいところだったり.

ただ,全体的には,一般向けの記事ということで読みやすかったと思うので,
Diffused Illumination developerが少しでも増えたらいいなーとか思ってみたりしました.

とりあえず,予備のカメラで久々にテスト.

前の実験時よりPCスペックが大幅に上がっているので,
640×480でキャプチャしつつ,画像処理してもサクサク動作します.

ただ,画像処理側でアルゴリズムをもうちょっと頑張らないといけないところがありそう.
#指を動かすとトレーシングペーパーがずれたりするのでしっかり固定しないと(苦笑)
#あと,よーく観てると指以外のblobが出てたりします.地味に難しい。。。


Diffused Illuminationが一向に進まず,頭が痛い今日この頃.恒例の週報(?)です.

例のごとくNUI Groupのコミュニティをいろいろ探っていますが,
Getting Started With MultiTouchという記事はなかなかまとまってていい感じです.
スレッド番号が1982ってのにも妙に親しみを感じるし。。。

それに,Front DIRear DIを分類して説明している記事はなかなか無いんですよね.
まぁ,どの手法も一長一短ですが,fiducial marker使うなら現状Rear DIだと思います.
#追記で挙げたDSIという手法でもfiducial marker使えるみたいです.

あと,カメラ注文中なので試せませんが,Diffuserやアクリル表面の加工方法で
工夫の余地がありそうなのでいろいろ検討中.

【追記】
DSI - Diffused Surface Illuminationという方法も提案されているみたい.これは初めて聞いたかも.

【追記:2008/06/10】
DSI - Diffused Surface Illuminationの説明をざっと読んだところ,PLEXIGLAS EndLighten
という特殊な素材を使うことで,FTIRの機器構成をほぼそのまま流用して,fiducial marker
使えるようにする方式みたいです.

ただ,どういう原理で図にあるような光の進み方になるのかがさっぱりわかりませんが。。。

あと,サイトにも記述がありますが,カメラ方向にもIR光が出るみたいなので,得られる
blobのコントラストは良くないとのこと.ただ,動画を観た感じだとコントラスト的には
十分な気はするのですが,どうなんでしょうか?

Multi-touch関連で最大のコミュニティだと思われるNUI Groupのコミュニティでも
IR光の照射方法やblob detectionについていろいろ議論されているようです.苦労が共感できて泣ける。。。

ええと,話を戻して・・・
フォーラムをざっと眺めて,個人的に参考になりそうなスレッドはこのあたりかなと.

MTmini Package - How To Setup Touchlib for use with a MTmini
Help, My DI Setup question

1つ目のスレッドで紹介されている方法は,初代テーブルの検出方法に似てた(苦笑)
まぁ,ベタだけど簡単なやり方としてはこうだよなぁと.これだと若干不備がありそうだけど.

あと,Touchlibはサンプルプログラムなんかも入ってて至れり尽くせりみたいですね.
ただ,個人的にはアルゴリズム考えるのが楽しそうなので,ここら辺は自力でやりたいところ.

ということで,早くカメラを入手しないとなと.
画角が広くて改造しやすい手頃なwebカメラはないものか。。。
(画角が仕様に記載されているwebカメラって思ったより少ないので結構面倒)

忙しくてDiffused Ilumination関連が進みません.とりあえず,情報収集でもやってみました.

Touchwall: Microsoft’s Inexpensive Wall-Based Multi-Touch Interface
最近,いろんなサイトで話題になってましたね.上記サイトによると,Microsoft Surface
cameraベースのvision systemなので$10,000近くかかるけど,Touchwallは3つの赤外レーザー
で表面をスキャンするシンプルな構成なので$100くらいでできるとのこと.

MTmini - How To
Diffused Illuminationのミニバージョン.$50くらいで作れるらしい.

How I built ORION mt
必要なハードウェアとそのスペックが書かれています.
機器の配置が写真から分かるので参考になりそう.
あと,あの入力画像からどうやって指先領域を強調しているのかが気になる。。。

ちなみに3つ目のblogエントリによると,Xbox LIVE® ビジョンというカメラは,
・Windows XPに対応
・解像度:320×240,フレームレート:60fpsでキャプチャ可能
・改造しやすい
ということでオススメらしいです.ただし,公式サイトをよーく見ると,

(*3)Windows Vista® には対応していません。

の文字が。。。なんというVistaユーザ迫害.orz

(more…)

先週末から体調崩して何もできなかった。。。週明けても不調続行中.
救いは仕事中は集中してるせいか,パフォーマンスが落ちないことくらい?
まぁ,仕事終わったらドッと来ましたが(そういや体調悪かったなぁと).

とりあえず,帰ってから一作業して寝るぞー!!ということで,
急ごしらえでDiffused Illumination指先検出プログラムを組んでみる(行動可能時間30分).

この前の動画にもあるように接触した指先領域の明度が高くなっているのが
確認できたので楽勝だと思ってましたが,触れてない掌領域も明度が
若干高くなるため,以前作ったプログラムでは安定せず.地味に難しい。。。

とりあえず,思いつきのアルゴリズム実装で検出は安定したものの処理速度に難あり.
ここらへんは体調戻ってから考えるか.ということで今日はここまで.もう寝る!!

テーブル2代目を使った最初の実験.相変わらず光の当て方が難しい。。。
鏡の角度やライトの位置を変えながらテスト中です.



03/27 追記】
現状のテーブルはこんな感じ.
#見栄えなんて関係ねー!!

IRフィルタを初代の頃と通過波長帯域が違うものに変更してみました.
あと,大きなトレーシングペーパーが手元にないので,A4サイズのものを8枚敷き詰めて実験中(苦笑)

テーブル2代目実験開始

Diffused Illuminationのフレームを地味に製作中.
ということで,テーブル初代と2代目を公開してみます.
※(a) 初代の画像はかなり昔に撮ったものなので,現在のものとテーブル面が若干違います.
※(b) 2代目はフレームにアクリル(未開封)をのっけてるだけなので,かなり未完成状態です.


テーブル初代
 
テーブル2代目

ええと,初代は明らかにやっつけ感が漂ってますが,いろいろデータを取るのに活躍しました.
ちなみに,これまでの実験動画は初代で行ったものです.

満を持して作成した2代目は縦・横・高さともに約2.5倍に!!そして,部屋が狭くなりました。。。 orz
あんまり考えずに作ってたらこんなサイズになってしまったというオチです(計画性無さすぎ).
まぁ,大は小を兼ねるともいうしね(違) と,とりあえず,これで思う存分遊べることでしょう.

あと,ガムテープで止めてるところが前方に1箇所ありますが,ネジが途中で足りなくなったので
応急処置的に止めてます.土日を使ってちゃんと作らないと。。。

工学ナビさんのblogにてゼロからはじめるARToolKit on VisualC++ 2008 Express Edition
という記事が公開されているようです.技術共有の精神,見習いたいところ.

あと,Diffused Illuminationのフレーム設計図を手書き中.平日はなかなかやる気がおきないダメな子なので(スロースターター)

最近,近所のスーパー(?)に木材が安価で売ってるのに気付いたので明日買いに行く予定です.
なので,明日,木材買ってる20代の人間を見てもそっとしておいt(以下略)

それに伴って,ソフトの方も仕様固めないとな。。。
とりあえず,指先認識サーバーを模倣するようなプロセス通信アプリを適当に作ってみようかなと.

【追記】
wikiに赤外線光の照射方法について少し書いてみました.

*****
【余談】
先日,blogに書いた本が届いたようです(届いたとの電話がきた).
電話では喜んでたのかがイマイチわかりませんでした。。。(苦笑)

なんとなくヒントが見えてきたので,Diffused Illuminationの実機を作ろうかなと計画中.
ここからは自分用のメモなので,大多数の人には全く情報量がありません.あしからず.

【フレーム】
現在,実験中ということもあり,フレームは段ボールと紙パイプという味のあるダメ構成になっているので,いい加減ちゃんと作ろうかなと.

こういうのって海外だと木材を使ってやってるのをよく見かけますが,試行錯誤の際に後戻り
が大変そうなので,鋼材アングルを使った方が良さそう.使う数量を計算しないと。。。

【ソフトウェア】

おそらく,接触点検出プログラム(タグ検出も含むかも?)とアプリは分割した方が汎用性がありそう.あと,追跡する指先が1つならマウスの動きに置きかえた方が作るの簡単だけど,マルチタッチに対応するとなると,ちょっとそれだと無理そうだな。。。

なので,

[指先] 検出数:fingerNum,座標:fingerPt(x, y)-> 配列(vector)
[タグ] 検出数:tagNum,座標:tagPt(x, y)-> 配列(vector)

のデータをプロセス間通信でもやるといいのかな(多分)