[PiRO] Przetwarzanie i rozpoznawanie obrazów


OpenCV

OpenCV: http://opencv.org/
Dokumentacja: http://docs.opencv.org/

Przykładowe linki do różnych artykułów związanych z przetwarzaniem i rozpoznawaniem obrazów:

1. Zadanie domowe:

  1. Zainstalować OpenCV (najlepiej samemu skompilować)
  2. Przygotować program wykrywający twarz w obrazie (na podstawie tutoriala)
  3. Zapisać sobie 10 zdjęć swojej twarzy w ciągu kilku różnych dni. Dobrze aby sama twarz na zdjęciu miała rozmiar przynajmniej 100×100 i była wykonana na jasnym jednolitym tle. Uwaga: zdjęcia te będą wykorzystane na zajęciach przez wszystkich studentów (próba stworzenia prostego programu rozpoznającego twarz z gotowych komponentów OpenCV).

2. Zadanie domowe (rozpoznawanie twarzy)

Proszę napisać program sprawdzający dokładność rozpoznawania twarzy przez 3 różne algorytmy zaimplementowane w OpenCV

  • Zbiór twarzy jest tutaj.

    • składa się z 22 osób, każda osoba ma 10 zdjęć
    • nazwy plików wg. schematu: <nr_osoby>_<nr_zdjęcia>.png
  • Każde zdjęcie należy wczytać a następnie zmienić rozmiar (funkcja resize) do zadanej wielkości (np. 32×32, 50×50, 16×15, 100×100, itd. – można sprawdzić jak wyniki będą się zmieniały w zależności od tego rozmiaru)
  • Dostępne klasyfikatory:

    1. createEigenFaceRecognizer
    2. createFisherFaceRecognizer
    3. createLBPHFaceRecognizer
  • Należy użyć kroswalidacji. W skrócie – powtarzamy 10 razy:

    1. do zbioru testowego dajemy i-te zdjęcie każdej osoby
    2. do zbioru uczącego dajemy wszystkie pozostałe zdjęcia
    3. uczymy klasyfikator na zbiorze uczącym
    4. klasyfikujemy wszystkie zdjęcia ze zbioru testowego i obliczamy dokładność wg. wzoru: liczba_poprawnie_rozpoznanych / liczba_testowych_zdjęć
  • Obliczamy średnią dokładność licząc średnią arytmetyczną z wartości obliczonych wcześniej.

Propozycje/sugestie projektów

Uwagi:

  • Tematy należy traktować jako pewne możliwe kierunki a nie konkretną specyfikację zadania.
  • Każdy z poniższych ogólnych tematów może być realizowany przez kilka zespołów jeśli będą implementowały inną metodę/algorytm przetwarzania.
  • W przypadku zbliżonych tematycznie projektów będę zachęcał do współpracy żeby nie dublować sobie pracy, ale również po to aby pokazać pozytywne/negatywne wyniki działania przetwarzania po zintegrowaniu różnych metod, itp.
  • Do praktycznie każdej propozycji tematu można dodatkowo dołączyć jakieś praktyczne zastosowanie zaimplementowanej metody (np. na podstawie wykrytych elementów twarzy można spróbować klasyfikować wyrażane emocje, lub identyfikować osoby).
  • Różne artykuły i inne materiały o podobnej tematyce (np. z podanych linków) mają być głównie inspiracją do samodzielnego opracowania metody przetwarzania obrazów, ale można też bazować na zaproponowanych w nich algorytmach.
  • W każdym projekcie wskazane jest aby poszukać i odnieść się do jakiś artykułów związanych z danym tematem.

Proponowane tematy/zagadnienia:

  • Detekcja i rozpoznawanie znaków drogowych, np. The German Traffic Sign Detection Benchmark.
    Eichner, M. L., & Breckon, T. P. (2007). Integrated Speed Limit Detection and Recognition from Real-Time Video.
  • Wykrywanie charakterystycznych elementów jakiś obiektów, np. reflektory samochodów, okna w budynkach, itp.
  • Rozpoznawanie marki/modelu samochodu.
  • Detekcja i odczytanie tablic rejestracyjnych.
  • Wykrywanie obiektów o zmiennych kształtach, np. wykrywanie pieszych.
  • Estymacja modelu 3D twarzy z pojedynczego zdjęcia lub sekwencji zdjęć zrobionych pod różnymi kątami.
    Kemelmacher-Shlizerman, I., & Basri, R. (2011). 3D face reconstruction from a single image using a single reference face shape. IEEE Transactions on Pattern Analysis and Machine Intelligence, 33(2), 394–405. doi:10.1109/TPAMI.2010.63
    Vetter, T., & Blanz, V. (1998). Estimating coloured 3D face models from single images: An example based approach. Computer Vision—ECCV’98, II, 499–513.
  • Estymacja modelu 3D budynków (lub innego rodzaju obiektu) na podstawie zbioru zdjęć zrobionych z różnych stron.
  • Śledzenie dowolnego obiektu wskazanego przez użytkownika w sekwencji wideo, np. TLD, Structure Preserving Object Tracker.
    Przykładowe linki do zbiorów danych: BoBoT, TLD dataset, VIVID
  • Śledzenie obiektów z góry określonej klasy (np. samochody, osoby) w sekwencji wideo.
  • Wykrywanie i śledzenie wielu obiektów, np. przykładowy filmik
  • Analiza/klasyfikowanie obrazów medycznych, np. obrazów z OCT (optyczna tomografia koherencyjna), mammograficznych, itp.

  • Inne propozycje tematów z poprzednich lat można znaleźć tutaj.