Krzysztof Krawiec


Home

Research:

edit SideBar

Strona laboratorium

Projekt 1

Celem projektu jest opracowanie metody która automatycznie:

  1. rozpozna w podanym obrazie obiekty,
  2. wyznaczy przybliżone współrzędne ich środków

Dodatkowo można pokazać poszczególne etapy przetwarzania obrazu (co najprawdopodobniej i tak będzie robione np. w celu dobrania odpowiednich wartości parametrów).

Pod tym adresem znajdują się schemat programu który można uzupełnić własnym kodem.

Przykładowe obrazy:

Cechy wykrywanych obiektów:

  • wszystkie obiekty są podobne do siebie nawzajem,
  • kształt mają raczej kulisty,
  • odróżniają się od tła, np. kolorem (w zestawie 1 dominuje czerwień)

Jak metoda przetwarzająca obraz powinna działać? Odpowiedź jest oczywista - skutecznie ;)
Podejść może być bardzo wiele, standardowo sensowne wydają się etapy takie jak:

  • Filtrowanie (np. filtr gausowski, medianowy) obrazu w celu usunięcia szumów i nieistotnych elementów.
  • Odróżnienie obiektów od tła przez np. binaryzacja/progowanie obrazu (np. progowanie po średniej jasności obrazu, na podstawie histogramu itp.), być może przez wyznaczanie konturów np. filtrem Sobela.
  • Detekcja obiektów (plam w obrazie) np. metoda wykrywania konturów - cv2.findContours, może cv2.floodFill)
  • Odfiltrowanie wykrytych obiektów które nie są poszukiwanymi obiektami (np. sprawdzając ich rozmiar, kształt, itp.)
  • Wyliczenie środka obiektów (np. wyliczając środek ciężkości używając momentów).
  • Niektóre etapy być może warto powtarzać dla różnych wartości parametrów a następnie w jakiś sposób integrować wyniki w kolejnych etapach analizy.

Przy oddawaniu ostatecznego projektu proszę zwrócić uwagę, że funkcja process przyjmuje tylko jeden argument - tablicę z analizowanym obrazem (obraz zawsze kolorowy - 3 kanały BGR) a zwraca listę współrzędnych obiektów (dowolna kolejność).

Dodatkowo w ostatecznej wersji nie powinno być żadnego kodu "testującego" który będzie uruchamiany podczas importowania pliku z programem (taki kod może być umieszczony tak jak w przykładowym pliku) ponieważ Państwa programy będą uruchamiane automatycznie.

Zaliczenie projektu

  • Projekty realizowane są w grupach dwuosobowych.
  • Czas przewidziany na ukończenie projektu: 4 tygodnie.
  • Ostateczne zaliczenie projektu po wysłaniu mailem:
    1. pliku *.py (nazwa pliku: pro1_<NR_GRUPY>.py) z zaimplementowaną metodą (na początku pliku w komentarzu muszą znaleźć się imiona i nazwiska + nr indeksów wszystkich osób w grupie)
    2. krótkiego (ok. strony) sprawozdania w formacie pdf (nazwa pliku: pro1_<NR_GRUPY>.pdf); sprawozdanie będzie musiało zawierać opis działania ostatecznej metody (poszczególne etapy przetwarzania obrazu, ich cel/zadanie), dodatkowo: co sprawia danej metodzie problemy (z jakim typem obrazów opracowana metoda nie działa tak dobrze jak by się chciało), z czym sobie świetnie radzi, jak ewoluowało rozwiązanie i co było powodem wprowadzanych zmian itp.
  • Kryteria oceny:
    • jakość ostatecznych wyników (głównie poprawność zidentyfikowanych obiektów),
    • opis metody oraz jej unikalność,
    • czas dostarczenia maila z projektem.

Wyniki

(jeszcze niekompletne!)


ZESPÓŁ zestaw           TP  FP  FN  czas[s]

1      pro1_set1        18   1   1  11.0985
       pro1_set4       180   0   0  16.3242
       pro1_testset1    18  39  22  34.0463
       pro1_testset2    88   8   2   8.1481
                 RAZEM 304  48  25  69.6170

3      pro1_set1        19   0   0 213.9318
       pro1_set4       180   0   0 134.5104
       pro1_testset1    16  20  24 451.1550
       pro1_testset2    90   0   0  67.8004
                 RAZEM 305  20  24 867.3977

4      pro1_set1        14   0   5  11.6961
       pro1_set4        84   0  96  21.3090
       pro1_testset1    17   7  23  33.5729
       pro1_testset2    41   0  49   9.6978
                 RAZEM 156   7 173  76.2759
       !LICZBA BŁĘDÓW!  35

(wersja tylko z usuniętm "błędem" wykonania)
4v1    pro1_set1        19   0   0  24.3154
       pro1_set4       178   1   2  53.0667
       pro1_testset1    38   9   2  47.0789
       pro1_testset2    90   0   0  26.5930
                 RAZEM 325  10   4 151.0540

(wersja ze wszystkimi poprawkami)
4v2    pro1_set1        19   0   0  24.0311
       pro1_set4       180   0   0  50.2712
       pro1_testset1    38   9   2  46.0073
       pro1_testset2    90   0   0  25.1115
                 RAZEM 327   9   2 145.4211

5      pro1_set1        17   0   2   0.1540
       pro1_set4       133  19  47   0.4436
       pro1_testset1    33   5   7   0.2798
       pro1_testset2    75   5  15   0.2180
                 RAZEM 258  29  71   1.0954

(wersja z poprawkami)
5v2    pro1_set1        17   4   2   0.1563
       pro1_set4       180   0   0   0.4357
       pro1_testset1    34   8   6   0.2831
       pro1_testset2    90   0   0   0.2169
                 RAZEM 321  12   8   1.0921

6      pro1_set1        18   0   1   0.1903
       pro1_set4       178   1   2   0.3525
       pro1_testset1    32   2   8   0.3610
       pro1_testset2    90   0   0   0.1765
                 RAZEM 318   3  11   1.0803

  • TP (true positive) - liczba poprawnie wskazanych obiektów
  • FP (false positive) - liczba niepoprawnych wskazań (nie w środek obiektu lub kilkukrotnie w ten sam obiekt)
  • FN (false negative) - liczba niewskazanych obiektów
  • TP + FN = całkowita liczba obiektów do wskazania


Powered by PmWiki