2010-12-12 16 views
6

Attualmente sto utilizzando il seguente pseudo codice per implementare l'algoritmo ICP in C#. Ottenuto da ICP PowerpointImplementazione punto più vicino iterativo

function ICP(Scene,Model) 
begin 
    E` = + ∞; 
    (Rot,Trans) = In Initialize-Alignment(Scene,Model); 
    repeat 
E = E`; 
Aligned-Scene = Apply-Alignment(Scene,Rot,Trans); 
Pairs = Return-Closest-Pairs(Aligned-Scene,Model); 
(Rot,Trans,E`) = Update-Alignment(Scene,Model,Pairs,Rot,Trans); 
    Until |E`- E| < Threshold 
    return (Rot,Trans); 
end  

Comunque io non sono del tutto sicuro di come l'allineamento di aggiornamento dovrebbe essere attuata? Se qualcuno potesse spiegarlo un po 'più chiaro del powerpoint sarebbe fantastico :) Ho scritto i metodi per calcolare l'errore di corrispondenza e l'errore di allineamento, tuttavia non sono sicuro di come applicarli per ottenere il nuovo allineamento aggiornato.

+2

Ciao Rick, sei riuscito a completare l'implementazione di ICP C#? Puoi condividere con noi come risposta? – Pedro77

risposta

0

Le formule sulla diapositiva 10 (in realtà sono due modi equivalenti di scrivere la stessa formula) forniscono l'errore quadratico medio del proprio allineamento. Si desidera scegliere la rotazione e la traduzione (il vettore q è la combinazione di questi) per ridurre al minimo l'errore quadratico medio. L'MSE è una funzione piacevole e differenziabile del vettore q, quindi è facile usare qualcosa come il metodo del gradiente coniugato a partire dall'allineamento corrente per trovare un nuovo allineamento che (almeno localmente) riduce al minimo l'MSE.

Problemi correlati