Znajdowanie wzorca na obrazie

Transkrypt

Znajdowanie wzorca na obrazie
Znajdowanie wzorca na obrazie
Grzegorz Szuba
([email protected])
informatyka IV rok
Metody Rozpoznawania Obrazów
2005/2006
Treść zadania:
Celem zadania jest stworzenie programu znajdującego na danym obrazie konkretny detal. W
moim rozwiązaniu zdecydowałem się na znajdowanie konkretnej litery na obrazie składającym się z
wielu liter.
Kod programu:
%wyświetla cały rysunek
A=imread('calosc.gif');
figure, imshow(A);
%wyświetla poszukiwany detal
B=imread('literaO.gif');
figure, imshow(B);
%znalezienie miejsca wystąpienia wzorca
C=(fft2(A).*fft2(rot90(B,2),256,256));
C=ifft2(C);
%dobranie wartości progowej (eksperymentalnie)
a=max(C(:));
%C=C/(a/1);
a=a*0.75;
%G=C/a;
%figure, imshow(G);
%wyświetlenie wyniku
figure, imshow(C>=a);
%wyświetlenie wyniku nałożonego na pierwotny obraz w celu lepszej
%wizualizacji
D= C>=a;
E=uint8(D)*1000 + A/2;
figure, imshow(E);
Rysunki wykorzystywane w programie:
a) Główny obraz, na którym wyszukiwaliśmy wzorce
c) wzorzec litery X
b) wzorzec litery O
d) wzorzec cyfry 1
Przykładowe wyniki:
Większość wyników była niezbyt ciekawa – wzorce były znajdowane bez najmniejszych
kłopotów, miejsce wystąpienia było wskazywane pojedynczą białą kropką na czarnym obrazie
(obrazy wynikowe są obrazami typu logicznego – biały kolor oznacza, że dany piksel spełnia
warunek, czarny, że nie spełnia).
Skupię się na nietypowych wynikach i próbach ich uzasadnienia:
1. Wyszukiwanie wzorca litery O, próg maksymalny (tzn. równy wartości maksymalnej na obrazie)
Wynik: (po lewej czysty wynik, po prawej nałożony na wejściowy obraz)
Dyskusja:
Jak widać, oprócz litery 'O' została także zaznaczona litera 'Q' na takim samym poziomie
istotności. Może być to spowodowane tym, że różnią się od siebie tylko tym, że litera 'Q' ma
"ogonek". Transformata "zauważyła" kształt litery 'O' a nie uwzględniła, że coś jest do litery
"doklejone".
2. Wyszukiwanie wzorca litery O, próg 75% wartości maksymalnej
Wynik:
Dyskusja:
Jak widzimy, obniżenie progu spowodowało, że oprócz liter 'O' i 'Q' znalezione (choć po
wielkości plamki widać, że z mniejszą pewnością) zostały także inne litery o podobnym kształcie –
'G' i 'D'. Co dziwne, litera 'C' nie została znaleziona, nawet obniżanie progu nie pomogło, zaczęły
się pojawiać inne znaki, np. złączenie liter 'XK'. Myślę, że jest to spowodowane tym, że w literze
'C' występuje duży odstęp. Lepiej dopasowywane są znaki, które mimo że słabiej dopasowywane,
są rozłożone bardziej równomiernie.
Na tym przykładzie widać, że użyta metoda nadaje się głównie w przypadku znajdowania
wzorców, które występują dokładnie w tym samym kształcie na obrazie. Jak widzimy, litera 'o' ani
cyfra '0' nie zostały znalezione, mimo że obie są prawie tego samego kształtu skąd wnioskujemy, że
w tej metodzie jednym z decydujących czynników jest rozmiar litery.
2. Wyszukiwanie wzorca litery X, próg 60% wartości maksymalnej
Wynik:
Dyskusja:
Jak zauważamy, oprócz litery 'X' zostały znalezione litery 'K' a także połączenia liter (pół
jednej litery i pół drugiej) 'IQ', 'DS' i 'OD'. Jest to spowodowane tym, że złączenie tych liter
powoduje powstanie kształtu, w którym można wyróżnić dwie skośne linie, podobne do litery 'X'.
Pamiętajmy, próg wynosi zaledwie 60%, podobieństwo nie musi być idealne.
Drugą ciekawą rzeczą jest plamka przy literze 'K' - jest większa niż plamka przy literze 'X'.
Po dokładniejszym zbadaniu okazało się, że jest to spowodowane tym, że prezentowany wynik jest
wynikiem binarnym. Ilość pikseli wprawdzie jest większa, ale ich wartości są mniejsze - plamka
uległa rozmyciu.
2. Wyszukiwanie wzorca cyfry 1, próg 75% wartości maksymalnej
Wynik:
W tym przypadku, zgodnie z przewidywaniem, oprócz cyfry '1' zostały znalezione też
wszystkie znaki, które zawierają pionową belkę: 'B', 'K', 'H' (obie belki), 'L', 'I', 'D' i 'j'.

Podobne dokumenty