В настоящее время я использую следующий псевдокод для реализации алгоритма ICP в C #. Получено из 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, это было бы здорово :) Я написал методы для вычисления ошибки соответствия и ошибки выравнивания, однако я не уверен, как применять их, чтобы получить новое обновленное выравнивание.