Wykrywanie twarzy na zdjęciach przy pomocy kaskad



Podobne dokumenty
Implementacja filtru Canny ego

i ruchów użytkownika komputera za i pozycjonujący oczy cyberagenta internetowego na oczach i akcjach użytkownika Promotor: dr Adrian Horzyk

Akademia Górniczo - Hutnicza im. Stanisława Staszica w Krakowie. Projekt. z przedmiotu Analiza i Przetwarzanie Obrazów

Analiza i przetwarzanie obrazo w

Wtyczka Crop3D. Wstęp. Implementacja. Sprawozdanie z realizacji projektu Bartłomiej Trzewiczek Kraków,

Analiza i przetwarzanie obrazów

Rozpoznawanie obrazów na przykładzie rozpoznawania twarzy

REFERAT PRACY DYPLOMOWEJ

WYDZIAŁ FIZYKI I INFORMATYKI STOSOWANEJ

1. Pobieranie i instalacja FotoSendera

Uwaga! Upadek! Opis zadania konkursowego

Tomography Tracking Instrukcja użytkownika

Zastosowanie Informatyki w Medycynie

Ćwiczenie 6. Transformacje skali szarości obrazów

Analiza i przetwarzanie obrazów

INSTRUKCJA PRZYGOTOWANIA ZDJĘĆ DO

Fotografia cyfrowa obsługa programu GIMP

Maciej Oleksy Zenon Matuszyk

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

System wspomagania harmonogramowania przedsięwzięć budowlanych

Metody systemowe i decyzyjne w informatyce

Automatyczna klasyfikacja zespołów QRS

Instrukcja obsługi programu FotoSender

Okno logowania. Okno aplikacji. 1. Logowanie i rejestracja

rozpoznawania odcisków palców

Politechnika Świętokrzyska. Laboratorium. Cyfrowe przetwarzanie sygnałów. Ćwiczenie 8. Filtracja uśredniająca i statystyczna.

Import dokumentów z plików XML część II

Aby pobrać program FotoSender naleŝy na stronę lub i kliknąć na link Program do wysyłki zdjęć Internetem.

Metody eksploracji danych w odkrywaniu wiedzy (MED) projekt, dokumentacja końcowa

Tom 6 Opis oprogramowania

Zmiana kolorowego obrazu na czarno biały

Tom 6 Opis oprogramowania Część 8 Narzędzie do kontroli danych elementarnych, danych wynikowych oraz kontroli obmiaru do celów fakturowania

Wybrane zmiany wprowadzone w pakiecie Oprogramowanie: SyriuszStd

Analiza i Przetwarzanie Obrazów. Szyfrowanie Obrazów. Autor : Mateusz Nawrot

Klasyfikacja publikacji biomedycznych w konkursie JRS 2012 Data Mining Competition - Szkic koncepcji

Ćwiczenie 12 Różdżka, szybkie zaznaczanie i zakres koloru

P R Z E T W A R Z A N I E S Y G N A Ł Ó W B I O M E T R Y C Z N Y C H

Jak zamówić zdjęcia przez FotoSender?

Zadanie 3: Liczenie winogron

Algorytmy decyzyjne będące alternatywą dla sieci neuronowych

AUTOMATYCZNE ROZPOZNAWANIE PUNKTÓW KONTROLNYCH GŁOWY SŁUŻĄCYCH DO 3D MODELOWANIA JEJ ANATOMII I DYNAMIKI

Zacznijmy więc pracę z repozytorium. Pierwsza konieczna rzecz do rozpoczęcia pracy z repozytorium, to zalogowanie się w serwisie:

METODY INŻYNIERII WIEDZY ASOCJACYJNA REPREZENTACJA POWIĄZANYCH TABEL I WNIOSKOWANIE IGOR CZAJKOWSKI

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno

Rozwiązanie Compuware dynatrace

Ćwiczenia GIMP. S t r o n a Uruchom program gimp: 2. I program się uruchomił:

- 1 Laboratorium fotografii cyfrowej Foto Video Hennig

Instrukcja Użytkownika (Nauczyciel Akademicki) Akademickiego Systemu Archiwizacji Prac

Przetwarzanie obrazów wykład 4

INSTRUKCJA PRZYGOTOWANIA PLIKÓW POD LAKIER CLEAR TONER DLA MASZYNY XEROX COLOUR 1000

Konwerter Plan testów. Jakub Rauch Tomasz Gołębiowski Adam Busch Bartosz Franaszek 1 czerwca 2008

Korzystanie z efektów soczewek

ALGORYTMY PRZETWARZANIA OBRAZÓW Projekt. Aplikacja przetwarzająca obrazy z możliwością eksportu i importu do programu MS Excel.

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI

Tworzenie kopii zapasowych i archiwalnych

CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu

Segmentacja obrazów cyfrowych z zastosowaniem teorii grafów - wstęp. autor: Łukasz Chlebda

Kopiowanie. Szybkie kopiowanie. Kopiowanie przy użyciu podajnika ADF. Kopiowanie przy użyciu szyby skanera. Kopiowanie

WSTAWIANIE GRAFIKI DO DOKUMENTU TEKSTOWEGO

Rozpoznawanie obrazów

Spis treści. Rejestracja - zakładanie konta kandydata 2. Wprowadzanie danych osobowych kandydata 3. Zamieszczanie zdjęcia 5. Ustawienia hasła 6

Jak pobrad mapę z PK? Na stronie Pucharu Warszawy i Mazowsza w RJnO 2019 należy odszukad interesujący nas etap:

Raport Hurtownie Danych

Opis modułu pl.id w programie Komornik SQL-VAT

JAK ZAMÓWIĆ ZDJĘCIA PRZEZ PROGRAM FOTOSENDER? 1. POBIERANIE I INSTALACJA PROGRAMU FOTOSENDER

KARTA INFORMACYJNA Z INFORMATYKI DO KLASY 4. Imię i nazwisko ucznia:

Pierwsze kroki z portalem CEGIO.

Pracownia Astronomiczna. Zapisywanie wyników pomiarów i niepewności Cyfry znaczące i zaokrąglanie Przenoszenie błędu

Grafika komputerowa. Dla DSI II

Widoki zagnieżdżone, layout. 1. Wprowadzenie Repozytoria danych

Szacowanie wartości monet na obrazach.

Wymagania edukacyjne na ocenę z informatyki klasa 3

Easi-View Udostępniaj rezultaty swojej pracy całej grupie, przeglądaj obiekty trójwymiarowe, fotografuj i nagrywaj wideo

Instrukcja użytkownika WYKŁADOWCY AKADEMICKIEGO SYSTEMU ARCHIWIZACJI PRAC

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

Pokaz slajdów na stronie internetowej

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Detekcja twarzy w obrazie

Zastosowanie stereowizji do śledzenia trajektorii obiektów w przestrzeni 3D

TTS Jesteśmy dumni z bycia częścią

Przygotowanie materiału uczącego dla OCR w oparciu o aplikację Wycinanki.

Opis modułu pl.id w programie Komornik SQL-VAT

Krzysztof Leszczyński Adam Sosnowski Michał Winiarski. Projekt UCYF

Tworzenie prezentacji w MS PowerPoint

Jeśli chcemy usunąć ze zdjęć niewielkie obszary 'brudów' powstałych w wyniku np. zanieczyszczeń obiektywu lub matrycy.

Instrukcja użytkownika NAUCZYCIELA AKADEMICKIEGO SYSTEMU ARCHIWIZACJI PRAC

PLATFORMA DO PRZETWARZANIA ZDJĘĆ TOMOGRAFII KOMPUTEROWEJ MÓZGU ORAZ ZDJĘĆ MAMMOGRAFICZNYCH WSPOMAGAJĄCA DIAGNOZOWANIE CHORÓB

Zaawansowane aplikacje WWW - laboratorium

Symfonia Mała Księgowość 2013 Specyfikacja zmian

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Wzorce projektowe. dr inż. Marcin Pietroo

WYMAGANIA EDUKACYJNE Z PRZEDMIOTU ZAJĘCIA KOMPUTEROWE KLASA V. Wymagania podstawowe (dostateczna) Uczeń:

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.

Instrukcja obsługi aplikacji PQ-CONTROL

Instrukcja Użytkownika Nauczyciel Akademicki Akademickiego Systemu Archiwizacji Prac w Uniwersytecie Papieskim Jana Pawła II w Krakowie

Procesy ETL. 10maja2009. Paweł Szołtysek

VinCent Administrator

System Kontroli Bazy Danych Topograficznych (SKBDT) zawód kartografa?

Transkrypt:

Wykrywanie twarzy na zdjęciach przy pomocy kaskad Analiza i przetwarzanie obrazów Sebastian Lipnicki Informatyka Stosowana,WFIIS

Spis treści 1. Wstęp... 3 2. Struktura i funkcjonalnośd... 4 3. Wyniki... 6 4. Podsumowanie... 11 2

1. Wstęp Zadaniem projektu było stworzenie aplikacji która pozwala wykryd twarz na zdjęciach. Aplikacja została napisana w języku Java oraz wykorzystuje już istniejące kaskady stworzone dla biblioteki opencv która jest napisana w języku C++. Program przetwarza wspomniane kaskady zapisane w plikach XML w celu pobrania istotnych danych (cech twarzy), a następnie wykorzystuje je w analizie zdjęcia pobranego na wejściu a następnie wykrywa miejsca w których znajduje się twarz. Kaskady zawarte w plikach XML zostały stworzone przez projekt opencv na podstawie wielu danych testowych (twarzy). Każda testowa twarz została przeanalizowana w celu wyciągnięcia ciemniejszych i jaśniejszych miejsc. Wartości jasności tych obszarów (progi kolorów szarości dla których obszar spełnia wymagania) jak i same obszary zostały zapisane w tym pliku XML. Na podstawie wielu takich próbek testowych, kaskada potrafi dokładnie wydedukowad jak powinna wyglądad twarzy, tj. posiada informacje jakie obszary względem jakich są jaśniejsze lub ciemniejsze oraz zna progi koloru jakie powinny spełniad te obszary aby można było nazwad je twarzą. Taka kaskadę zastosowano do implementacji tego projektu. Szczegóły tej implementacji kaskad można znaleźd na stronie: http://docs.opencv.org/master/d7/d8b/tutorial_py_face_detection.html 3

2. Struktura i funkcjonalność Program został podzielony na 2 główne moduły: HaarFaceDetector klasa zajmująca się parsowaniem pliku XML w celu mapowania pliku XML zawierającego dane na temat twarzy do pamięci aplikacji. Wykorzystuje zewnętrzną bibliotekę jdom w celu poruszania się po pliku XML. W momencie tworzenia otrzymuje jako parametr nazwę do pliku XML który w momencie konstrukcji parsuje. FaceDetector klasa dziedzicząca po klasie HaarFaceDetector. Zajmuje się obróbką zdjęcia, tj. zaznaczeniem zielonych prostokątów na zdjęciu w których się znajdują twarze. Dodatkowo zostały dodane 4 klasy modelowe które przetrzymują cała strukturę i dane z kaskady pliku XML: FeatureTester jeden test na rozpoznanie twarzy z pliku XML Segment klasa przechowująca wierzchołki prostokąta (fragmentu twarzy) któremu dany test odpowiada FeatureContainer pojemnik na testy Node pojedyncza testowana cecha która składa się z progu oraz kilku segmentów których dotyczy Została stworzona również klasa Main jako inicjator aplikacji. Ścieżkę do zdjęcia wejściowego można wysład przy pomocy parametru wywołania programu. Struktura pliku XML (kaskady) wygląda następująco: SizeX SizeY (najmniejsza ilośd pikseli która trzeba analizowad dla tej kaskady) FeatureTests*+ (zbiór testów) o FeatureTest (jeden z testów) Features[] (zbior cech) Feature. o FeatureTest Feature (pojedyncza cecha) o Segment*+ (zbiór prostokątów) o Treshold 4

Każda z cech z całego pliku XML musi przejśd test poprawnie aby twarz została wykryta. Jeżeli dany fragment zdjęcia zostaje poddane analizie, to dla każdego testera cech (FeatureTester) zostaje sprawdzona każda cecha na tym obszarze. Jeżeli dany fragment zdjęcia przejdzie poprawnie wszystkie testy, ten fragment zostaje obramowany zielona ramką na głównym zdjęciu (wykryto twarz). Sprawdzenie danej cechy jest robione na zasadzie pobraniu części analizowanego fragmentu zdjęcia, którego wielkośd wyznacza wartości Segmentu tej cechy (cecha posiada kilka segmentów których dotyczy) a następnie wyznaczenie średniej wartości kolor szarości na tym obszarze. Jeżeli ta średnia wartośd jest powyżej wartości Treshold (cecha posiada wartośd Treshold która wyznacza próg powyżej jakiego obszar jest definiowany jako pozytywny), to ten segment jest oznaczony jako pozytywny. Wszystkie segmenty muszą byd pozytywne aby test dla tej cechy był pozytywny. Natomiast wszystkie testy posiadające cechy muszą byd pozytywne, aby założyd, że na tym obszarze znajduje się twarz. Aby aplikacja analizowała poprawnie duże i małe obrazy został zaimplementowany specjalny mechanizm do wyznaczania wielkości analizowanych fragmentów obrazu. Na początku obraz zostaje podzielony na małe prostokąty o najmniejszym możliwym do przeanalizowania obszarze które wyznacza kaskada (w pierwszym wierszu jako sizex i sizey). Każdy taki obszar jest poddawany testom w celu wykrycia twarzy. Dzięki temu nawet na bardzo dużym obrazku na którym znajduje się wiele małych twarzy, zostanie wykryta twarz gdyż bardzo małe obszary są analizowane. Następnie taki obszar zostaje powiększony o 10% poprzednio analizowanego obszaru oraz zostaje ponownie poddany analizie twarzy. Twarze wykryte w każdym etapie działania aplikacji zostają automatycznie nałożone na kopie oryginalnego obrazu. Obszar jest powiększany aż do osiągnięcia maksymalnej wielkości badanego obszaru, tak, że większy obszar wykroczyłby poza rozmiary zdjęcia. Obszar jest zwiększany multiplikatywnie, a nie addytywnie, w celu osiągnięciu lepszego czasu wykonania programu przy znikomej utracie jakości wykrywania twarzy. Przy wielokrotnej analizie jednego zdjęcia jest możliwośd, że dana twarz zostanie wykryta kilka razy (w różnych etapach). Aby zapobiec temu, został zaimplementowany system który usuwa zaznaczone prostokąty które są zbyt 5

blisko siebie, oraz zostawia najmniejszy z tych wszystkich. Dzięki temu otrzymamy tylko najbardziej dopasowany prostokąt zawierający daną twarzy. Prostokąty mogą na siebie nachodzid (w przypadku gdy dwie twarze są rzeczywiście blisko siebie) jednakże ich wspólna powierzchnia nie może byd większością jednego ze zdjęd. Dzięki temu otrzymujemy jeden prostokąt dla jednej twarzy. 3. Wyniki Przykładowe wyniki dla pojedynczych twarzy Czas szukania twarzy: 28,960 sekund (w C++ 3,12s) Czas szukania twarzy: 26,599 sekund (w C++ 2,32s) 6

Czas szukania twarzy: 14,601 sekund (w C++ 1,93s) Czas szukania twarzy: 25,480 sekund (w C++ 2,48s) 7

Przykładowe wyniki dla wielu twarzy Czas szukania twarzy: 22,928 sekund (w C++ 3,81s) Czas szukania twarzy: 30,104 sekund (w C++ 4,14s) 8

Czas szukania twarzy: 20,395 sekund (w C++ 3,54s) Czas szukania twarzy: 11,441 sekund (w C++ 0.89s) Czas szukania twarzy: 60,956 sekund (w C++ 8,31s) 9

Czas szukania twarzy: 51,066 sekund (w C++ 5,76s) Czas szukania twarzy: 24,123 sekund (w C++ 4,03s) Jak widad z otrzymanych wyników, czas wyszukiwania twarzy tym samym algorytmem napisanym w języku C++ i Java dają różne czasy wyszukiwania twarzy. Algorytm działa znacznie szybciej w języku C++. Czas trwania jest również w dużym stopniu zależny od wielkości obrazka. Widad również, że aplikacja ma problem z ludźmi o ciemniejszej karnacji skóry. 10

4. Podsumowanie Jak widad z otrzymanych wyników aplikacja poprawnie wykrywa twarze na zdjęciach. Dzięki zastosowaniu odpowiedniej metody do fragmentacji zdjęcia otrzymujemy aplikacje która wykrywa twarze w dośd krótkim czasie. Ten czas zależy w dużym stopniu od wielkości zdjęcia jednakże nawet dla dużych zdjęd nie trzeba długo czekad aby wykryd twarz. Dzięki systemowi do zapobiegania kilkukrotnemu wykrywaniu tych samych twarzy, nigdy nie ma sytuacji w której jedna twarz zostaje zaznaczona wiele razy oraz zawsze zaznaczony prostokąt jest jak najbardziej przylegający do twarzy. Niektóre twarze nie zostają rozpoznane ze względu na różne atrybuty które posiadają (okulary, nakrycia głowy), mimikę twarzy która za bardzo zmienia całkowity wizerunek twarzy oraz zbyt mocny makijaż (zmiana koloru skóry). Jednakże dla większości zdjęd aplikacja działa poprawnie oraz dobrze znajduje twarze na zdjęciu. Aplikacja również wykrywa twarze gdy zdjęcie jest rozmyte. 11