C # - Мультитач помощь? USB веб-камера ввода? Анализ изображений? - PullRequest
1 голос
/ 11 ноября 2009

Я пытаюсь сделать самодельный сенсорный экран и хотел бы представить его на местной научной ярмарке, но хотел сделать это с точки зрения программирования Multi-touch. Моя проблема заключается в том, что я никогда не работал с анализом изображений (с веб-камеры на основе USB).
Я хотел бы сделать этот проект на C #, если это возможно (C ++ - если худшее приходит к худшему)
Мне нужно проанализировать черную картинку (с веб-камеры USB) , а затем определить, когда появляются белые пятна. Как мне поступить? --- есть ли известный метод обнаружения изменений против анализа каждого пикселя? если это так, указатель на то, где это было бы хорошо :)
Также как мне получить информацию с веб-камеры через USB? --- где я могу получить библиотеки / ddl?
Я видел некоторые программы, которые работают с этим, но они конвертируют изображения - что требует времени и скорости процессора ... есть ли способ использовать необработанное изображение / данные?
HELP?

Ответы [ 4 ]

3 голосов
/ 11 ноября 2009

Как только вы введете данные (у вас будет совершенно темный и совершенно яркий контраст), у вас будет матрица значений, подобная этой: (серая шкала)

0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 256 0 0 0 0 0
0 0 0 0 0 256 256 256 0 0 0 0
0 0 0 0 0 0 256 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 

Ваша работа должна заключаться в том, чтобы сегментировать правильные значения цвета (256) и определять положение. Чтобы получить движение (при условии, что вы отслеживаете только 1 объект), вам нужно сравнить следующую позицию большого двоичного объекта с предыдущей.

В реальном мире, особенно с веб-камерой, вы никогда не получите сплошной темный фон с хорошим контрастом. Веб-камера имеет низкое разрешение, свет никогда не бывает идеальным, и шум прибавляется от объектива и ПЗС-дефектов / цветового приближения.

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

Некоторые из этих проблем включают:

  1. Столкновение BLOB-объектов (откуда вы знаете, куда и куда попадает BLOB-объект)
  2. Перекрестные сгустки (сместились ли капли по сторонам, или сгустки переместились в обратном направлении от предыдущего перемещения)
  3. Объединение сгустков (где два слияния становятся одним)

Чтобы захватить камеру с помощью C #, вы можете проверить это. WIA - не самый быстрый способ сделать снимок. Однако с этим намного легче иметь дело. Я предлагаю вам, если вы все еще заинтересованы в этом, нарисовать два изображения в фотошопе и отследить маркеры. Это не так увлекательно, но поможет вам решить проблему проще и облегчит описание проблемы.

2 голосов
/ 11 ноября 2009

То, что вы хотите, это «обнаружение BLOB-объектов». Вот хорошая тема о библиотеке BLOB-объектов

Уже есть куча библиотек и программного обеспечения для мультитач / компьютерного зрения. Лучший ресурс для такого рода вещей - wiki.nuigroup.com . Особенно секция Frameworks и библиотеки . В настоящее время там не так много информации о C #, но если вы что-то узнаете, убедитесь, что вы поместили это в эту вики для всех.

Существует также раздел форума *1011* NuiGroup на форуме , который может вам очень помочь. В этом сообществе можно оказать большую помощь.

1 голос
/ 11 ноября 2009

Как место, где можно начать веб-камеру, я бы начал здесь:

http://www.hanselman.com/blog/CapturingVideoAWebCameraUsingWIANotPossible.aspx

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

0 голосов
/ 09 января 2010

Для получения изображений с веб-камеры фреймворк AForge очень прост в использовании! Проверьте пример приложения обнаружения движения для сбора кода:)

...