Où diffèrent-ils?
Quels sont les avantages de choisir libfreenect ou OpenNI + SensorKinect, par exemple, par rapport au SDK officiel, et vice-versa?
Quels sont les inconvénients?
Veuillez noter que la réponse ci-dessous est par date et que certains faits pourraient très bien être obsolètes dans un proche avenir. L'état actuel du SDK Kinect officiel est la version bêta 1.00.12.
La première différence évidente est que le SDK officiel est géré par l'équipe Microsoft Research tandis que OpenKinect est un SDK open source géré par la communauté open source. Les deux ont leurs inconvénients et leurs avantages.
Langages de programmation pris en charge:
Prise en charge des systèmes d'exploitation:
Profitez clairement d'OpenKinect.
Licence:
Documentation et support:
Calibrage de l'appareil:
Différents appareils Kinect peuvent différer légèrement selon le lot dans lequel ils ont été produits. Ainsi, l'étalonnage de l'appareil est parfois nécessaire. Mais:
S'il est vrai que l'étalonnage n'est nécessaire que pour OpenKinect, c'est un gros avantage pour le SDK officiel car il est plus facile de distribuer et d'installer des applications sans un tel besoin.
Personnellement, après un échec avec le SDK OpenKinect, je suis allé avec le SDK officiel, qui
MISE À JOUR: Depuis le 1er février 2012, il existe une licence commerciale pour le SDK officiel: "La licence commerciale de cette version autorise le développement et la distribution d'applications commerciales. Le SDK précédent était une version bêta et, par conséquent, ne convenait qu'à la recherche, aux tests et à l'expérimentation et n'était pas adapté à une utilisation avec un produit commercial final. La nouvelle licence permettra aux développeurs de créer et de vendre leurs applications Kinect pour Windows à clients finaux utilisant le matériel Kinect pour Windows sur les plates-formes Windows. " Foire aux questions des développeurs
Comme expliqué par Avada Kedavra dans son réponse , voici quelques différences intéressantes:
À mon avis, la différence la plus significative entre les solutions open source et les SDK Microsoft est strictement liée à l'algorithme de suivi squelettique.
Bien que la profondeur et les données RVB puissent être fournies efficacement par les API ouvertes/gratuites et les SDK Microsoft, la mise en œuvre des capacités de suivi squelettique n'est pas seulement une question de rétro-ingénierie.
Pour mettre en œuvre un tel algorithme, les développeurs doivent avoir de solides compétences dans les domaines de la reconnaissance des formes et de l'apprentissage automatique, et je suis sûr que ce type de connaissances est disponible dans la communauté open source. Mais la mise en œuvre du suivi squelettique est basée sur un algorithme "entraîné", qui nécessite de nombreuses expériences pour collecter une très grande quantité de données. Ces données sont ensuite utilisées pour "former" l'algorithme, qui peut reconnaître les articulations squelettiques.
Obtenir suffisamment de données, mais aussi les ajuster et les utiliser correctement, nécessite beaucoup de temps et d'argent. Les chercheurs et développeurs Microsoft sont dans les meilleures conditions pour travailler sur ce genre de choses, simplement parce que c'est leur métier.
Dans mes expériences précédentes, j'ai remarqué que les solutions open source offrent de bonnes capacités de suivi du squelette, mais elles ne sont pas au même niveau que ce que Microsoft propose avec son SDK.
Rappelez-vous également que Microsoft SDK offre de nombreuses fonctionnalités supplémentaires, telles que la reconnaissance faciale ou l'orientation articulaire, et plusieurs widgets très utiles si vous souhaitez créer rapidement une interface graphique gestuelle.
Donc, ce que je suggère, c'est: si vous travaillez sur un projet dans lequel vous avez simplement besoin de données de profondeur et/ou RVB, ou si vous avez besoin d'utiliser un langage de programmation qui n'est pas pris en charge par Microsoft SDK, alors vous devriez opter pour open solution source. Sinon, Microsoft SDK serait mon meilleur choix.
Je recommanderais fortement le framework Cinder. (libcinder.org)
Il prend en charge le développement OpenNI et Kinect, si vous utilisez C++. Il prend désormais en charge Kinect SDK 1.7 et OpenNI 2, via ces cinderblocks:
SDK MS Kinect 1.7 (stable) https://github.com/BanTheRewind/Cinder-MsKinect
OpenNI 2/NITE 2.2 (alpha) https://github.com/wieden-kennedy/Cinder-OpenNI
Les deux peuvent effectuer un suivi squelettique hors du boz, OpenNI étant capable de suivre jusqu'à six squelettes simultanément. OpenNI 2 progresse rapidement sur le Kinect, bien que le nouveau Kinect changera probablement cela quand il sortira le mois prochain. Cependant, il est peu probable que les principes de base sous-jacents changent.
Le principal inconvénient de la version initiale d'OpenNI était qu'elle nécessitait une pose d'activation du corps entier pour reconnaître un utilisateur, ce qui était un facteur décisif pour de nombreuses applications - mais cela semble avoir été résolu dans les versions plus récentes et OpenNI 2 prend également en charge suivi de la main robuste à courte portée, bien qu'il nécessite toujours un geste de mise au point au départ. Si vous travaillez sur Mac ou Linux, c'est à peu près votre seul choix.