0 / 0 / 3
Регистрация: 25.04.2015
Сообщений: 14
|
|
1 | |
Разработка программы распознания жестов семафорной азбуки26.04.2015, 19:43. Показов 2044. Ответов 8
Метки нет (Все метки)
Доброго времени суток, программисты-форумчане!
В институте получил задание на курсовой "Разработка программы распознания жестов семафорной азбуки". Семафорная азбука:https://ru.wikipedia.org/wiki/... 0%BA%D0%B0 Среда разработки Visual Studio 2013 (WinForm), язык разработки С++, дополнительная библиотека OpenCV(версия 2.4.9) После обсуждения с преподавателем способа реализации было предложено следующее: 1. Брать кадры с видео потока, 2. Делать детектирование человека в кадре, 3. Разделять кадр на части(зоны действия рук - то есть вертикально пополам), 4. Строить по каждой части кадра диаграммы, для определения в какой зоне кадра располагается рука. 5. Ну и соответственно определять какому символу данное расположение рук соответствует. После обдумывания данного способа реализации и поиска информации в интернете, данный способ показался достаточно трудоемким. Хотел посоветоваться с более опытными людьми, есть ли способы проще (готов выслушать все мнения и рекомендации, будет чудесно если ответы или предложения будут сопровождаться ссылками на примеры реализации алгоритмов или методов, дабы сэкономить время на поисках). Если этот метод самый оптимальный, то мой вопрос заключается во 2 пункте: "детектирование человека в кадре", подскажите алгоритм или метод отделения человека в кадре от фона, непосредственно с помощью библиотеки OPENCV? Прошу прощения, если не корректно изложил суть вопроса, пишите поясню. Заранее спасибо!
0
|
26.04.2015, 19:43 | |
Ответы с готовыми решениями:
8
Разработать программу, обучающую семафорной азбуке Написание программы с использованием файловых переменных. Разработка программы для работы с текстовым файлом Алгоритм распознания символов Распознания разбитого стекла на смартфоне |
1605 / 1507 / 251
Регистрация: 19.02.2010
Сообщений: 4,069
|
|
26.04.2015, 20:49 | 2 |
Он там есть, алгоритм 2005г и уже относительно устаревший и отстающий от более поздних методов вычитания фона. В книге Брадского и Кехлера (именно она же вроде была переведена на русский?) описывался.
0
|
0 / 0 / 3
Регистрация: 25.04.2015
Сообщений: 14
|
|
26.04.2015, 21:28 [ТС] | 3 |
Можно ссылочку на книгу или точное название книги? Но хотелось бы увидеть пример работы данного алгоритма - ибо реализация с книги алгоритма есть занятие не из быстрых.
0
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
26.04.2015, 21:37 | 4 |
Самый простой способ - правильно одеть сигнальщика. Например, даем сигнальщику красную каску и два красных флага. На картинке определяем каску и флаги как три самых больших красных кляксы. Ну а дальше строим угол "флаг1-каска-флаг2" и сопоставляем его с базой жестов. Правда, подозреваю что преподаватель скажет что контрастная одежка - это не спортивно.
0
|
0 / 0 / 3
Регистрация: 25.04.2015
Сообщений: 14
|
|
26.04.2015, 21:43 [ТС] | 5 |
0
|
1605 / 1507 / 251
Регистрация: 19.02.2010
Сообщений: 4,069
|
|
26.04.2015, 22:19 | 6 |
Сообщение было отмечено Dmitrii_tsh как решение
Решение
Dmitrii_tsh, "Learning OpenCV", Gary Bradski and Adrian Kaehler, 2008. Может, было и более позднее переиздание у буржуинов.
В книге Лажаньера "OpenCV 2 Computer Vision Application Programming Cookbook" 2011г задача вычитания фона не рассмотрена. Вроде была ещё и какая-то третья книга (а, может, уже и четвёрта, и пятая,..), но мне мой склероз изменяет. В общем, на Твирпиксе гляньте ключу "OpenCV" - обе названные буржуинские книги должны быть, ну всё остальное тоже найдётся. Я, правда, говорю про задачу "отделения человека в кадре от фона" путём решения задачи вычитания фона (отделения движущегося объекта от константного фона), а не просто про какой-то универсальный детектор человеков, который может тушку человека поместить в рамку, а руки оставить за границами рамки (т.е. даст просто некий обрамляющий прямоугольник без гарантии, что в него влезут все конечности в любых их положениях). Ну а глянуть можно просто на пару статей по алгоритму Codebook - именно он реализован в OpenCV для вычитания фона. http://www.umiacs.umd.edu/~knk... IP2004.pdf http://www.umiacs.umd.edu/user... lished.pdf Естественно, есть пиксельный шум по кадру, пришивка отбрасываемого объектом тени к результату,.. В общем, просто старый (да-да, для задачи вычитания фона - алгоритм 10летней давности уже является старым) классический алгоритм, который более свежим проигрывает и в скорости, и в качестве. Тем не менее, в итоге Вы примете решение - надо ли ставить задачу как задачу вычитания фона (я же не знаю, видео с какими свойствами и особенностями фона Вы будете распознавать).
1
|
2082 / 1573 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
26.04.2015, 22:32 | 7 |
0
|
0 / 0 / 3
Регистрация: 25.04.2015
Сообщений: 14
|
|
26.04.2015, 22:32 [ТС] | 8 |
Ох, не силен я в свойствах видео, могу лишь только сказать, что видео будет идти с веб камеры. Схема работы: 5 секунд идет видео поток(в это время человек в кадре должен изобразить определенный символ),остановка на 5 сек. для обработки взятого изображения, занесение распознанной буквы в textbox.(Что то в этом роде я представляю.)
Есть мысли как это можно иначе реализовать?
0
|
1605 / 1507 / 251
Регистрация: 19.02.2010
Сообщений: 4,069
|
|
29.04.2015, 22:19 | 9 |
Сообщение было отмечено Dmitrii_tsh как решение
Решение
Dmitrii_tsh, да, тогда, скорее всего, не вычитание фона (для этого надо предварительно некоторое время поснимать "пустой" фон, без человека).
Наверно, надо поглядеть в сторону распознавания жестов рук (gesture recognition) - отслеживать движущиеся части тела (тушка и голова у человека могут не двигаться) и по их взаимному расположению (и предыдущей траектории движения) принимать решение. Или распознавание поз - тоже достаточно много работ было. Хотя, если человек в итоге замирает - то можно обычным "вычитанием" двух последовательных кадров (из последующего - предыдущий) и взятием чего-то типа суммы модулей пиксельных разностей определить момент, когда движение прекращается, и тогда разность кадров перед самым завершением движения (т.е. чуть назад) даст некоторый приемлемый контур положений рук и флажков. Будет два "облака" движущихся точек (считаем, что тушка не двигается), у каждого облака можно определить направление (диагональное, горизонтальное или вертикальное), и по их взаимному расположению (в т.ч. и по расположению в кадре - есть 2 вертикальных положения рук, поднятые и "по швам") и по направлениям влёгкую принять решение о подаваемом сигнале. Может быть, такой вполне тупой и простой способ справится хорошо - надо экспериментировать.
1
|
29.04.2015, 22:19 | |
29.04.2015, 22:19 | |
Помогаю со студенческими работами здесь
9
API Яндекса распознания голоса Язык жестов Класс для распознания флагов в строке Нужна программа распознания сканируемых символов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |