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

Распознавание образов Kinect

Я купил Kinect, чтобы играть на моем ПК на С#. (И какое удовольствие это программа!)

Я использую CLNUIDevice.dll, чтобы получить изображение глубины с Kinect. Это прекрасно работает, и я могу прочитать глубину с помощью значений RGB на изображении.

Теперь мне интересно, какие библиотеки существуют для разных типов распознавания. Я видел распознавание рук, распознавание лиц, скелет, эмоции, объекты и т.д.

Библиотеки обработки изображений не обязательно должны быть для Kinect (хотя это было бы неплохо), и они не должны быть для .Net(хотя это было бы неплохо). Например: Любой объект отслеживания lib будет работать, но если он может использовать 3D-карту тепла от Kinect правильно, она будет работать намного лучше.

4b9b3361

Ответ 1

Вы можете взять серию RGB-матриц, созданных Kinect, и запустить их с помощью стандартных алгоритмов обработки изображений, на практике алгоритмы обработки изображений обычно объединяются вместе для получения значимых результатов. Вот несколько стандартных методов, которые могут быть легко реализованы (и объединены) в .net:

Template Matching - метод обработки цифровых изображений для поиска небольших частей изображения, соответствующих шаблону image http://en.wikipedia.org/wiki/Template_matching

Морфологическая обработка изображений - теория и техника для анализа и обработки геометрических структур на основе теории множеств, теории решетки, топологии и случайных функций http://ashleyaberneithy.wordpress.com/2011/08/08/automating-radiology-detecting-lung-nodules-using-morphological-image-processing-in-f/

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

Принципиальный анализ компонентов. Я использовал эту технику в прошлом, и я думаю, что это используется в современных потребительских камерах для распознавания лиц http://en.wikipedia.org/wiki/Principal_component_analysis

Согласование шаблонов машинного обучения. В прошлом я использовал вспомогательные векторные машины и алгоритмы обучения на основе нейронной сети для обнаружения шаблонов в матрицах изображений. Это стоит прочитать Вапник Статистическая теория обучения - http://www.amazon.com/Statistical-Learning-Theory-Vladimir-Vapnik/dp/0471030031 который показывает, как успешно сопоставить данные обучения в n-мерной структуре и как успешно моделировать гиперплоскости внутри структуры, которые классифицируют данные, новые данные затем могут быть классифицированы на основе этой модели. Также существует библиотека под названием LibSVM, которую я нашел полезной. http://www.csie.ntu.edu.tw/~cjlin/libsvm/

Как раз боковое примечание, было бы более естественно использовать F # в мире .net для реализации некоторых из этих алгоритмов

EDIT: еще одна действительно хорошая книга - "Цифровая обработка изображений"

Ответ 2

Полезная библиотека .Net для компьютерного зрения и машинного обучения AForge.NET

Вот пример кода и видео с кем-то, использующим его с Kinect: Conquex

Ответ 3

Изучите OpenCV. Это стандартная структура для лабораторий компьютерного зрения/обучения сегодня. Попробуйте найти объекты контура, ближайших соседей K и т.д. Но сначала изучите его интерфейс (структуры данных, функции).

Ответ 5

Сайдинг с Кенни на этом - оболочка Emgu С# для OpenCV - это то, за что я бы пошел. OpenCV (обычно на базе С++) является наиболее широко используемой инфраструктурой Computer Vision, а также частично поддерживается/оптимизируется Intel. Многие современные исследователи и инженеры используют его для создания своих собственных проектов, а оболочка Emgu дает отличный перевод, чтобы начать использовать его библиотеки на С#. Я чувствую, что много инноваций с открытым исходным кодом в области Kinect происходит с обертками libfreenect (лучше всего используется с Linux/С++), и EmguCV должен дать вам лучший способ подражать (или использовать другие имитации) того, что эти исследователи Vision делают.

Ответ 6

Некоторая коррекция об OpenCV, это была библиотека C, в то время как прежний код все еще поддерживается, OpenCV теперь почти полностью С++, то есть начиная с версии 2.1. Многим из которых было сложно справиться, когда это была только библиотека C, была упрощена в более новых версиях.

Также есть группа OpenCV Yahoo, которая работает как отличный ресурс. Кроме того, openCV поставляется с набором образцов, которые помогут вам справиться с базовым сопоставлением шаблонов.

Ссылка на группы Yahoo http://tech.groups.yahoo.com/group/OpenCV/

Образец Kinect и OpenCV http://www.morethantechnical.com/2010/11/22/kinect-and-opencv-2-1/