odleglosc Hausdorffa

Transkrypt

odleglosc Hausdorffa
Przykłady programowania w C++ - kurs podstawowy
Odległość Hausdorffa - rozróżnianie obrazów
Mirosław Dudek dla grupy projektowej Otwartych Warsztatów Komputerowych
- propozycja projektu do realizacji
Aby napisać algorytm do rozpoznawania obrazów trzeba wprowadzić pojęcie odległości pomiędzy nimi. Odległość Hausdorffa jest jednym z bardziej znanych przykładów takiej miary. Ma
też jedną ważną zaletę - odleglość pomiędzy dwoma obrazami, nazwijmy je A i B, można podać
w postaci jednej liczby. A to już jest bardzo wygodne do różnego rodzaju programów eksperckich
bo można wprowadzić skalę podobieństwa obrazów i poukładać je w np. w rankingu relacji podobieństwa. Jeśli nasze oprogramowanie będziemy pisać dla robota to miara Hausdorffa znakomicie
ułatwi pisanie programu np. na jego reakcję na zmianę położenia elementów składowych obrazu.
Na podobnej zasadzie mogą działać bezzałogowe samoloty zwiadowcze czy też inteligentne kamery przemysłowe. Szybkość dzisiejszych komputerów pozwala śledzić mimikę indywidualnych
postaci w tłumie. W takim przypadku można przewidywać nawet działania kolektywne - spontaniczne reakcje tłumu. Badaniem zjawisk kolektywnych zajmują się fizycy i nie pierwszy to raz
kiedy modele fizyczne znajdują zastosowanie w najbardziej egzotycznych dziedzinach.
Załóżmy że mamy dwa obrazy A i B. Odległość Hausdoffa H(A, B) pomiędzy nimi definiuje
się jako maksimum z dwóch funkcji h(A,B) i h(B,A)
H(A, B) = max (h(A, B), h(B, A)),
(1)
h(A, B) = maxa∈A (minb∈B d(a, b))
(2)
gdzie
oznacza największą odległość d zbioru A do najblizszego elementu zbioru B. Odległość h(A, B)
nazywa się też odległością Hausdorffa ale zależy ona od kierunku liczenia odległości, h(A, B) 6=
h(B, A). Odległość d pomiędzy elementami a i b zbiorów A i B możemy liczyć dowolnie. Na
płaszczyźnie może to być np. zwykła odległość pitagorejska. Wtedy
d(a, b) =
q
(xa − xb )2 + (ya − yb )2 .
(3)
Istnieje wiele opracowań liczenia odległości Hausdorffa pomiędzy zbiorami. Na poczet naszych
zajęć polecam dostępne w internecie opracowanie http://cgm.cs.mcgill.ca/∼godfried/teaching/cgprojects/98/normand/main.html N. Gregoirego i M. Bouillota.
Zadanie dla grupy projektowej.
1) przy pomocy kamery internetowej zrobić fotografie swojej twarzy a nastepnie wykonać jej
mapę (zob. artykuł (dostępny internetowo): Klaus J. Kirchberg, Oliver Jesorsky, and Robert W. Frischholz, Genetic Model Optimization for Hausdorff Distance-Based Face Localization w Proc. International ECCV 2002 Workshop on Biometric Authentication, Springer, Lecture Notes in Computer Science, LNCS-2359, pp. 103–111, Copenhagen, Denmark,
June 2002.
2) napisać program przeszukujący fotografię grupy postaci pod kątem prównywania obrazu
twarzy z fragmentami fotografii,
M.R. Dudek dla < OW K/ > http://www.owk.if.uz.zgora.pl
1
Materiał dystrybuowany bezpłatnie
Przykłady programowania w C++ - kurs podstawowy
3) zbadać zależność wyników w zależności od zadanej progowej wartości odległości Hausdorffa.
M.R. Dudek dla < OW K/ > http://www.owk.if.uz.zgora.pl
2
Materiał dystrybuowany bezpłatnie