8

Mam dwóch obrazów i znaleziono trzy podobne punkty 2D przy użyciu przesiać. Muszę obliczyć transformację afiniczną między obrazami. Niestety, przegapiłem wykład, a informacje tam są dla mnie trochę gęste. Jaka byłaby ogólna metoda obliczania tej matrycy 2x3?podawane trzy punkty Compute Afiniczna Transformation

mam matrycę punktów w matrycy 2x3 [x1 y1; x2 y2; x3 y3] ale jestem zgubiony stamtąd. Dzięki za pomoc.

+0

@chappjc Jeśli tylko, że była taka sama klasa xD – DeeVu

Odpowiedz

14

Zazwyczaj jest to transormation afiniczne punktów 2d experssed jak

x' = A*x 

przypadku x jest trzy wektor [x; y; 1] pierwotnego położenia 2D i x' jest transformowany punkt. Matryca affine A jest

A = [a11 a12 a13; 
    a21 a22 a23; 
     0 0 1] 

Ta forma jest przydatna, gdy x i Awiadome i chcesz odzyskać x'.

Można jednak wyrazić tę relację w inny sposób. Niech

X = [xi yi 1 0 0 0; 
     0 0 0 xi yi 1 ] 

i a jest wektorem Kolumna

a = [a11; a12; a13; a21; a22; a23] 

Następnie

X*a = [xi'; yi'] 

prawdziwe dla wszystkich par punktów odpowiadających x_i, x_i'.

Ta alternatywna forma jest bardzo przydatna, gdy wiesz, że korespondencja pomiędzy parami punktów i chcesz odzyskać paramters z A.
Układanie wszystkich punktów w dużej macierzy X (dwa rzędy dla każdego punktu) będzie mieć macierz 2 * n-by-6 X namnażana przez 6-wektor niewiadomych a jest równy wektorowi kolumn 2 * n-po-1 ułożonych odpowiednich punktów (oznaczonych x_prime):

X*a = x_prime 

rozwiązując a:

a = X \ x_prime 

odzyskuje parametry a w sensie najmniejszych kwadratów.

Powodzenia i zatrzymać pomijając klasę!

+0

Dziękujemy! Life Saver. Byłem niestety w wywiadzie. Gdyby tylko jego slajdy były równie zwięzłe jak twój wpis :) – DeeVu

+4

Świetna odpowiedź, a ty wziąłeś wysoką drogę; tylko jedna rzecz do dodania - wygodny sposób na przejście z 'x'->' X' jeśli 'x' to' N-by-2' jest z 'X = kron (oko (2), [x ones (rozmiar (x, 1), 1)]) '. Również w przypadku rozmiarów 'X' i' a', których używasz, będziesz potrzebować 'mldivide' do rozwiązania systemu (' a = X \ x_prime'), chyba że dokonasz transpozycji obu ('x_prime '/ X''). – chappjc

+1

@chappjc dzięki za te ważne komentarze. Opuszczę część "kron" - niech biedny uczeń sam wykona część swojej pracy domowej, ale poprawię "mldivide" (zawsze się z nimi pomylam ...) – Shai