|
本ページで紹介する実験は、以下の動作環境で行いました。 |
|
|
Kinectの主な仕様 |
|
Kinect |
Kinect for XBOX360 / Kinect for Windows |
ビデオカメラ |
解像度 VGA (640×480 ピクセル) |
深度画像センサ |
解像度 VGA (640×480 ピクセル) |
フレームレート |
30fps |
認識距離 |
0.5〜5メートル (ドライバによる) |
垂直方向の視野角 |
43度 |
水平方向の視野角 |
57度 |
XY方向の測定距離による解像度 |
測定距離 0.5m → 〜0.7mm (Mankoff & Russo 2012) |
深さ(Z)方向の測定距離による解像度 |
測定距離 5m → 〜75mm (Mankoff & Russo 2012) |
|
|
計測のための最適な環境条件 |
|
- 室内、直射日光のあたらない暗い場所
- 対象物の色が明るい
- 対象物がKinectと垂直の位置
- 水深の浅い場所 |
|
開発環境 |
|
Kinectセンサ |
Kinect for XBOX360 |
OS環境 |
Windows7 32ビット |
Kinectドライバ |
libfreenect |
開発言語 |
Visual Studio2010 C++ |
|
|
使用ドライバ |
|
Kinectセンサのドライバは、無償で提供されているものがいくつかあります。パソコンの動作環境や使用目的に合わせて選択する必要があります。実際に動作確認を行ったドライバは以下の3つです。
OpenNI
Kinect for Widows SDK
libfreenect
本ページに載せている実験では、libfreenectを使用しました。深度の生データが簡単に取得できるため、キャリブレーションや目的に合わせた補正を行うことができます。また当初、Kinect
for Windowsで開発しようと試みましたがうまくドライバがインストールできなかったため、Kinect for XBOX360を使用しました。 |
|
lifreenectのインストール方法 |
|
1 OpenKinectのホームページよりドライバをダウンロードします。
2 KinectをUSBポートに接続します。
3 デバイスマネージャ画面を立ち上げます。
4 Xbox NUI Audio/Xbox NUI Camera/Xbox NUI Mortorが表示されるので、それぞれドライバーソフトウェアの更新を行います。※ドライバが格納されているパス: ダウンロードファイル\platform\windows\inf
|
|
算出方法 |
|
撮影により取得した深度データは11ビットのDigital Number(DN)の生データのため、ワールド座標(XYZ座標mm)に変換する必要があります。Ken
Mankoffさんが作成したオープンソースの変換プログラムをダウンロードして変換処理を行いました[Manikoff http://kenmankoff.com/2012/05/01/reading-data-from-kinect-libfreenect-record/]。また、同プログラムはビデオカメラカメラ画像を深度画像の位置に合わせて表示する機能も含まれているので、ビデオカメラ画像から深度データの位置確認を行いました[Mankoff
http://kenmankoff.com/2012/05/01/offline-registration-for-the-kinect/ ]。
|
|
開発環境 |
|
OS環境 |
Windows7 32ビット |
Kinectドライバ |
libfreenect V1.2.2.0 |
開発言語 |
Visual Srudio2010 C++ |
|
|
サンプルプログラム |
|
撮影/画像データの出力
Ken Mankoffさんが作成したサンプルプログラムを使用しました。
参考URL: https://github.com/mankoff/kinect_record (アクセス 2013/11/20)
ビデオカメラ画像および深度画像を表示し、同時に画像ファイルを取得します。OpenKinectでリリースされているサンプルプログラム'record'と'glview'を組み合わせたコードです。
プログラム名 |
: kinect_record |
ダウンロード元 |
: https://github.com/mankoff/kinect_record |
出力ファイル |
: file.ppm ビデオカメラ画像 約600KB
: file.pgm 深度画像 約900KB |
その他必要なソフト
- Qt |
|
- OpenCV2.2 |
|
- Glut |
|
- pthreads-win32 for windows |
|
- libusb-win32 |
|
|
|
留意点
製作者側で、Mac OS XおよびLinuxで動作確認されているが、Windowsの環境下では確認されていません。筆者側で使用したところ、Windows仕様で画像が適切に出力されなかったので、仕様に合わせてコードを変更しました。
ワールド座標変換
Ken Mankoffさんが作成したサンプルプログラムを使用しました。
参考URL: https://github.com/mankoff/libfreenect (アクセス 2013/11/20)
深度の生データをmm単位に変換します。XY方向の距離を算出します。ビデオカメラ画像を深度画像の範囲に重ね合せます。
プログラム名 |
: kinect_register |
ダウンロード元 |
: https://github.com/mankoff/libfreenect/tree/offline_register |
出力ファイル |
: file.x x方向の距離(mm) 640×480 |
|
: file.y y方向の距離(mm) 640×480 |
|
: file.z z方向の距離(mm) 640×480 |
|
: file.ply x,y,z,r,g,b情報 ASCIIフォーマット |
|
: file.reg.ppm ビデオカメラ画像(*.ppm)を深度画像(*.pgm)の範囲に補正 |
コマンドライン |
: -h ヘルプの表示 |
|
: -s レジストレーション(ワールド座標変換)のパラメータ取得
/ レジストレーションファイルの出力
ex) -s regfile |
|
: -a 深度データへのレジストレーションファイルの適用
/ file.reg.ppmファイルの出力
ex) -a regfile file.pgm (file.ppm) ※file.ppmファイルを指定した場合にfile.reg.ppmを出力 |
|
|
|
参照URL |
|
- Reading Data From Kinect libfreenect record
http://kenmankoff.com/2012/05/01/reading-data-from-kinect-libfreenect-record/(2013/12 アクセス)
- Offline Registration for the Kinect
http://kenmankoff.com/2012/05/01/offline-registration-for-the-kinect/(2013/12 アクセス)
|