点对应的ICP权重

ICP weights of point correspondences

为了估计两个 3D 点集之间的仿射变换,其中已经建立了对应的点对,我在这样计算的相关矩阵上使用单值分解(伪代码):

vector3 fixed_center = (0, 0, 0)
vector3 loose_center = (0, 0, 0)
n = 0
foreach (fixed_pt, loose_pt) in correspondences
    fixed_center += fixed_pt
    loose_center += loose_pt
    n++
fixed_center /= n
loose_center /= n
matrix3x3 correlation = ((0,0,0), (0,0,0), (0,0,0))
foreach (fixed_pt, loose_pt) in correspondences
     correlation += (fixed_pt - fixed_center) * (loose_pt - loose_center)

如果给对应关系赋予权重,那么相关矩阵要怎么计算呢?权重是否必须归一化,是否必须包含在中心的计算中?

如果你的权重的意思是你想最小化

Q = Sum{ i | w[i]*||fixed[i] - (R*loose[i] + t)||^2 }

(其中 w 是权重,x -> R*x + t 你的仿射图)

那么是的,中心应该都是加权平均值,'correlation'(真正的协方差)也应该是加权的。如果你的权重没有标准化,你应该先标准化它们。

也就是

f_centre = Sum{ i | w[i]*fixed[i] }
l_centre = Sum{ i | w[i]*loose[i] }
covar = Sum{ i | w[i] * (fixed[i]-f_centre)*(loose[i]-l_centre)' }