官方Kinect SDK与开源替代品

时间:2011-10-09 20:45:36

标签: kinect

他们在哪里有所不同?

选择libfreenect或OpenNI + SensorKinect有什么好处,例如,官方SDK,反之亦然?

有哪些缺点?

3 个答案:

答案 0 :(得分:56)

请注意,以下答案是按日期进行的,有些事实可能会在不久的将来过时。官方Kinect SDK的当前状态是beta 1.00.12。

第一个明显的区别是官方SDK由Microsoft Research团队维护,而OpenKinect是由开源社区维护的开源SDK。两者都有其缺点和优点。

  • 官方SDK由Microsoft开发,它也开发硬件,因此应该知道开源社会必须逆向工程的设备的内部信息。显然这是微软的优势。
  • 微软正在为这款设备投入大量资金,我相信他们会做他们觉得有必要保持他们的SDK达到标准。经济背后具有很多优势。
  • 另一方面,永远不要低估开源社会的力量:“OpenKinect社区由超过2000名成员组成,他们将时间和代码贡献给项目。我们的成员加入了这个项目,其使命是创造最好的Kinect的应用程序套件.OpenKinect是一个真正的“开源”社区!“ - http://openkinect.org/wiki/Main_Page
  • OpenKinect早在官方SDK发布之前就已发布,因为kinect设备在发布的第一天或第二天被黑客入侵。感谢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 – Licensing implications of open hardware projects了解详情。

文档和支持:

  • 官方SDK:详细记录并提供support forum
  • OpenKinect:似乎有一个邮件列表,twitter和irc。但没有官方论坛/ QA?网站上的文档并不像我希望的那样丰富。

设备校准:

不同的Kinect设备可能会略有不同,具体取决于生产它们的批次。因此有时需要进行设备校准。但是:

  • 官方SDK没有提供任何校准设置,但我到目前为止还没有校准我正在处理的设备。根据我在网上阅读的内容(链接丢失),生产时将校准参数写入kinect设备,因此不需要官方SDK校准。
  • OpenKinect具有设备校准功能:http://openkinect.org/wiki/Calibration。因此,如果您使用OpenKinect,我相信您应该校准您的设备。

如果OpenKinect只需要校准,这对于官方SDK来说是一个很大的优势,因为在没有这种需要的情况下更容易分发和安装应用程序。


就个人而言,在使用OpenKinect SDK尝试失败之后,我选择了官方SDK,

  1. 带有开箱即用的驱动程序
  2. 附带了易于开展业务的示例和代码
  3. All-in-all:我可以在15分钟左右开始自己的开发。
  4. 现在,在与Kinect合作几个月之后,我不得不说我对提供的API非常满意。然而,我不能将它与OpenKinect SDK进行比较,因为我实际上从来没有让它工作(但也许它没有给它一个公平的尝试)。

  5. 更新:截至2012年2月1日,官方SDK已获得商业许可: “此版本的商业许可证授权开发和分发商业应用程序。之前的SDK是测试版,因此仅适用于研究,测试和实验,并且不适合与最终的商业产品一起使用。新许可证将使开发人员能够在Windows平台上使用Kinect for Windows硬件为最终用户客户创建和销售他们的Kinect for Windows应用程序。“ Developer Frequently Asked Questions

答案 1 :(得分:6)

正如Avada Kedavra在他/她answer中所解释的那样,这些是一些有趣的差异:

  • 支持的操作系统:您只能在Windows上使用Microsoft SDK,而开源解决方案通常可以在其他操作系统上运行;
  • 编程语言:您可以选择开源解决方案,而Microsoft只支持C ++和C#(SDK 2.0不再支持Visual Basic);
  • 文档和支持:Microsoft提供了一个很好的论坛和完善的文档(包含大量示例);但是有一些开源解决方案有很好的文档记录;
  • 许可证:Microsoft的专有权越来越少,开源更少或更免费。还要考虑开源思想有时候被大公司收购,并转变为不再开放的东西。可能你的情况可能并非如此,但请记住这种额外的可能性。

在我个人看来,开源解决方案和Microsoft SDK之间最显着的区别与骨架跟踪算法严格相关。

虽然开放/免费API和Microsoft SDK都可以有效地提供深度和RGB数据,但实现骨架跟踪功能不仅仅是逆向工程的问题。

为了实现这样的算法,开发人员必须在模式识别和机器学习领域具有很强的能力,我很确定开源社区中可以获得这样的知识。但是,骨干跟踪的实施基于一个经过培训的"算法,需要大量的实验才能收集到大量的数据。然后将这些数据用于训练"算法,可以识别骨骼关节。

获取足够的数据,同时调整并正确使用它们需要大量的时间和金钱。微软的研究人员和开发人员处于最佳状态,只是因为这是他们的工作。

在我之前的经历中,我注意到开源解决方案提供了良好的骨架跟踪功能,但它们与Microsoft提供的SDK不同。

还要记住,Microsoft SDK提供了许多其他功能,如面部识别或联合定位,如果您想快速构建手势GUI,则几个小部件非常有用。

所以我建议的是:如果您正在开发一个只需要深度和/或RGB数据的项目,或者如果您有必要使用Microsoft SDK不支持的编程语言,那么您应该选择开源解决方案。否则,Microsoft SDK将是我的最佳选择。

答案 2 :(得分:3)

我强烈推荐Cinder框架。 (libcinder.org)

如果你使用C ++,它支持OpenNI和Kinect开发。它现在通过这些Cinderblocks支持Kinect SDK 1.7和OpenNI 2:

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

OpenNI 2 / NITE 2.2(alpha) https://github.com/wieden-kennedy/Cinder-OpenNI

两者都可以从boz中进行骨骼跟踪,OpenNI能够同时跟踪多达六个骨架。 OpenNI 2在Kinect上正在快速增长,尽管新Kinect可能会在下个月发布时改变它。但是,基本的基本原则不太可能改变。

最初发布OpenNI的主要缺点是它需要一个全身激活姿势来识别用户,这对许多应用程序来说是一个交易破坏者 - 但是这似乎已在新版本和OpenNI中得到解决2也支持近距离的强大手部跟踪,尽管它最初仍需要焦点手势。如果你在Mac或Linux上工作,它几乎是你唯一的选择。