Как я могу обнаружить зевоту с помощью Open CV
Я разрабатываю приложение для iOS, которое должно обнаруживать, когда пользователь зевает.
Что я сделал, это включить Open CV и найти лица, используя каскад Хаара, а затем найти рот внутри лиц (тоже используя haarcascade).
проблема в том, что я верил, что будет так легко обнаружить зевок, как будто я делаю что-то вроде (лица.в-рот.y)
но проблема в том, что у меня есть ректы для лица и рта "inestables", я имею в виду каждый раз, когда цикл запускает значения X и Y для прямых линий лица и рта (очевидно) не одинаковы.
есть ли "открытый рот" Haar cascade, который я могу использовать, или как я могу знать, когда пользователь открывает рот?
2 ответов
как общее, машина вектора поддержки (SVM) использована для лицевого опознавания выражения как гнев,улыбка, удивление etc где все еще активное развитие случается. Googling дает вам много работ по этой теме (даже один из моих одноклассников сделал это в качестве своего последнего проекта года). Для этого сначала вам нужно обучить SVM, и для этого вам нужны образцы изображений зевающих и нормальных лиц.
зевота почти похожа на удивление, когда рот открыт в обоих случаях. Я рекомендую вы, чтобы проверить страницу 3 ниже бумаги:распознавание выражения лица в реальном времени в видео использование векторных машин поддержки (если вы не можете получить доступ к ссылке, google по имени бумаги)
бумага (даже мой одноклассник) используется вектор смещения черт лица. Для этого вы найдете некоторые характерные точки на лице. Например, в статье они использовали зрачок глаза, крайние точки век, кончик носа, крайние точки области рта (губы) etc. Затем они непрерывно отслеживают местоположение объектов и находят евклидово расстояние между ними. Они используются для обучения SVM.
Проверьте ниже двух документов:
функция извлечения точек из граней
посмотрите изображение ниже, что я имею в виду под точками объектов на лице:
In вашем случае, Я думаю, вы реализуете его в iPhone в режиме реального времени. Так что, возможно, вы можете избежать точек на глазах (хотя это не очень хорошая идея, так как, когда вы зеваете, глаза становятся маленькими). Но по сравнению с ним характерные точки на губах проявляют больше вариаций и преобладают. Таким образом, реализация только на lip может сэкономить время. (Ну, все зависит от вас).
Сегментация Губ : это уже обсуждалось в SOF и проверить этот вопрос : В Формате OpenCV Губы Сегментация
и, наконец, я уверен, что вы можете найти много деталей о googling, потому что это активная область разработки, и там много документов.
Другой Вариант :
другой вариант в этом регионе, который я слышал несколько раз, - это Active Appearance Model
. Но я ничего об этом не знаю. Google это самостоятельно.
OpenCV также имеет возможности распознавания / обнаружения лиц (см. примеры, которые поставляются с OpenCV SDK). Я думаю, что это было бы лучшее место для поиска, так как Хаар каскад на самом деле не анализирует выражения лица так, как вам нужно. Попробуйте запустить примеры и убедитесь сами - вы получите данные в реальном времени об обнаруженных глазах / рте и так далее.
удачи