Где они отличаются?
В чем преимущества выбора libfreenect или OpenNI + SensorKinect, например, над официальным SDK и наоборот?
Каковы недостатки?
Где они отличаются?
В чем преимущества выбора libfreenect или OpenNI + SensorKinect, например, над официальным SDK и наоборот?
Каковы недостатки?
Обратите внимание, что приведенный ниже ответ соответствует дате, и некоторые факты могут быть очень устаревшими в ближайшем будущем. Текущее состояние официального Kinect SDK - бета 1,00.12.
Первое очевидное различие заключается в том, что официальный SDK поддерживается командой Microsoft Research, а OpenKinect - это SDK с открытым исходным кодом, поддерживаемый сообществом с открытым исходным кодом. У обоих есть свои минусы и плюсы.
Поддерживаемые языки программирования:
Поддержка операционных систем:
Ясно преимущество OpenKinect.
Лицензия:
Документация и поддержка:
Калибровка устройства:
Различные устройства Kinect могут немного отличаться в зависимости от партии, в которой они были изготовлены. При этом иногда требуется калибровка устройства. Но:
Если верно, что калибровка необходима только для OpenKinect, это большое преимущество для официального SDK, так как проще распространять и устанавливать приложения без такой необходимости.
Лично, после неудачной попытки с OpenKinect SDK я пошел с официальным SDK, который
UPDATE:По состоянию на 1 февраля 2012 года для официального SDK имеется коммерческая лицензия: "Коммерческая лицензия на этот выпуск разрешает разработку и распространение коммерческих приложений. Предыдущий SDK был бета-версией и, как результат, был подходящим только для исследований, тестирования и экспериментов и не был подходящим для использования с конечным коммерческим продуктом. новая лицензия позволит разработчикам создавать и продавать свои приложения Kinect для Windows для конечных пользователей с использованием оборудования Kinect для Windows на платформах Windows". Часто задаваемые вопросы разработчика
Как объяснено Avada Kedavra в его/ее ответе, это некоторые интересные отличия:
По моему личному мнению, самая значительная разница между решениями с открытым исходным кодом и Microsoft SDK строго связана с алгоритмом скелетного отслеживания.
Хотя данные глубины и RGB могут быть эффективно предоставлены как открытыми/бесплатными API, так и Microsoft SDK, реализация возможностей отслеживания скелета - это не только вопрос обратной инженерии.
Чтобы реализовать такой алгоритм, разработчики должны обладать сильной компетенцией в областях распознавания образов и машинного обучения, и я совершенно уверен, что такой вид знаний доступен среди сообщества с открытым исходным кодом. Но реализация скелетного слежения основана на "обученном" алгоритме, который требует большого количества экспериментов для сбора очень большого количества данных. Эти данные затем используются для "обучения" алгоритму, который может распознавать скелетные суставы.
Получение достаточного количества данных, но также их корректировка и правильное использование, требует много времени и денег. Исследователи и разработчики Microsoft находятся в лучших условиях для работы над такими вещами, просто потому, что это их работа.
В моем предыдущем опыте я заметил, что решения с открытым исходным кодом обеспечивают хорошие возможности отслеживания скелета, но они не находятся на том же уровне, что предлагает Microsoft с его SDK.
Помните также, что Microsoft SDK предоставляет множество дополнительных возможностей, таких как распознавание лиц или совместная ориентация, и несколько виджетов очень полезны, если вы хотите быстро построить строчный GUI.
Итак, я предлагаю: если вы работаете над проектом, в котором вам просто нужны данные глубины и/или RGB, или если у вас есть необходимость использовать язык программирования, который не поддерживается Microsoft SDK, тогда вы должны выберите решение с открытым исходным кодом. В противном случае лучшим вариантом будет Microsoft SDK.
Я бы настоятельно рекомендовал систему Cinder. (Libcinder.org)
Он поддерживает как OpenNI, так и Kinect develoment, если вы используете С++. Теперь он поддерживает Kinect SDK 1.7 и OpenNI 2 через эти Cinderblocks:
MS Kinect SDK 1.7 (стабильный) https://github.com/BanTheRewind/Cinder-MsKinect
OpenNI 2/NITE 2.2 (альфа) https://github.com/wieden-kennedy/Cinder-OpenNI
Оба могут выполнять скелетное отслеживание из boz, OpenNI способен отслеживать до шести скелетов одновременно. OpenNI 2 быстро набирает Kinect, хотя новый Kinect, вероятно, изменит это, когда он появится в следующем месяце. Однако основные базовые принципы вряд ли изменятся.
Основным недостатком первоначального выпуска OpenNI было то, что для распознавания пользователя требовалась полная активация активации тела, что было прерывателем транзакций для множества приложений - однако это, похоже, было решено в более новых версиях и OpenNI 2 также поддерживает надежное отслеживание рук с близкого расстояния, хотя по-прежнему требуется жест фокуса. Если вы работаете на Mac или Linux, это в значительной степени ваш единственный выбор.