5

Projekt: Wykrywanie twarzywykrywanie twarzy i przycinanie

Opis: Chcę wykryć i przyciąć twarzy w obrazie. Obraz jest przechwytywany przez kamerę internetową i tylko jedna twarz na obraz. Używałem detektora twarzy OpenCV, ale nie byłem zadowolony z przycinania. Zacząłem więc używać detektora twarzy STASM (http://www.milbo.users.sonic.net/stasm/), aby przyciąć obraz.STASM wykorzystuje detektor twarzy OpenCV do znajdowania twarzy na obrazie, a STASM lokalizuje punkty orientacyjne na twarzach. W złych warunkach oświetleniowych kadrowany obraz STASM nie jest dobry, ponieważ nie wykrywa dokładnie samej twarzy.

1) Chcę poznać lepszy algorytm wykrywania twarzy. Moim głównym celem jest przycięcie twarzy z obrazu.

2) obecnie używam STASM do kadrowania. W złych warunkach oświetleniowych lub gdy w obrazie nie ma uchwyconej całości lub całej twarzy (czoło do brody), przycinanie STASM nie jest niezawodne (na wyjściu będzie tylko oko lub usta). I w mojej aplikacji, jeśli nie ma właściwego wyjścia ze stazy lub jeśli twarz nie jest przycięta prpoerly wtedy powinienem odrzucić obrazy. Jak to zrobić? Tak więc planuję zatwierdzić twarz na obrazku, znajdując Oczy. Jeśli mam rację w moim podejściu, jak wykryć oczy z obciętego obrazu?

+0

jaki jest twój cel po przycięciu twarzy? Aby utworzyć zestaw treningowy? Lub wykonać rozpoznawanie twarzy? –

+0

Po kadrowaniu używam go do stworzenia dobrego zestawu treningowego do rozpoznawania twarzy. Dziękuję za odpowiedź ... – 2vision2

Odpowiedz

1

Spróbuj użyć wykrywacza oczu z OpenCV. I dopasuj twarz do twarzy na podstawie pozycji oczu.

3

Mam całkiem dobre wyniki w jednym z moich projektów, wykrywając oczy w twarz za pomocą zagnieżdżonego klasyfikatora kaskadowego, tak jak to jest w dostarczonym przykładzie. Ale potem używam dodatkowej sztuczki: obniżam parametr minNeighbors nestedCascade.detectMultiScale() do 0.

To oznacza, że ​​otrzymujesz wiele wyników. Jedno oko rozpoznaje się czasami. Następnie sprawdzam, gdzie zbierają się wyniki po lewej i prawej stronie twarzy. Punkty skupienia to rzeczywiste pozycje oczu.

Następnie obracam początkowy obraz. Centrum obrotu jest środkiem twarzy, którą znalazłem, a kąt obrotu jest aniołem między wykrytymi oczami. Następnie wykonuję kolejne wykrywanie twarzy na obróconym obrazie i upewniam się, że używam do tego bardzo niskiego współczynnika skali w parametrach nestedCascade.detectMultiScale().

Rezultatem jest w większości przypadków doskonale znormalizowany obraz twarzy. Oczywiście sukces nadal zależy od tego, jak złe są twoje błyskawiczne warunki.

Powiązane problemy