为了估计两个三维点集之间的仿射变换,在建立了相应的点对的情况下,我在像这样计算的相关矩阵上使用单值分解(伪码):
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)如果将权值分配给对应项,那么如何计算相关矩阵?权重是否必须标准化,它们是否必须包括在中心的计算中?
发布于 2015-03-24 12:58:09
如果你的重量的意思是你想最小化
Q = Sum{ i | w[i]*||fixed[i] - (R*loose[i] + t)||^2 }(其中w是权重,x -> R*x +t你的仿射映射)
然后是的,中心应该是加权平均数,而“相关性”(真正的协方差)也应该是加权的。如果你的体重没有正常化,你应该先将它们正常化。
那是
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)' }https://stackoverflow.com/questions/29169959
复制相似问题