Metoda korelacji fazowej

 

Wprowadzenie

W metodzie korelacji maksymalizuje się korelację pomiędzy dwiema klatkami w chwili t i t+Dt:

Stosując dwuwymiarowe przekształcenie Fouriera (FFT2) otrzymuje się zależność częstotliwościową:

gdzie * oznacza wartość zespoloną sprzężoną.

Znormalizowana korelacja w dziedzinie częstotliwości ma następującą postać:

Zakładając, że kolejna klatka w sekwencji jest przesuniętą wersją poprzedniej (warunek zachowania jasności dla ruchu globalnego, cyklicznego z przesunięciem o wektor (dm, dn)), można przedstawić zależność w dziedzinie częstotliwości pomiędzy kolejnymi klatkami:

Podstawiając powyższą zależność do równania na znormalizowaną korelację otrzymujemy:

Obliczając odwrotne przekształcenie Fouriera otrzymujemy:

gdzie d(x, y) oznacza dwuwymiarową dyskretną deltę Diraca:

Maksimum na powierzchni korelacji fazowej wyznacza wartości przesunięcia pomiędzy klatkami. Należy zwrócić uwagę na to, iż powyższa metoda jest w stanie estymować ruch, gdy jest on cykliczny.

 

 


 


Opis działania programu

 

Program uruchamia się poleceniem main po wcześniejszym przejściu do katalogu w którym znajdują się pliki programu.

 

 

Główna część programu składa się z 4 bloków.

 

Dwa pierwsze są oznaczone odpowiednio jako krok1 i krok2.

W pierwszym bloku istnieje możliwość wyboru odpowiedniej animacji, która po dokonaniu wyboru zostanie pokazana na ekranie. Po wybraniu odpowiedniej animacji możemy już wykonać estymację ruchu wybierając przycisk „Dokonaj estymacji” z bloku drugiego. Podczas jej wykonywania możemy na bieżąco śledzić postęp pracy na pasku, który pokaże się poniżej. Po pomyślnie skończonym procesie estymacji na ekranie pojawi się mapa przesunięć ruchu globalnego.

 

Po wykonaniu powyższych czynności możemy przystąpić do wykonywania operacji odejmowania klatek znajdującej się w bloku oznaczonym numerem 3. Należy tu zwrócić uwagę iż z bloku tego skorzystać możemy po pomyślnie skończonych czynnościach z bloku 1 i 2, gdyż wymagane są tutaj informacje uzyskiwane poprzez czynności z poprzednich etapów pracy.

 

W tym etapie oblicza się różnicę pomiędzy dwiema kolejnymi klatkami t1 i t2, a także różnicę pomiędzy klatką t2 i klatką estymowaną. Różnice te przedstawione są następnie w postaci obrazów różnicowych. Chcąc np. znaleźć różnicę pomiędzy klatką 5 i 6 w pole tekstowe należy wpisać 5.

   Z bloku oznaczonego jako „Korelacja obrazów” skorzystać można dopiero po wykonaniu czynności z bloku 1. Można tutaj dokonać korelacji dwóch dowolnych klatek z danej animacji. Chcąc np. znaleźć korelację pomiędzy klatką 2 i 10 w pole nr 1 należy wpisać 1, a w pole nr 2 odpowiednio 10.

Jeśli chcemy uzyskać przesunięcia x i y w pikselach pomiędzy kolejnymi klatkami, należy wpisać z wiersza poleceń programu Matlaba dxx oraz dyy (po wcześniejszym wykonaniu operacji z bloku 1 i 2).

Program napisany w Matlabie estymuje tylko ruch globalny.

 

Ćwiczenia

Symulacje związane z ćwiczeniem są przeznaczone dla pakietu Matlab. Właściwe pliki znajdują się w katalogu D:\Estymacja\PhaseCorrelation.

 

Przetestować metodę dla różnych rodzajów sekwencji (zarówno generowanych Wielokąt, Wielokąt zaszumiony, Wielokąt i okrąg, jak i rzeczywistych Ruch Kamery, Światła). Prześledzić jak zmienia się przesunięta różnica klatek oraz wykresy korelacji dla różnych sekwencji.

 

Literatura

[1]   Y. M. Erkam, M. I. Sezan, A. T. Erdem. A Hierarchical Phase Correlation Method for Motion Estimation. W Proc. Conference on Information Sciences and Systems, 419-424, Maltimore, MD (USA), Marzec 1993.

[2]   G. A. Thomas. Television Motion Measurement for DATV and Other Applications. Raport Techniczny BBC RD 1987/11, BBC Research Department, 1987.

 

Ćwiczenie opracowano z wykorzystaniem oprogramowania i materiałów przygotowanych przez studentów Wydziału Elektrycznego EmilaGrochockiego i ZbigniewaRydla.