首页 文章

官方Kinect SDK与开源替代品

提问于
浏览
58

他们在哪里有所不同?

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

有什么缺点?

3 回答

  • 6

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

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

    • 官方SDK由Microsoft开发,它也开发硬件,因此应该知道开源社会必须逆向工程的设备的内部信息 . 显然这是微软的优势所在 .

    • 微软正在为这款设备投入大量资金,我相信他们会做他们觉得有必要保持他们的SDK达到标准 . 经济背后具有很多优势 .

    • 另一方面,永远不要低估开源社会的力量:"The OpenKinect community consists of over 2000 members contributing their time and code to the Project. Our members have joined this Project with the mission of creating the best possible suite of applications for the Kinect. OpenKinect is a true "开源" community!" - http://openkinect.org/wiki/Main_Page .

    • OpenKinect早在官方SDK之前发布,因为kinect设备在发布的第一天或第二天被黑客入侵 . 感谢OpenKinect!

    Programming languages supported:

    • 官方SDK:使用Microsoft Visual Studio 2010的C,C#或Visual Basic .

    • OpenKinect:Python,C,C,C#,Java,Lisp等等!显然不需要Visual Studio .

    Operating systems support:

    • 官方SDK:仅在Windows 7上安装 .

    • OpenKinect:在Linux,OS X和Windows上运行

    显然有利于OpenKinect .

    License:

    • 官方SDK目前处于测试状态,仅用于测试 . SDK专门用于鼓励学术界,研究界和爱好者社区进行广泛的探索和实验 . commercial applications are not permitted. 但请注意,这可能会在SDK的未来版本中发生变化 . 有关更多信息,请访问FAQ

    • OpenKinect似乎是开放的商业用途,但在线消息来源称它可能不那么简单 . 在发布任何商业应用程序之前,我会仔细研究这些条款 . 阅读Kinect – Licensing implications of open hardware projects了解更多信息 .

    Documentation and support:

    • 官方SDK:详细记录并提供support forum

    • OpenKinect:似乎有一个邮件列表,twitter和irc . 但没有官方论坛/ QA?网站上的文档并不像我希望的那样丰富 .

    Device calibration:

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

    • 官方SDK没有提供任何校准设置,但我到目前为止还没有校准我正在处理的设备 . 根据我在网上阅读的内容(链接丢失), 生产环境 时将校准参数写入kinect设备,因此不需要官方SDK校准 .

    • OpenKinect具有设备校准功能:http://openkinect.org/wiki/Calibration . 因此,如果您使用OpenKinect,我相信您应该校准您的设备 .

    如果只对OpenKinect进行校准是正确的,这对于官方SDK来说是一个很大的优势,因为它更容易分发和安装没有这种需要的应用程序 .


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

    • 带有开箱即用的驱动程序

    • 附带了示例和代码,以便于开展业务

    • All-in-all:我可以在15分钟左右开始自己的开发 .

    • 现在,在使用Kinect几个月之后,我不得不说我对提供的API非常满意 . 然而,我不能将它与OpenKinect SDK进行比较,因为我实际上从来没有让它工作(但也许它没有给它一个公平的尝试) .


    UPDATE: 截至2012年2月1日,官方SDK有商业许可证:"The commercial license for this release authorizes development and distribution of commercial applications. The prior SDK was a beta, and as a result was appropriate only for research, testing and experimentation, and was not suitable for use with a final, commercial product. The new license will enable developers to create and sell their Kinect for Windows applications to end user customers using Kinect for Windows hardware on Windows platforms." Developer Frequently Asked Questions

  • 3

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

    • supported operating systems :您只能在Windows上使用Microsoft SDK,而开源解决方案通常可以在其他操作系统上运行;

    • programming languages :您对开源解决方案有更广泛的选择,而Microsoft只支持C和C#(SDK 2.0不再支持Visual Basic);

    • documentation and support :微软提供了一个很好的论坛和一个做得很好的文档(有很多样本);但有几个开源解决方案有很好的记录;

    • license :微软越来越专有,开源越来越少 . 还要考虑开源思想有时候被大公司收购,并转变为不再开放的东西 . 可能不会是你的情况,但请记住这种额外的可能性 .

    在我个人看来,开源解决方案和Microsoft SDK之间最显着的区别与 skeletal tracking algorithm 严格相关 .

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

    为了实现这样的算法,开发人员必须在模式识别和机器学习领域具有很强的能力,并且我确信在开源社区中可以获得这样的知识 . 但是骨架跟踪的实现基于“训练”的算法,这需要大量的实验来收集非常大量的数据 . 然后,这些数据用于“训练”算法,该算法可以识别骨骼关节 .

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

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

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

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

  • 56

    我强烈推荐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上工作,它几乎是你唯一的选择 .

相关问题