Подтвердить что ты не робот

Официальный Kinect SDK против альтернатив с открытым исходным кодом

Где они отличаются?

В чем преимущества выбора libfreenect или OpenNI + SensorKinect, например, над официальным SDK и наоборот?

Каковы недостатки?

4b9b3361

Ответ 1

Обратите внимание, что приведенный ниже ответ соответствует дате, и некоторые факты могут быть очень устаревшими в ближайшем будущем. Текущее состояние официального Kinect SDK - бета 1,00.12.

Первое очевидное различие заключается в том, что официальный SDK поддерживается командой Microsoft Research, а OpenKinect - это SDK с открытым исходным кодом, поддерживаемый сообществом с открытым исходным кодом. У обоих есть свои минусы и плюсы.

  • Официальный SDK разработан Microsoft, который также разрабатывает аппаратное обеспечение и поэтому должен знать внутреннюю информацию об устройстве, которое общество с открытым исходным кодом должно перепроектировать. Очевидно, что это преимущество Microsoft.
  • Microsoft вкладывает много денег в это устройство, и я уверен, что они будут делать то, что, по их мнению, необходимо, чтобы поддерживать их SDK. Наличие экономики за ней дает много преимуществ.
  • С другой стороны, никогда не стоит недооценивать силу общества с открытым исходным кодом: "сообщество OpenKinect состоит из более чем 2000 членов, которые вносят свое время и код в проект. Наши участники присоединились к этому проекту с целью создания максимально возможного набор приложений для Kinect. OpenKinect - это настоящее сообщество с открытым исходным кодом!" - http://openkinect.org/wiki/Main_Page.
  • OpenKinect был выпущен задолго до официального SDK, поскольку устройство kinect было взломанно в первый или второй день его выпуска. Престижность OpenKinect!

Поддерживаемые языки программирования:

  • Официальный SDK: С++, С# или Visual Basic с использованием Microsoft Visual Studio 2010.
  • OpenKinect: Python, C, С++, С#, Java, Lisp и многое другое! Очевидно, что не требуется Visual Studio.

Поддержка операционных систем:

  • Официальный SDK: устанавливается только в Windows 7.
  • OpenKinect: работает на Linux, OS X и Windows

Ясно преимущество OpenKinect.

Лицензия:

  • Официальный SDK находится в текущем бета-состоянии только для тестирования. SDK был разработан специально для поощрения широких исследований и экспериментов с академическими, исследовательскими и энтузиастскими сообществами. коммерческие приложения не разрешены. Обратите внимание, что это, вероятно, изменится в будущих выпусках SDK. Посетите FAQ для получения дополнительной информации
  • Приложения OpenKinect могут быть открыты для коммерческого использования, но онлайн-источники заявляют, что это может быть не так просто. Я бы хорошо рассмотрел условия, прежде чем выпускать с ними коммерческие приложения. Прочтите Kinect - последствия лицензирования открытых аппаратных проектов для получения дополнительной информации.

Документация и поддержка:

  • Официальный SDK: хорошо документирован и предоставляет форум поддержки
  • OpenKinect: появляется список рассылки, твиттер и irc. но нет официального форума/ОК? Документация на веб-сайте не такая богатая, как мне бы хотелось.

Калибровка устройства:

Различные устройства Kinect могут немного отличаться в зависимости от партии, в которой они были изготовлены. При этом иногда требуется калибровка устройства. Но:

  • Официальный SDK не предоставляет никаких настроек калибровки, но мне пока не пришлось откалибровать устройство, над которым я работаю. Согласно чему-то, что я читал онлайн (ссылка потеряна) во время производства, параметры калибровки записываются на устройство kinect, поэтому с официальной калибровкой SDK не требуется.
  • OpenKinect предлагает калибровку устройства: http://openkinect.org/wiki/Calibration. Таким образом, я считаю, что вы должны откалибровать свое устройство, если вы идете с OpenKinect.

Если верно, что калибровка необходима только для OpenKinect, это большое преимущество для официального SDK, так как проще распространять и устанавливать приложения без такой необходимости.


Лично, после неудачной попытки с OpenKinect SDK я пошел с официальным SDK, который

  • появились драйверы, установленные из коробки
  • пришли примеры и код для легкого перехода в бизнес
  • Все-в-одном: я мог бы начать собственное развитие в течение 15 минут или около того.
  • Теперь, после работы с Kinect в течение нескольких месяцев, я должен сказать, что я вполне доволен предоставленным API. Однако я не могу сравнить его с SDK OpenKinect, поскольку я на самом деле никогда не работал (но, возможно, это не дало ему честной попытки).

UPDATE:По состоянию на 1 февраля 2012 года для официального SDK имеется коммерческая лицензия: "Коммерческая лицензия на этот выпуск разрешает разработку и распространение коммерческих приложений. Предыдущий SDK был бета-версией и, как результат, был подходящим только для исследований, тестирования и экспериментов и не был подходящим для использования с конечным коммерческим продуктом. новая лицензия позволит разработчикам создавать и продавать свои приложения Kinect для Windows для конечных пользователей с использованием оборудования Kinect для Windows на платформах Windows". Часто задаваемые вопросы разработчика

Ответ 2

Как объяснено Avada Kedavra в его/ее ответе, это некоторые интересные отличия:

  • поддерживаемые операционные системы: вы можете использовать Microsoft SDK только в Windows, в то время как решения с открытым исходным кодом обычно могут работать в других операционных системах;
  • языки программирования: у вас более широкий выбор с открытым исходным кодом, в то время как Microsoft поддерживает только С++ и С# (Visual Basic больше не поддерживается SDK 2.0);
  • документация и поддержка. Microsoft предлагает хороший форум и хорошо подготовленную документацию (с большим количеством образцов); но есть несколько открытых исходных решений хорошо документированы;
  • лицензия. Microsoft меньше или больше патентована, с открытым исходным кодом предоставляется меньше или больше бесплатных. Считайте также, что идеи с открытым исходным кодом иногда покупаются крупными компаниями и трансформируются в нечто более открытое. Вероятно, ваш не будет иметь дело, но имейте в виду эту дополнительную возможность.

По моему личному мнению, самая значительная разница между решениями с открытым исходным кодом и Microsoft SDK строго связана с алгоритмом скелетного отслеживания.

Хотя данные глубины и RGB могут быть эффективно предоставлены как открытыми/бесплатными API, так и Microsoft SDK, реализация возможностей отслеживания скелета - это не только вопрос обратной инженерии.

Чтобы реализовать такой алгоритм, разработчики должны обладать сильной компетенцией в областях распознавания образов и машинного обучения, и я совершенно уверен, что такой вид знаний доступен среди сообщества с открытым исходным кодом. Но реализация скелетного слежения основана на "обученном" алгоритме, который требует большого количества экспериментов для сбора очень большого количества данных. Эти данные затем используются для "обучения" алгоритму, который может распознавать скелетные суставы.

Получение достаточного количества данных, но также их корректировка и правильное использование, требует много времени и денег. Исследователи и разработчики Microsoft находятся в лучших условиях для работы над такими вещами, просто потому, что это их работа.

В моем предыдущем опыте я заметил, что решения с открытым исходным кодом обеспечивают хорошие возможности отслеживания скелета, но они не находятся на том же уровне, что предлагает Microsoft с его SDK.

Помните также, что Microsoft SDK предоставляет множество дополнительных возможностей, таких как распознавание лиц или совместная ориентация, и несколько виджетов очень полезны, если вы хотите быстро построить строчный GUI.

Итак, я предлагаю: если вы работаете над проектом, в котором вам просто нужны данные глубины и/или RGB, или если у вас есть необходимость использовать язык программирования, который не поддерживается Microsoft SDK, тогда вы должны выберите решение с открытым исходным кодом. В противном случае лучшим вариантом будет Microsoft SDK.

Ответ 3

Я бы настоятельно рекомендовал систему 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, это в значительной степени ваш единственный выбор.