2015-05-29 23 views
7

Ho una domanda riguardante i modelli a forma attiva. Sto usando la carta di T. Coots (che può essere trovata here.)Modelli a forma attiva: corrispondenza tra punti modello e punti target

Ho eseguito tutti i passaggi iniziali (analisi di Prove per calcolare la forma media, PCA per ridurre le dimensioni) ma sono bloccato sul montaggio.

Questa è la situazione in cui mi trovo ora: ho calcolato la forma significare con punti X e hanno anche calcolato un nuovo set di punti Y che X dovrebbe muoversi a, per adattarsi meglio la mia immagine.

Sto usando il seguente algoritmo, che si trova a pagina 23 del documento precedentemente collegato:


enter image description here


Per chiarire: è la forma medio calcolato con Procuste Analisi, e la è la matrice contenente gli autovettori calcolati con PCA.

Tutto va bene fino al passaggio 4. Posso calcolare i parametri di posa e invertire la trasformazione sui punti Y.

Tuttavia, nella posizione 5, accade qualcosa di strano. Qualunque siano i parametri di posa calcolati nel punto 3 e applicati nel punto 4, il punto 5 risulta quasi esattamente nello stesso vettore y ' con valori molto bassi (uno di essi è 1.17747114e-05 per esempio). (Quindi, se ho calcolato una scala di 1/10 o 1000, y ' cambia a malapena).

Ciò comporta l'algoritmo convergente sempre allo stesso valore di b, e quindi nella stessa forma uscita x, non importa quale impostare l'ingresso dei capisaldi Y sono che voglio i punti del modello X da abbinare a.

Questo sicuramente non è l'obiettivo dell'algoritmo ... Qualcuno potrebbe spiegare questo strano comportamento? In qualche modo, la proiezione del mio vettore calcolato y in passaggio 5 nel "piano tangente" non tiene conto di nessuna delle modifiche apportate in passaggio 4.


Modifica: ho qualche altro ragionamento, anche se nessuna spiegazione o soluzione. Se, in passaggio 5, i impostare manualmente y' consistere solo di zeri, poi in passaggio 6, b è uguale alla matrice di autovettori moltiplicata con la meanshape. E questo si traduce nello stesso b che ottengo sempre (dal y ' è sempre un vettore con valori molto bassi).

Ma questi autovettori sono calcolati dal metodo che utilizza PCA ... Quindi, quello che è previsto, è che nessun cambiamento dovrebbe avvenire, giusto?


risposta

0

Qualcosa si potrebbe verificare è che le coordinate sono scalati correttamente: l'algoritmo presuppone che tutte le coordinate sono scalati in modo che la forma vettoriale significare ha euclidea norma uno. Se questo non è il caso (specialmente se è molto più grande di uno, otterrai componenti estremamente piccoli per y).