本文へスキップ

けいはんなジュニアロボットクラブは、子供たちに「モノづくり」の楽しみと「科学技術」への興味をもってもらう取り組みを行っています。

TEL. 070-5349-1100

〒619-0237 京都府相楽郡精華町光台8丁目

KINECT











【 KINECT 】高精度距離測定


   前回、距離ピクセル情報を見たとき、RGB各要素が同じ数値が返ってきました。これは、距離をグレースケール表現しているためでカラー情報を無くしているからです。
  また、距離ピクセルの数値は、奥にあるものは黒色となっていて、「255」に近い数値、手前のものは白色で「0」に近い数値で表されています。
  という事は、距離の表現能力は、0から255の256通りしかありませんが、KINECTの距離測定範囲は、50cmから7m強までとなっているので表現能力を拡大する必要
  があります。( 0 mm 〜 8000 mm 必要 )
  実際の KINECT の距離情報能力は、ピクセルあたり11ビットあり、数値表現としては、0〜2047ということになります。
  従って、ここでは KINECT の持つ最大能力を使って実際の距離と KINECT で測定した距離との精度確認を行いたいと思います。
  これは、ロボットに搭載して物体認識を行う上で重要です。

プログラム


import SimpleOpenNI.*;
SimpleOpenNI kinect;

void setup()
{
 size(640, 480);
 kinect = new SimpleOpenNI(this);
 kinect.enableDepth();
}

void draw()
{
 kinect.update();

 PImage depthImage = kinect.depthImage( );
 image( depthImage, 0, 0);
}

void mousePressed( ){
 int [] depthValues= kinect.depthMap();
 int clickPosition = mouseX + ( mouseY * 640 );
 int clickDepth = depthValues [ clickPosition ];

 float inches = clickesDepth / 25.4;

 println( " inches: " + inches );




プログラム解説( 機能追加部分のみ )

  • depthMap 関数
   この関数は、


  • in 関数
   




実行結果

              距離画像                                     カラー画像