web-dev-qa-db-ja.com

公式Kinect SDKとオープンソースの選択肢

どこが違うの?

たとえば、オフィシャルSDKと比較してlibfreenectまたはOpenNI + SensorKinectを選択する利点は何ですか?

欠点は何ですか?

58
F. P.

以下の回答は日付ごとであり、近い将来にいくつかの事実が非常に古くなる可能性があることに注意してください。 Official Kinect SDKの現在の状態はベータ1.00.12です

最初の明らかな違いは、公式のSDKはMicrosoft Researchチームによって管理されているのに対して、OpenKinectはオープンソースコミュニティによって管理されているオープンソースSDKです。どちらにも長所と短所があります。

  • 公式SDKはMicrosoftによって開発され、ハードウェアも開発するため、shouldは、オープンソース社会がリバースエンジニアリングする必要があるデバイスに関する内部情報を知っている必要があります。明らかにこれはマイクロソフトの利益になります。
  • Microsoftはこのデバイスに多額のお金を注いでおり、SDKを標準に維持するために必要だと思うことを行うと確信しています。その背後に経済があることは多くの利点をもたらします。
  • 一方、オープンソース社会の力を過小評価しないでください。「OpenKinectコミュニティは、プロジェクトに時間とコードを提供する2000人以上のメンバーで構成されています。メンバーは、最高のアプリケーションスイートを作成するという使命を持ってこのプロジェクトに参加しましたKinect向けOpenKinectは真の「オープンソース」コミュニティです! - http://openkinect.org/wiki/Main_Page
  • OpenKinectは、Kinectデバイスがリリースの1日目または2日目にハッキングされたため、公式SDKよりもずっと前にリリースされました。 OpenKinectに称賛を!

サポートされるプログラミング言語:

  • 公式SDK:Microsoft Visual Studio 2010を使用したC++、C#、またはVisual Basic。
  • OpenKinect:Python、C、C++、C#、Java、LISPなど!明らかにVisual Studioは必要ありません。

オペレーティングシステムのサポート:

  • 公式SDK:Windows 7にのみインストールします。
  • OpenKinect:Linux、OS X、およびWindowsで実行

OpenKinectを明らかに活用してください。

ライセンス:

  • 公式SDKは、テストのためにのみ現在のベータ状態にあります。 SDKは、学術、研究、愛好家のコミュニティによる広範な調査と実験を促進するために特別に開発されました。 商用アプリケーションは許可されていません。ただし、これはおそらくSDKの将来のリリースで変更されることに注意してください。詳細については、 [〜#〜] faq [〜#〜] をご覧ください。
  • OpenKinectは商用利用のためにオープンであるように思われますが、オンラインソースはそれがそれほど単純ではないかもしれないと述べています。商用アプリをリリースする前に、条件をよく見てください。詳細については、 Kinect –オープンハードウェアプロジェクトのライセンスへの影響 を参照してください。

ドキュメントとサポート:

  • 公式SDK:十分に文書化されており、 サポートフォーラムを提供しています
  • OpenKinect:メーリングリスト、Twitter、ircがあるようです。しかし、公式フォーラム/ QAはありませんか?ウェブサイト上のドキュメントは、私が望むほど豊富ではありません。

デバイスのキャリブレーション:

異なるKinectデバイスは、製造されたバッチによってわずかに異なる場合があります。そのため、デバイスのキャリブレーションが必要になる場合があります。だが:

  • 公式SDKはキャリブレーション設定を提供していませんが、今のところ、作業中のデバイスをキャリブレーションする必要はありません。生産時にオンラインで読んだ(リンクが失われた)ことによると、キャリブレーションパラメーターはkinectデバイスに書き込まれるため、公式SDKキャリブレーションは必要ありません。
  • OpenKinectには、デバイスキャリブレーション機能があります: http://openkinect.org/wiki/Calibration 。したがって、OpenKinectを使用する場合は、デバイスを調整する必要があると思います。

キャリブレーションがOpenKinectにのみ必要であることが本当であれば、そのような必要なしにアプリケーションを配布およびインストールする方が簡単であるため、公式SDKにとって大きな利点です。


個人的には、OpenKinect SDKで失敗した後、公式SDKを使用しました。

  1. すぐにインストールできるドライバーが付属
  2. 簡単にビジネスを始めるための例とコードが付属しています
  3. 総合:15分程度で自分の開発を始めることができました。
  4. さて、数か月間Kinectで作業した後、提供されたAPIに非常に満足していると言わざるを得ません。ただし、実際に動作させることはなかったため、OpenKinect SDKと比較することはできません(ただし、おそらく公平な試行はできませんでした)。

UPDATE:2012年2月1日現在、公式SDKの商用ライセンスがあります。「このリリースの商用ライセンスは、商用アプリケーションの開発と配布を許可します。以前のSDKはベータ版であったため、結果として研究、テスト、および実験にのみ適しており、最終的な商用製品での使用には適していませんでした。新しいライセンスにより、開発者はKinect for Windowsアプリケーションを作成および販売できますWindowsプラットフォームでKinect for Windowsハードウェアを使用しているエンドユーザーのお客様。」 開発者のよくある質問

56
Avada Kedavra

Avada Kedavra で説明されているように answer で、これらはいくつかの興味深い違いです。

  • サポートされているオペレーティングシステム:WindowsではMicrosoft SDKのみを使用できますが、オープンソースソリューションは通常、他のオペレーティングシステムで動作できます。
  • プログラミング言語:オープンソースソリューションでは幅広い選択肢がありますが、MicrosoftはC++とC#のみをサポートしています(Visual BasicはSDK 2.0ではサポートされていません);
  • ドキュメントとサポート:マイクロソフトは、優れたフォーラムと充実したドキュメントを提供しています(サンプルが多数あります)。しかし、十分に文書化されたいくつかのオープンソースソリューションがあります。
  • license:Microsoftは独自仕様であり、オープンソースは無料または無償です。また、オープンソースのアイデアが大企業に買収され、オープンではなくなったものに変容したこともあります。おそらくあなたはそうではありませんが、この追加の偶然性に留意してください。

私個人の意見では、オープンソースソリューションとMicrosoft SDKの最も大きな違いは、骨格追跡アルゴリズムに厳密に関連しています。

深度とRGBデータはオープン/フリーAPIとMicrosoft SDKの両方で効果的に提供できますが、骨格追跡機能の実装はリバースエンジニアリングの問題だけではありません。

このようなアルゴリズムを実装するには、開発者がパターン認識と機械学習の分野で強力な能力を持っている必要があり、そのような種類の知識はオープンソースコミュニティで利用できると確信しています。ただし、骨格追跡の実装は「トレーニング済み」アルゴリズムに基づいており、非常に大量のデータを収集するには多くの実験が必要です。次に、これらのデータを使用して、骨格関節を認識できるアルゴリズムを「トレーニング」します。

十分なデータを取得するだけでなく、それらを調整して適切に使用するには、多くの時間とお金が必要です。マイクロソフトの研究者と開発者は、この種の作業を行うのに最適な状態にあります。それが彼らの仕事だからです。

以前の経験では、オープンソースソリューションは優れた骨格追跡機能を提供しますが、MicrosoftがSDKで提供するものと同じレベルではありません。

また、Microsoft SDKは、顔認識や関節の向きなど、多くの追加機能を提供し、ジェスチャーGUIをすばやく構築する場合に非常に便利ないくつかのウィジェットを提供することも忘れないでください。

だから私が提案するのは、単に深さやRGBデータが必要なプロジェクトに取り組んでいる場合、またはMicrosoft SDKでサポートされていないプログラミング言語を使用する必要がある場合は、オープンを選択する必要がありますソースソリューション。それ以外の場合は、Microsoft SDKが最適です。

6
Vito Gentile

Cinderフレームワークを強くお勧めします。 (libcinder.org)

C++を使用している場合、OpenNIとKinect開発の両方をサポートします。現在、これらのCinderblockを介してKinect SDK 1.7およびOpenNI 2をサポートしています。

MS Kinect SDK 1.7(安定) https://github.com/BanTheRewind/Cinder-MsKinect

OpenNI 2/NITE 2.2(アルファ) https://github.com/wieden-kennedy/Cinder-OpenNI

OpenNIは最大6つのスケルトンを同時に追跡できます。 OpenNI 2はKinectで急速に増加していますが、新しいKinectはおそらく来月発売されるときに変更されます。ただし、基本的な基本原則が変わることはほとんどありません。

OpenNIの初期リリースの主な欠点は、ユーザーを認識するためにフルボディアクティベーションポーズが必要なことでした。これは、多くのアプリケーションにとって重大な問題でしたが、これは新しいバージョンで解決されたようで、OpenNI 2は最初はフォーカスジェスチャが必要ですが、近距離での堅牢なハンドトラッキング。 MacまたはLinuxで作業している場合は、ほとんど唯一の選択肢です。

3
user1234676