Kinect の深度カメラの精度はどれくらいですか?
- 範囲?
- 解像度?
- ノイズ?
特に知りたいのは:
- マイクロソフトからの公式仕様はありますか?
- この件に関する科学論文はありますか?
- TechBlogs からの調査?
- 再現しやすい個人的な実験は?
現在、約 1 日分のデータを収集していますが、ほとんどのライターは情報源に名前を付けておらず、値はかなり異なっているようです...
Microsoft からではなく、センサー開発者からの公式仕様があります。私が知っている科学論文はまだありません。たくさんの調査と実験 (Google を参照)。OpenKinectでは、これらのことについて、今のところこのサイトよりも多くの議論があります。
Kinect for Windows SDKは、私が使用していて一貫しているように見えるいくつかの定数を提供します。範囲と解像度の場合、これらの値は次のとおりです。
デフォルトモードの場合:
ニアモードの場合:
カラーカメラの場合、次のいずれかの解像度を使用できます。
デプスカメラの場合、次のいずれかの解像度を使用できます。
Avada Kedavraからの(そして、ちなみに、ほとんどのソースからの)情報に直面して、APIによって与えられる視野の値は次のとおりです。
カラーカメラの場合:
デプスカメラの場合:
ソース: http: //msdn.microsoft.com/en-us/library/hh855368
ここでの本当の問題は、分解能と精度に関するものでした。解像度と精度が記載されているほど良くないことがわかったので、ここにチップを入れたいと思います。深度解像度の最大出力は確かに 640x480 ですが、これは有効な解像度ではなく、精度も正確ではありません。
キネクトが機能する方法は、構造化された光の投影に基づいています。光のパターンが放出され、表面にキャストされます。これをカメラが確認し、原点からオブジェクトに跳ね返った各光線を三角測量してカメラに到達させます。
問題は、このパターンが三角測量できる 34.749 個の輝点だけで構成されていることです( http://azttm.wordpress.com/2011/04/03/kinect-pattern-uncovered/ )。これを 640x480=307.200 データ ポイントの解像度に関連付けると、大きな違いに気づきます。ソース データ ポイントの量の 10 倍のデータ量が有効であり、効率的にサンプリングできるかどうかを自問してください。疑わしい。kinect の実効解像度は何かと聞かれたら、240x180 程度の正直でかなり良いデータだと思います。
Kinect の技術仕様によると、深度フィールドの仕様が最終的に明らかになりました (これらの一致は、Mannimarco によって投稿された公式プログラミング ガイドでも確認されています)。
* Horizontal field of view: 57 degrees
* Vertical field of view: 43 degrees
* Physical tilt range: ± 27 degrees
* Depth sensor range: 1.2m - 3.5m
* Resolution depth stream: 320x240 pixels
* Resolution color stream: 640x480 pixels
しかし、私自身の経験から、深度センサーの範囲は0.8m-4.0m
. この範囲は、以下のコメントで mankoff によって投稿された Primesense データシートと一致します。
深さの解像度は、センサーに近い方が遠くにある場合よりもはるかに高いことを覚えておくことも重要です。3 ~ 4 メートルでは、解像度は 1.5 メートルほど良くありません。これは、たとえば、サーフェスの法線を計算する場合に重要になります。結果は、センサーから離れているよりもセンサーに近い方が良好です。
自分で範囲をテストするのは難しくありません。公式 SDK (現在はベータ版) では、範囲外にいる場合、ゼロ (0) の深度が得られます。したがって、単純な定規でこれをテストし、ゼロより大きい読み取り値が得られる/得られない距離をテストできます。OpenKinect SDK が範囲外の読み取りを処理する方法がわかりません。
ノイズについてのコメント: 深度ストリームにはかなりのノイズがあり、作業が難しくなっています。たとえば、表面法線を計算すると、それらが少し「ぎくしゃく」することが予想されます。これはもちろん、偽の照明などに悪影響を及ぼします。さらに、IR 送信機間の距離が原因で、深度ストリームに視差の問題があります。そして受信機。これは、深度データに大きな「影」を残すため、操作が難しい場合もあります。この youtube ビデオでは、問題を示し、シェーダーを使用して問題を解決する方法について説明しています。見る価値のあるビデオです。
2012 年 2 月に kinects 深度センサーの理論的ランダム エラー モデルを提案した Khoshelham と Elbernik の論文に言及する価値があると思います。「インドア マッピング アプリケーションの Kinect 深度データの精度と解像度」と呼ばれています。論文はここで見つけることができます。
Microsoftが公開しているものをお探しの場合は、Kinectプログラミングガイドの11ページをご覧ください。ここの誰もがすでに述べたのとほとんど同じことを言っています。
ノイズについて言及しているものは何もありませんが、それがより目立つようになる可能性のある表面の端に沿っていることを除いて、それはかなり最小限であると言えます。
私の経験では、それはそれほど正確ではありません。かなり問題ありませんが、巻尺と比較すると、正確には一致しません。私は 10mm ごとの測定値で Excel を作成しましたが、特に 2500mm を超えて離れているものと、それよりも近いものには耐えられません。
また、実際の深度ピクセルは、宣伝されているよりもはるかに低いことに注意してください。内部の電子機器が隙間を埋めるため、ピクセル データのようなものではなく、小さな領域のアーティファクトが表示されます。本質的に、これは 320x240 の 1/8 ピクセルが「実際の」測定でカバーされ、他のピクセルが計算されることを意味します。したがって、640x480 を使用できます。ただし、それは CPU/UBS リソースのみであり、アプリケーションの見栄えは良くなりません。
これは私の 2 セントの経験にすぎません。私はロボット工学をプログラミングしています。