サイトをご利用になる方のための掲示板です。
同一目的でお越しになっている方が多いようなので質問してみるならこちらでされてみては如何でしょう?

【拡張現実】KINECTが変えるセンシングの世界【トラ技8月号予告編】
- 管理人(☆Tomoaki Ueda☆)
2012/05/17 (Thu) 01:03:47
【拡張現実】KINECTが変えるセンシングの世界【トラ技8月号予告編】アップしました。
新疆ウイグル自治区にある施設 - 管理人(☆Tomoaki Ueda☆)
2012/05/03 (Thu) 08:05:12
Google Mapを眺めていたら、中国国内の新疆ウイグル自治区のタクラマカン砂漠東端に何やらスカイブルーの人工的な構造物らしきものを発見。めちゃくちゃ大きくて、京都市より大きい。10km×20kmくらいあるだろうか?興味を持ったので、拡大していろいろ詳しく眺めてみた。
Re: 新疆ウイグル自治区にある施設 - 管理人(☆Tomoaki Ueda☆)
2012/05/03 (Thu) 08:11:17
この施設の場所は、新疆ウイグル自治区のタクラマカン砂漠の東端に位置している。こんな砂漠の真ん中に何の目的で建設されているのだろうか?
Re: 新疆ウイグル自治区にある施設 - 管理人(☆Tomoaki Ueda☆)
2012/05/03 (Thu) 08:18:00
スカイブルーの四角い面の正体は水だと判明。
水路が伸びていて砂漠の地下水をかき集めているようだ。3万キロワット級の火力発電ユニットも発見。
これはきっと、砂漠の地下水からヒ素や塩分を除去して飲料水を得るプラントだと思われる。
多数のトラックも発見。
中国には飲料に適した水は殆どないから10億人以上の人口にどうやって飲料水を供給しているのだろうとかねてから疑問に思っていたが、これがそうなのだろうと思われる。だけどせいぜい1億人分の飲料水しか得られないだろうね。
Re: 新疆ウイグル自治区にある施設 - 管理人(☆Tomoaki Ueda☆)
2012/05/03 (Thu) 08:24:16
でも、こんな調子で砂漠の地下水を汲み上げ続ければ、この地域の乾燥化はさらに拡大するし、地下水に溶け込んでいる砒素の濃度が徐々に増加してくるはず。数年のうちに砒素濃度が除去可能なレベルを上回り飲料には適さなくなってしまうだろう。ちなみにこの水面は鏡として作用するから太陽光を宇宙空間に反射してしまい、地球規模では寒冷化の方向に影響を与えているはず。環境破壊の規模も大きい。
Google Mapを航空写真モードから地図モードに切り替えてわかった。ここは以前オアシスだったのだが、もう干からびている。おそらく水を取り尽くしたのだろう。そこでこの地域に流れ込む水源側から水をかき集めているわけだ。もう長くはないだろう。
ゴビ砂漠の方は、昔核実験が行われたので放射能汚染のせいで飲料には適さない。探してみたがそれらしい施設は見当たらなかった。
Re: 新疆ウイグル自治区にある施設 - 管理人(☆Tomoaki Ueda☆)
2012/05/04 (Fri) 19:07:38
昔オアシスだったはずの場所を探してみたが、やはり状況は燦燦たるもの。殆ど廃墟になっていた。やっと見つけたまだ無事らしいところもこんな感じだ。
http://maps.google.co.jp/?ll=39.748642,105.749931&spn=0.076682,0.169086&t=h&z=13&brcurrent=3,0x0:0x0,1
Re: 新疆ウイグル自治区にある施設 - 管理人(☆Tomoaki Ueda☆)
2012/05/04 (Fri) 19:11:42
典型的な廃墟の方。
http://maps.google.co.jp/?ll=39.956201,105.920198&spn=0.009556,0.021136&t=h&brcurrent=3,0x0:0x0,1&z=16
KINECTセンサのデプスカメラを自作するプロジェクト - 管理人(☆Tomoaki Ueda☆)
2012/03/28 (Wed) 22:07:20
Kinectセンサのデプスカメラに興味を持ったので、イスラエルのPrime Sense社の米国出願された発明の明細書を調査し、図面から動作原理を想定して、写真のような汎用機器の組み合わせで自作を試みました。
http://www.neo-tech-lab.co.uk/ARsensor/KinectSensor.htm
実験に使った装置構成
EPSON製プロジェクタ EB-S02 33,000円
ELECOM製カメラ UCAM-DLY300TA 3,500円
ヨドバシカメラ京都でポイント使って購入したのでプロジェクタは13,000円だった。
これはキャリングバッグ、リモコン付きで優れもの。
2600ルーメンは凄い明るい。オーバースペックだった。
画像キャプチャはDirectShowLib-2005.dllを使用。
Visual C#で作る。
後処理は取り敢えず、原理確認が目的だったので、
Excel VBA用NTL_Lib3DCG_ver048を使用。
原理が確認できたので、Visual C#で書き直す予定。
KINECTセンサの赤外線プロジェクタの投影パターン - 管理人(☆Tomoaki Ueda☆)
2012/04/08 (Sun) 19:35:54
YouTubeで偶然Kinectセンサのランダムドットパターンを赤外線カメラで撮影した動画を発見しました。IsraelのPrime Sense社の出願した米国特許明細書で確認してみたところ、多数のマイクロレンズのようなものでドットパターンを作っているようだということがわかりました。
ランダムドットパターンをExcel VBAで作成 - 管理人(☆Tomoaki Ueda☆)
2012/04/08 (Sun) 19:39:43
Excel VBAの2次元グラフィックスライブラリを使って、このランダムドットパターンを合成してみました。1280×1024画素で、ドットの半径は10画素になっています。
ランダムドットパターンの部分パターン - 管理人(☆Tomoaki Ueda☆)
2012/04/08 (Sun) 19:41:04
100×100画素の部分パターンはこんな感じになります。
数値的に半球を作成して最大輝度が255になるようにしています。
部分パターンとの相互相関処理 - 管理人(☆Tomoaki Ueda☆)
2012/04/08 (Sun) 19:44:12
X方向に部分パターンとオリジナルパターンの相互相関を取ってみると、意外にシャープな関数になります。ドットが円形に幅を持っているので、シャープな二等辺三角形のような関数になります。
これがKinectのデプスカメラの基本原理で最も重要な事項です。距離によってプロジェクタから投影されたランダムドットパターンが水平方向にずれる量を部分パターンとの相互相関処理によって検出することができるのです。その領域のシフト量がわかれば、距離はレーザーポインタの実験と同様の原理で演算できます。
部分パターンとの相互相関処理 - 管理人(☆Tomoaki Ueda☆)
2012/04/08 (Sun) 19:46:45
面全体で相互相関をとってみると、部分パターンの位置だけにピーク(赤い点)がはっきりと出て、ちゃんと識別できていることがわかります。部分パターンの領域サイズは100×100画素としました。
KINECTセンサの赤外線プロジェクタの投影パターン - 管理人(☆Tomoaki Ueda☆)
2012/04/10 (Tue) 14:51:47
要するに、赤外線領域ではこんな感じでランダムドットパターンが投影されているわけです。
Re: KINECTセンサ 相互相関処理 - 管理人(☆Tomoaki Ueda☆)
2012/04/11 (Wed) 21:55:45
取り敢えず、Kinectセンサ方式のデプスカメラを試作してみました。この図は深度に変換する前の実測抽出パターンの例です。
【KINECTセンサ デプスカメラ】 相互相関処理 - 管理人(☆Tomoaki Ueda☆)
2012/04/13 (Fri) 03:26:00
上のデータを処理してみたところ、ちゃんと画素単位にスライスデータが再生できた。3次元デジタイザとしては完成。たった1枚のモノクロ写真で3次元情報を再生できるということが今更だが確認できて驚く。乱数ってすごいなあ。
ちなみに、各スライスの解像度は640×480画素。
ファイル名の数字はx座標方向のビットシフト量を示す。部分相関の領域サイズは40×40画素とした。距離分解能は領域サイズだけでなく、ドットの大きさにも依存している。
【KINECTセンサ デプスカメラ】 水平シフトマップ - 管理人(☆Tomoaki Ueda☆)
2012/04/13 (Fri) 06:11:08
デプスイメージに近い水平シフトマップ作成に成功。
距離とシフト量の関係は1:1なので変換すれば、デプスイメージが得られる。ほぼデプスカメラの自作に成功。
Re: KINECTセンサのデプスカメラを自作するプロジェクト - 管理人(☆Tomoaki Ueda☆)
2012/04/16 (Mon) 22:27:21
Kinectセンサの開発元はイスラエルのPrime Sense Ltd.だ。
同社の米国特許出願明細書(US20100118123)を検索して、その図面から動作原理を考察した。
http://www.google.com/patents/US20100118123.pdf
Kinectのデプスカメラは、2次元ランダムドット・パターンで修飾した赤外線光源で被写体にパターンを投影し、赤外線カメラで撮影行い、Nx×Ny画素で構成される部分パターンとランダムドットの部分パターンの相互相関のピーク値を示すx座標と深度z値が関数で表現できることを利用している。
詳細はリンク先ページにて。
http://www.neo-tech-lab.co.uk/ARsensor/KinectSensor.htm
簡単な測距の原理確認実験 - 管理人(☆Tomoaki Ueda☆)
2012/03/28 (Wed) 15:35:33
レーザーポインタとUSBカメラがあれば、KINECTセンサのデプス・カメラの測距原理の基礎的な実験ができる。
図のようにx方向に離した位置にレーザーポインタとUSBカメラを配置し、z軸方向に向ける。
被写体に照射されるレーザーの光点のスクリーン上の位置(x座標)が被写体までの距離(z)に依存して変化することが確認できる。
KINECTではピンポイントのビームを使わず、ランダム・ドット。パターンでスクリーン全体を照明している。乱数なので照射パターンの部分パターン(Nx×Ny画素)とカメラのキャプチャ画像の相互相関をとることでスクリーン全体で各画素位置が原図パターンからどれだけx方向にシフトしているか調べることができるのだ。
http://www.neo-tech-lab.co.uk/ARsensor/KinectSensor.htm
Re: 簡単な測距の原理確認実験 - 管理人(☆Tomoaki Ueda☆)
2012/04/06 (Fri) 19:51:31
実際に実験してみました。
たまたま数年前に購入した半導体レーザーモジュールを発見したからなんですけどね。
ちゃんと原理通りに光点の位置が水平方向にシフトしました。Kinectセンサのデプスカメラは、ランダムドットパターンを使ってスクリーンの各画素で同じことをやっているだけです。ただ膨大な量の相互相関演算を行う必要があるのでかなり演算負荷は重いものになっています。次はランダムドットパターンをどうやって照射するかですねぇ....
Re: 簡単な測距の原理確認実験 - 管理人(☆Tomoaki Ueda☆)
2012/04/07 (Sat) 12:46:18
大雑把な原理検証実験のメモです。
【実験条件】
●ELECOM製3メガピクセルのUCAM-DLY300TA
●Webカメラの分解能は640×480画素に設定
●カメラとレーザーポインタの距離42mm
●光点の座標位置はmax輝度の位置とした
【結果】
横軸 壁までの距離[単位cm](ものさしで測る)
縦軸 光点画素のX座標[単位 ピクセル]
【感想】
XYステージもないので、光軸の向きとか固定していないし、目分量で距離を測りながらの大雑把な実験でしたが、結果は驚くべきものでした。結構精確に測距できるんですね。ちなみに2mくらいで光点はほぼキャプチャ画像の中央付近に(320辺りに)
【Marker検出】『カメラ映像のキャプチャー』 - 管理人(☆Tomoaki Ueda☆)
2012/04/05 (Thu) 05:17:01
取り敢えず、WebCamキャプチャを行う部分に関して、DirectShowLib-2005.dllを使ってコーディングを始める。後でDirectShowの必要な部分だけをまとめて別のラップを作ろうと思う。
NyARToolKitCSのソースと関連性が高い部分は、SampleのDxSnapのCapture.csであるようだ。
private Capture cam;
//【ビデオ キャプチャー デバイスのデフォルト インデックス番号】
private const int VIDEODEVICE = 0;
//【水平解像度】【WebCamの機種に依存】
private const int VIDEOWIDTH = 640;
//【垂直解像度】【WebCamの機種に依存】
private const int VIDEOHEIGHT = 480;
//【1画素当りのビット数】【WebCamの機種に依存】
private const int VIDEOBITSPERPIXEL = 24;
の定義で、
cam = new Capture(VIDEODEVICE, VIDEOWIDTH, VIDEOHEIGHT, VIDEOBITSPERPIXEL, pictureBox1);
この1行を書くだけで、PictureBoxへのキャプチャを行うことができる。
private IntPtr m_ip = IntPtr.Zero;
と宣言し、
Cursor.Current = Cursors.WaitCursor;
if (m_ip != IntPtr.Zero) //【前回使用したバッファをリリースする】
{
Marshal.FreeCoTaskMem(m_ip);
m_ip = IntPtr.Zero;
}
m_ip = cam.GetImageCapture(); //【イメージをキャプチャーする】
Bitmap b = new Bitmap(cam.Width, cam.Height, cam.Stride, PixelFormat.Format24bppRgb, m_ip);
b.RotateFlip(RotateFlipType.RotateNoneFlipY); //【BitMapイメージを上下反転】
pictureBox2.Image = b;
Cursor.Current = Cursors.Default;
でBitMapに落とせる。
こりゃ、自力でコーディングする気が失せるのもうなずける。凄く便利だ。
キャプチャ画像の2値化までポインタを使ってコーディングしてみた。
拡張現実センサで使う場合には、最悪マーカーのスクリーン座標がわかればいいだけなので、『基底遷移則』による円形マーカー検出方法で済ませようと思う。太線黒枠矩形マーカーは4本の線分(図形)だが、円形マーカーは1個の図形なので処理が高速だからだ。このアルゴリズムは既にKINECTセンサでリアルタイム動作を確認済み。
http://www.neo-tech-lab.co.uk/ARsensor/Kinect.files/ChangeYouTubeMovie.jpg
Windows7の頻繁なフリーズ現象の原因について - 管理人(☆Tomoaki Ueda☆)
2012/02/20 (Mon) 22:03:04
最近、所有するWindows7機のうちの1台が頻繁にフリーズする現象に悩まされていました。ブラウザ(Google Chrome)でページ閲覧中やYouTube再生中にちょっと目を離すとフリーズしたり、C#コンパイラの応答が遅くなったり、Word、Excel、PowerPoint利用中にも何回かフリーズで仕事が台無しに。一時は未知のウィルスにやられたかと心配しましたが、何べんチェックしてもそんなものは発見できず、この1か月未解決でした。
でもフリーズのとき、
●ハードディスクが回り続けている。
●2.6GBものメモリがwmpnetwk.exe(WMPNetworkSvc)によって使われている。
●エラーも同時に発生しており、これをシステムが記録し続けており、知らないうちにエラーログファイルのファイルサイズが43GBにもなっている。
という3点が判明しました。
こんなサイズになると、発生したエラーイベントをエラーログファイルに追記するにも最後尾をアクセスするのに時間を要してしまうので、音割れやフリーズの原因になるのです。
リソースモニタでメモリ使用量を見て、そもそもエラーの原因はWindows Media Player Network Sharing Serviceがメモリを大量(2.6GB)に使用してメモリ不足を引き起こしていることが問題なのだとわかりました。
無線LANに接続しないでPCを使っているときにはフリーズは発生しませんでしたが、無線LANに接続し、Safari、FireFox、Google Chrome等のブラウザで動画閲覧中にフリーズの発生頻度が高かったので、フリーズ発生時に、リソースモニタでメモリの使用状況を確認してみたところ、wmpnetwk.exeが2.6GBも使用しており、メモリ不足の状態であることが判明しました。概ね、ブラウザ起動、動画閲覧から数分~10分くらいでメモリ使用状況に大きな変化が現れました。
このWMPNetworkSvc (Windows Media Player Network Sharing Service)はどうやらネットワーク上にある別のコンピュータのコンテンツの共有サービスを行う
ものらしいのですが、私にはさしあたって不必要なサービスでしたので、以下の手順でサービスを停止させました。
【対処】
①アクセサリ⇒システムツール⇒ディスク クリーンアップ を起動
エラーログファイルを削除
②コントロールパネル⇒管理ツール⇒サービス を起動
Windows Media Player Network Sharing Service を選択
『サービスを停止』
スタートアップの種類を『無効』★に設定
(★右クリックでプロパティーを表示すれば、スタートアップの種類の変更を行うことができます。)
これによって、ブラウザ利用時に頻発していたメモリの大量使用によるフリーズ現象は発生しなくなりました。ほぼ確実にWindows Media Player Network Sharing Service
の処理に不適切な部分があると思われます。ファイルの破損等は原因ではありません。
フリーズはOffice製品(Word, Excel, PowerPoint)を利用中でも発生していましたが、対処後にはメモリ使用状況も大きな変動はなく、大変安定しています。
なお、IE使用時に同じ現象が発生するか否かについては未確認です。
この現象、Vistaではフリーズにまでは至っていませんでしたが、念の為に当該サービスを殺しました。ややApacheの応答が早くなったように感じます。
検索したら山ほど出てきました。
同じ現象に悩まされておられるなら一度お試しあれ。
【追記】上記とは別に以下の問題があります。
●最近Chromeにはバグが沢山発生しています。
1)Marqueeタグにスクロール停止の不具合
2)Marqueeタグにメモリ制限?
3)JSONPのテキストに改行コードが含まれる場合
1MBを超える場合にはフリーズする
●その他、解析できないバグと思われる現象が、他に3件あります。
●2012年1月を境に発生が頻発しています。性能はどんどん劣化する一方で、現状はFireFoxやSafariの方が優れているかもしれません。
Bone Tracking と Rag Doll - 管理人(☆Tomoaki Ueda☆)
2012/03/22 (Thu) 04:38:35
Polygon数3528個のRag Dollを表示してみる。
Polygon(Triangle)数168個のCapsule Shape 21個で構成される簡易モデルだ。
まだ数個のバグがある。
1) 動画テクスチャーマッピングで高負荷時に表示が間に合わないケースがある。
2) 後書き優先になっている。
3) 座標回転がおかしいケースがある。
必ずしもオンラインで行う必要はないのだが動作確認はできた。SurfaceやTextureでColorImageのMappingをしていたときのパフォーマンスよりは格段に負荷が軽いようだ。10000ポリゴン程度のモデルなら動くかも。MMDのPMDモデルで試してみるのもいいかもしれないが、今回はちょっと目的が違う。
拡張現実センサの目的にはDirectXよりBitmapの方が向いていそうだということがよくわかった。
http://www.neo-tech-lab.co.uk/ARsensor/KinectSensor.htm
Managed DirectXのバグ? - 管理人(☆Tomoaki Ueda☆)
2012/03/20 (Tue) 15:34:54
Frameworks4.0+Managed DirectX+KINECTで骨格抽出プログラムの作成途中なのだが、Surface、Textureともにカメラ画像をフレーム毎にDirectXのスクリーン内に落とし込もうとすると、速度が遅くて使い物にならないので、SkeletonをBoneと考えて3次元モデル表示しようとしている。
ColorImageなんかの高速キャプチャーはDirectShow.NETを使うとあっさり解決するのだろうが、そうするとGPLの制約を受け、所謂『義務の感染』現象を引き起こす事になってしまうので、回避しようとしている。
テストのためにLine.DrawTransformを使おうとしたが、何がなんだか理解できない。Texture Mappingしている画面にマッピングされてないか?
Line.Drawで2次元なら動作するのに。
英語で検索したら、運の悪いことにLine.DrawTransformには何やらバグがあるそうな。
どうしようかなあ。
しかし、AR(Augmented Reality)の技術は使っても、これでは既にVR(Virtual Reality)であってARで無くなってないだろうか。....などと深く考えるのはやめとくか。
MMDみたいに、骨格をポリゴンモデルにしてしまえば問題はひとつ片付くし、まあいいか。でもそのあとでZバッファの値を読みたいのだけどどうすればいいのかわからない。Managedでは無理なのかな?
そう言えば、Textureのbyte配列に直接unsafeな書込みをかける方法がまだ試せていない。Unmanagedでは存在するメソッドが見つからないし、どうしたものか。
http://www.neo-tech-lab.co.uk/ARsensor/KinectSensor.htm
Frameworks4.0 + Managed DirectX - 管理人(☆Tomoaki Ueda☆)
2012/03/18 (Sun) 14:06:33
Frameworks4.0でManaged DirectXを使ってKINECTセンサのソフトウェアをコーディング中ですが、少し考える所有り、AudioVideoPlaybackを使って、Videoファイル(*.avi, *.wmv)の動画像をTextureにレンダリングする方法を試してみました。
NTL_Video = Video.FromUrl(new Uri("http://www.neo-tech-lab.co.uk/MikuMikuDance/Article.files/Sample.wmv"));
NTL_Video.Ending += new EventHandler(NTL_Video_Ending);
NTL_Video.TextureReadyToRender += new TextureRenderEventHandler(NTL_Video_TextureReadyToRender);
NTL_Video.RenderToTexture(D3D_Device);
と記述して、
void NTL_Video_TextureReadyToRender(object sender, TextureRenderEventArgs e)
{
D3D_Device.SetTexture(0, e.Texture);
}
とするくらいなので、とても便利です。
結果は、Surfaceのときと違ってリアルタイムで動作しました。AudioVideoPlaybackはDirectShowで構成されたDLLのようです。
通常パソコン上の動画ファイルを再生する場合には、Video(ファイル名)やVideo.FromFIleを使うのですが、Video.FromUriというのがあって、インターネット上にある動画ファイルも例に挙げた様にアクセスすることができます。
そこでパソコンに実装されたWebcam(USBカメラ)がusb://dev/videoなんて記述で使えないかと期待したのですが、これはダメでした。
やはり自分でDirectShowのラッパーを作らなければならないことが確認できました。私にはオーバーテクノロジーなので、暫くは、Webcamの録画ファイルで用を済ませようと思います。
勿論、DirectShow.NETというDirectShowのラッパークラスがGPLv3で公開されているのは知っていますが、そういう制約下でしか使えないというのはあまり歓迎できませんから。
ARToolKitのマーカー頂点検出アルゴリズムの改善 - 【管理人】☆Tomoaki Ueda☆
2012/03/13 (Tue) 12:45:52
円形マーカーの高速検出アルゴリズムを独自に考案して試作した結果、現在のARToolKitの矩形マーカー検出よりも処理負荷が軽く、何かおかしいと思うようになり、矩形マーカーに関しても独自に検出方式と試作を行っている。
前段階のラスターフィルタ処理で、カラー画像から太線枠のマーカー輪郭線の画素リストを得ることができる。
このとき、マーカー存在領域の情報(Xmin,Ymin)-(Xmax,Ymax)を得ることができるので、この領域の中央点座標は
Xc=(Xmin+Xmax)*0.5
Yc=(Ymin+Ymax)*0.5
だとわかる。
この中央点と輪郭点までの距離の2乗値をリスト1周分グラフ化すると、4つの放物線で構成される。このグラフの4つの極大値を持つ画素が頂点座標だ。
このアルゴリズムでは8方位探索はもちろん、複雑な処理は行う必要がない。
勿論、例外もある。Ymax、Yminに頂点が2つ存在する場合だ。しかし、適切な処理が抵処理負荷で可能だ。
実際には、多くのパターンを流し込んでみたら、極大値ではなく、変曲点の方がよいかも。もう少し粘ってみるかな。
また、画像品質が悪い場合や指などでマーカーが隠れている場合でも、極大値間が、線分なのだから容易にBase Transition Ruleで直線方程式が得られるので、ロバスト性も実現可能だ。
KINECTのカラー画像と深度情報の時間的ズレ - 管理人(☆Tomoaki Ueda☆)
2012/03/07 (Wed) 21:53:35
KINECTセンサのカラーイメージとデプスイメージの取得は同時ではないために、時間差を発生している。この動画のように、PlayerIDでカラー画像を切り出すと、動画の左手のように位置ずれが発生することがある。特に移動速度が激しい部位にズレが現れやすい。
(勿論、デプスとカラー画像間のマッピング補正はテクスチャーマッピングと同じ手法で補正済み。動かないで静止していればズレは生じません。にも拘わらず、手足を動かすと、キャプチャータイミングが同期していないのでズレが生じている)
http://www.neo-tech-lab.co.uk/ARsensor/KinectSensor.htm
Google TTSのローカル利用方法 - 管理人(☆Tomoaki Ueda☆)
2012/03/02 (Fri) 16:35:14
Google TTS (Text-To-Speech) APIをローカル環境から使うのは簡単です。Visual C#の簡単なサンプルプログラムを作成いたしましたので、ソースをプロジェクトファイルごと公開いたしました。
http://www.neo-tech-lab.co.uk/GoogleTTS
YouTube動画を切り替える際に発声するサンプルです。
もしYouTubeが再生できないようなら、最新のAdobe Flash PlayerをIEを使ってダウンロードしてインストールしてください。
【メモ】KinectセンサとBullet向けCapsule Shape - 管理人(☆Tomoaki Ueda☆)
2012/03/02 (Fri) 10:36:22
BulletでAR(Augmented Reality)格闘技を実現するために、Skeleton情報からCapsule Shapeだけで作られた人物モデルに変換したところ。実際にコーディングしてみてわかったが、Capsule Shapeはよくできている。この人物モデルは1つの元データを変形させた図形で構成されているので、Index Dataは1個だけなのだ。
人物だけならBox Shapeは不要かな?
スカートのヒラヒラやアホ毛をシミュレートするなら話は別だが。
でも、ブロック崩しくらいしてみたいので、Box Shapeも必要か?
MMD(MikuMikuDance)のPMDフォーマットモデルのBoneベクトルに合わせこめば、PMDを物理エンジン付きで動かすことができるわけだが、微妙にBoneの身体位置が異なるのをどこでどう調整するのか?それが問題だと思う。
【メモ】Kinectセンサ - 管理人(☆Tomoaki Ueda☆)
2012/03/02 (Fri) 10:10:10
KINECTセンサにはカラーカメラと深度情報を撮影するデプスイメージカメラが搭載されているが、これらは実は同期しておらず、キャプチャー画像には時間的なズレが伴う模様。深度情報のPlayer IDを使ってクロマキーのような映像効果を試してみたところ、ズレが生じることがわかった。画像は、MAP関数を用いてデプス情報位置のカラー画像を抜き出し、テクスチャーマッピングを行った結果だが、人物周囲にこの時間差に伴うズレが生じていることがわかる。
ちなみに、人物が静止状態だと殆どズレは生じないが、高速に動作を行うほど、このズレは大きくなる。
http://www.neo-tech-lab.co.uk/ARsensor/KinectSensor.htm
【参考】
クロマキー
http://image-d.isp.jp/commentary/chromakey/index.html
【メモ】Kinectセンサ - 管理人(☆Tomoaki Ueda☆)
2012/03/02 (Fri) 09:59:34
KINECTセンサの骨格追尾は実質的にレーザー光とセットになったデプスカメラ(赤外線カメラ)だけで実装されている。1画素は16bitからなり、上位13bitが深度情報。
1mm単位と考えられる。下位3bitはPlayer IDだ。
このIDはSkeleton認識が始まった時に0でなくなるから、TVのクロマキーのような処理を実現することができる。Player IDが0以外の深度情報はPlayerを示す。
http://www.neo-tech-lab.co.uk/ARsensor/KinectSensor.htm
KINECT Skeletal VIewer サンプルプログラムを公開 - 管理人(☆Tomoaki Ueda☆)
2012/02/16 (Thu) 11:47:06
2012年02月01日に正式に公開されたMicrosoftの社KINECT for Windows SDK Version1で動作するSkeletal ViewerをVisual C#のFormアプリケーションで記述。公開しました。プロジェクトファイルごとソース公開中です。
http://www.neo-tech-lab.co.uk/ARsensor/KinectSensor.htm
Google TTSをローカルで使うC#ソースを公開 - 管理人(☆Tomoaki Ueda☆)
2012/02/13 (Mon) 18:17:58
C#のFormにwebBrowserを載せてインターネット接続状態でGoogleTTSをアクセスして音声合成を行う方法を紹介します。この方法だと、IEでもQuickTime経由でアクセスすることができました。プロジェクトファイルごとソース公開しています。非常に簡単です。
インターネット接続できるパソコンでクラウド式音声合成の利用がこんなに簡単だといろいろ応用できそうです。
http://www.neo-tech-lab.co.uk/GoogleTTS
Kinect for Windows SDK Version 1が2/1に発表されました - 【管理人】☆Tomoaki Ueda☆
2012/02/09 (Thu) 19:05:23
2012/02/01(米国時間)にKinect for Windows SDK Version1が正式に発表されました。同時に、Kinect for WindowsというPC接続専用Kinect Sensorも24,800円で発売予定(入荷時期未定?)となった模様です。
SDKは無償ダウンロード可能だったので、ダウンロードしてみました。勿論、XBOX360用のKinect Sensorしか手元になかったので、動作するかどうか試してみました。ちゃんと動作しました!!(^_^)
ちなみに、XBOX360用Kinectセンサの方は15,000円なので1万円もお得ですね。両者のスペックを比べてみないとわからないところもありますが、XBOX360用Kinectセンサで普通に全ての機能が使えるような気がするんですけど??
SDKの中身はβ版からの変更が原型をとどめないくらい激しいものでした。でもとても理解しやすいものです。
【センサの上下角を遠隔操作できる電動チルト】
C#のデモプログラムで驚いたのは、センサ本体がなんと電動チルトするじゃあありませんか。(笑) XBOX360を持っている人には当たり前なのかもしれませんが、OpenNIやKinect for Windows SDKβしか使わない分には現れない機能だったので、びっくりしてしまいました。そうかこんな機能が付いていたのかと。
【音声認識】Speech
言語は英語に限定されるようですが、Speechという音声認識の機能も使えるようになっています。サンプルプログラムでは、red(赤), green(緑), blue(青)の3色を認識するように記述してありましたが、Choiceを勝手に追加してみたところ、white, black, pink等の色だけでなく、Japanとかの単語もちゃんと認識させることができました。
これで、start, stop等の音声でセンサを制御することが可能になりそうですね。この機能は期待できます。いちいち離れたパソコンまでクリックしに戻らなくてもいいですから。これは使える機能ですね。でも、正しい英語の発音でないと動作しませんけどね。
【音源方向検出機能】
内蔵マイクアレイで、音源の方向を検出する機能があり動作します。
【感想】
XBOX360用Kinectセンサで問題なく、動作するようです。まだ試していないのは、デプスの測定レンジ切り替え機能くらいではないでしょうか? 従来は800mm~4000mmだった測定レンジ(default)に、nearモードが追加されているようです。範囲は400mm~3000mmだそうです。XBOX360用でこのモードが使えるかどうかはわかりません。
また、サンプルプログラムを作りなおす必要があるようですね。
http://www.neo-tech-lab.co.uk/ARsensor/KinectSensor.htm
マーカー式拡張現実のオリジナル理論を考案 - 管理人(☆Tomoaki Ueda☆)
2012/02/07 (Tue) 10:33:58
太線枠抽出は矩形波相関トリガ法、最小二乗近似による頂点座標の検出等、オリジナルのアルゴリズムでマーカー式拡張現実のコーディングを開始しました。
http://www.neo-tech-lab.co.uk/ARsensor/Theory.htm
高校で習う数学程度の知識で理解できるはずです。
リンク先に説明あります。
センチネルリンパ節検出センサ基板 - 管理人(☆Tomoaki Ueda☆)
2012/01/29 (Sun) 12:38:13
CPLDピッチ変換基板の下側に、A/D、LPF、PDM D/Aが実装されている。CPLDには、A/D、SIO、DDS、DFL、VFコンバータ、電子ボリューム、同期検波回路等が組み込まれている。研究を開始した頃から比べると、容積は1/100以下、感度は10倍以上になった。現在、Version 26。と言っても、この方式に変更してからのバージョン番号だが。
もうA/DやD/Aという専用ICを購入しなくなって、10年以上が経つ。PDM(Pulse Density Modulation)技術により不要なのだ。最近では、同期検波回路もディジタルで済ませることが多くなった。信号処理も殆どPC上で行うので、PICさえ使っていない。
この写真のセンサで、5μgFe程度の微量な磁性流体の滞留するリンパ節を検出できる。
このバージョンで、発生している交流励磁の磁束密度は200ガウスを超えている。先端から10mm離れても30ガウス程度の磁束密度だ。磁性流体に励磁音響(倍音)を発生させるのに十分な磁束密度だ。