Про стриптизёрш…
gorkoff — 18.06.2010
Originally published at GORKOFF. You can comment here or there.
Помните когда-то давно я рассказывал вам про задачу выделения контуров на изображении, получаемом с тепловизора? Решение этой задачи довольно простое и элегантное. Сначала надо бинаризовать изображение. Выделить контуры из бинаризованных изображений очень просто: контуром мы будем считать любую белую точку, у которой есть хотя бы есть один чёрный сосед. Собственно вот и всё решение.
Но не так давно нам дали новое задание: теперь необходимо не просто выделять контуры объектов, но находить среди всех контуров девушку и постоянно сопровождать её. Причём всё это без вмешательства человека. Вот о решении этой задачи я и хочу вам рассказать. Условно весь процесс решения можно разбить на 5 этапов.
1. Обрезка краёв
изображения.
Мы предполагаем, что девушка будет
находиться в окрестности шеста и не будет отходить к краям подиума,
поэтому в целях уменьшения вычислений мы будем заливать края кадра
чёрным.
2.
Бинаризация.
Работать с чёрно-белыми изображениями
гораздо проще, чем с изображениями в градациях серого. Поэтому все
пикселы яркость, которых выше заданного значения, мы делаем белыми,
те пикселы яркость которых ниже порога, мы делаем чёрными. В итоге
мы получаем множество связных белых областей.
3. Выделение значимых
областей.
Из всего множества белых областей
выбираем значимые области (т.е. те области с большой площадью) и
заливаем их разными цветами. Незначимые области мы убираем, заливая
их чёрным.
4. Вычисление центров
тяжести значимых областей.
В общем случае для вычисления центра
тяжести необходимо интегрировать, но в нашем случае мы можем
заменить интегрирование вычислением дискретных сумм.
На
изображении центры тяжести фигур отмечены белыми
квадратиками.
5. Поиск
девушки.
Тепловизор установлен так, что
девушка во время танца будет находиться в центре кадра. Поэтому
среди всех значимых областей выбираем одну, центр тяжести которой
ближе всего к центру экрана. Именно эту область мы и будем считать
девушкой. Безусловно, возможны ситуации, когда программа будет
ошибаться и переключать своё внимание на какого-нибудь посетителя
стриптиз-клуба, но особенность алгоритма в том, что рано или поздно
программа вернётся к слежению за девушкой. Даже в такой сложной
ситуации, когда между девушкой и камерой проходит человек, алгоритм
отработает корректно.
Примеры работы алгоритма
На этом видео показана обработка
коллизии «чужеродный объект между камерой и объектом слежения».
После того как чужеродный объект покидает область кадра, алгоритм
автоматически находит девушку и в дальнейшем следит за
ней.
На этом видео показано слежение за
объектом с быстро меняющимся центром тяжести.
P.S. Отдельный и очень интересный вопрос – как сделать так, чтобы девушку не «разрезало» шестом во время вращения. Могу рассказать об этом в другой раз, если вам будет интересно.
P.P.S. Стоит ли мне и дальше писать о том, чем я занимаюсь, или это скучно и путано?
|
|
</> |





Полная загрузка станков: где искать выгодные заказы на механическую обработку металла
Самые полезные приложения смартфона для путешественников
Веселые картинки
Предновогодняя Тверская
Доброе утро...)
Лев прыгнул или блеф дрыгнул? КНР vs Тайвань, США vs Венесуэла
Народное творчество
Городской парк Гранд Ворлд Фукуок
Полигон для отработки новых технологий демонтажа политических режимов

