5

libfreenectドライバーでKinect(元のXboxバージョン)をいじっています(ちなみにUbuntu 12.04を使用しています)。ここの指示に従って、git から最新バージョンを複製し、手動でインストールしました: http://openkinect.org/wiki/Getting_Started#Ubuntu_Manual_Install

登録された深度値にアクセスしたいと思います。私の知る限り、Kinect は工場で調整されており、深度ピクセルを適切な RGB ピクセルに一致させるルックアップ テーブルがあります。

Kinect を問題なく開いて、生の 11 ビット深度データを取得できます。これにより、1 から 7.5 メートルの距離に対して約 730 から 1045 の範囲の非線形の値が得られます。

実行device->setDepthFormat(FREENECT_DEPTH_MM);すると、Kinect の出力距離が mm 単位になるため、setDepthFormat が機能するようです。

device->setDepthFormat(FREENECT_DEPTH_REGISTERED);生の深度値のみが出力されるため、ランニングは効果がないようです。私は何が欠けていますか?

4

1 に答える 1

3

との両方が mm 単位で深さを返す必要がFREENECT_DEPTH_MMあります。FREENECT_DEPTH_REGISTERED違いは、後者が RGB ビデオ イメージに一致するように調整されていることです。

freenect_depth_format列挙型にlibfreenect.hは、次のオプションがあります。

FREENECT_DEPTH_11BIT = 0, /**< 11 bit depth information in one uint16_t/pixel */
FREENECT_DEPTH_10BIT = 1, /**< 10 bit depth information in one uint16_t/pixel */
FREENECT_DEPTH_11BIT_PACKED = 2, /**< 11 bit packed depth information */
FREENECT_DEPTH_10BIT_PACKED = 3, /**< 10 bit packed depth information */
FREENECT_DEPTH_REGISTERED = 4, /**< processed depth data in mm, aligned to 640x480 RGB */
FREENECT_DEPTH_MM = 5, /**< depth to each pixel in mm, but left unaligned to RGB image */
FREENECT_DEPTH_DUMMY = 2147483647, /**< Dummy value to force enum to be 32 bits wide */

出典: libfrenect git の問題ページ

登録変換は、RGB カメラと IR カメラが物理的に同じ場所にあり、2.5cm ずれていないかのような深度画像を生成します。詳細が気になる方はソースコードをのぞいてみてください。

ソース: libfreenect ソースコード

于 2014-04-07T13:01:46.770 に答える