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

私設研究所Neo-Tech-Lab.com

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

名前
件名
メッセージ
画像
メールアドレス
URL
文字色
編集/削除キー (半角英数字のみで4~8文字)
プレビューする (投稿前に、内容をプレビューして確認できます)

Copyright © 1999- FC2, inc All Rights Reserved.