Как ускорить анализ BLOB-объектов на Emgu CV C # - PullRequest
2 голосов
/ 19 марта 2011

Я пытаюсь отследить движущийся светодиод с помощью Emgu CV C #.Я фиксирую захваченное изображение до тех пор, пока у меня не появится только светодиод в виде белого пятна / пятна.Я использовал анализ / отслеживание BLOB-объектов, и это работает, но проблема в том, что если я перемещаю свет слишком быстро, он больше не может его отслеживать.Если я замедляюсь, это работает.Есть ли способ ускорить процесс?

В конце концов мне нужно рисовать на компьютере, используя светодиод.И еще мне нужно положение / центр светодиода для других целей.

Код, который я использовал для анализа и отслеживания BLOB-объектов, такой же, как код в Emgu.CV.Examples -> Video Surveillance.

1 Ответ

0 голосов
/ 14 июля 2011

Ну да и нет. Вы можете проверить свой код и упростить процесс, чтобы обработка изображений заняла как можно меньше времени, то есть сократить циклы или вычисления. Вы можете изменить аппаратное обеспечение компьютера; более быстрый процессор с большим количеством ядер позволил бы обрабатывать больше потоков с более высокой скоростью. Вы можете инвестировать в видеокарту CUDA и обрабатывать ее, однако, если ваш код не так сложен, ваша производительность может даже снизиться. Предлагается высококачественная видеокарта.

Большая часть времени фактически тратится впустую, отображая результаты на экране. Значительные улучшения могут быть сделаны путем устранения этого. Если ничего из этого не улучшает вашу производительность, тогда единственный вариант - перенести ваши алгоритмы анализа на аппаратные устройства FPGA (по сути, это пользовательские процессы), это дорого по времени, и если вы никогда не делали ничего подобного очень сложно. Обработка изображений в реальном времени сложно реализовать и достичь. Возможная альтернатива состоит в том, чтобы обмануть XBOX Kinect на самом деле вводит сложные алгоритмы для прогнозирования движения пользователей между кадрами. Вот почему игровой процесс иногда нервный.

Предлагаемый маршрут будет состоять в том, чтобы проверить вашу процедуру отслеживания BLOB-объектов, если вы используете Hough-BLOB-отслеживание, попробуйте самостоятельно написать сумму строк и столбцов изображения, это даст вам пиковое значение, соответствующее X и Тем не менее, можно использовать только одну позицию Y. Это может повысить производительность при удалении скрытых процессов, участвующих в функции отслеживания BLOB-объектов.

Во-вторых, попробуйте изменить ваши методы определения порога для максимально простого (если вы этого еще не сделали), если свет яркий, просто вычтите постоянную, скажем, 250, из изображения в оттенках серого, мы надеемся, что вы просто покинете светодиод, если вы не находитесь в светлой комнате или это еще один источник света.

В настоящее время я занимаюсь докторской диссертацией по обработке изображений, поэтому предупреждаю, что выполнение обработки в реальном времени может занять много времени. Я бы также посоветовал не ожидать лучших результатов, которые веб-камера будет получать с частотой примерно 30 кадров в секунду, а при обработке можно ожидать 25 кадров в секунду в лучшем случае, возможно, даже до 10 кадров в секунду.

Альтернативой стандартному светодиоду является инфракрасный светодиод с соответствующим световым фильтром для вашей камеры. Это позволит увидеть пятно от светодиода с небольшим фоновым шумом. Обратитесь к Instructables.com за примерами.

Надеюсь, что некоторые из подсказок Chris

...