2010-12-12 83 views
6

我正在使用下面的僞碼在C#中實現ICP算法。從ICP Powerpoint迭代最近點實現

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  

獲得然而我不能完全確定更新對準應該如何實施?如果有人能解釋這個比powerpoint更清晰一點,那就太棒了:)我已經編寫了計算通信錯誤和對齊錯誤的方法,但是我不知道如何應用這些來獲得新的更新對齊方式。

+2

你好瑞克,你能完成ICP C#的實現嗎?你能和我們分享一個答案嗎? – Pedro77 2014-07-24 14:39:43

回答

0

幻燈片10上的公式(它們實際上是編寫相同公式的兩種等效方式)給出了對齊的均方誤差。你想選擇你的旋轉和平移(q向量是這些的組合)來最小化均方誤差。 MSE是q向量的一個很好的可微函數,所以很容易使用類似於從當前對齊開始的共軛梯度法的方法來找到一個新的對齊(至少在本地)使MSE最小化。