Computer vision 在给定对应点对的情况下,找到最佳刚性变换

Computer vision 在给定对应点对的情况下,找到最佳刚性变换,computer-vision,linear-algebra,transformation,numerical-methods,image-registration,Computer Vision,Linear Algebra,Transformation,Numerical Methods,Image Registration,我在同一坐标系中有一个源和目标。源中有“n”个点,目标中有“n”个点(n>=3)。通信也是众所周知的。 我想找到最佳刚性变换矩阵(在某些情况下为6自由度或更少) 我知道这是通过最小化源点和目标点之间距离的平方来解决的 我有两个问题 1) 在这些情况下,什么是最好的解决方案? 2) 在使用四元数表示旋转的Levenberg–Marquardt算法的情况下,计算雅可比矩阵的最佳方法是什么?给定点p[]和对应点Q[]我们希望找到一个平移T和旋转R以最小化 E = Sum{ <Q[i] - (R*

我在同一坐标系中有一个源和目标。源中有“n”个点,目标中有“n”个点(n>=3)。通信也是众所周知的。 我想找到最佳刚性变换矩阵(在某些情况下为6自由度或更少)

我知道这是通过最小化源点和目标点之间距离的平方来解决的

我有两个问题

1) 在这些情况下,什么是最好的解决方案?
2) 在使用四元数表示旋转的Levenberg–Marquardt算法的情况下,计算雅可比矩阵的最佳方法是什么?

给定点p[]和对应点Q[]我们希望找到一个平移T和旋转R以最小化

E = Sum{ <Q[i] - (R*P[i]+T)|Q[i] - (R*P[i]+T)>}
其中Qbar是Ps的Qs和Pbar的平均值

插入T的这个值,我们得到

E = Sum{ <q[i] - R*p[i] | q[i] - R*p[i]>}
where q[i] = Q[i]-Qbar, p[i] = P[i]-Pbar

最小二乘法怎么样?你有一个输入坐标矩阵
a
,一个输出坐标矩阵
B
,你想找到一个变换矩阵
M
B=MA
->
M=B/a
。用最小二乘法找到B/A,你就完成了!(在MATLAB中,您可以直接键入
M=B/A
)。我需要适应1、2、3、4和5自由度的情况,而不仅仅是6自由度。我认为用矩阵来表示这些情况并不是最好的。另外,我正在寻找C++中的解决方案。谢谢你你可能想看看我不确定你所说的“刚性变换”到底是什么意思,但是这些问题通常可以直接解决,而不是求助于非线性最小二乘法。刚性变换的意思是,只允许三个旋转和三个平移自由度。我认为您提到的参考仅在旋转自由度的情况下有效,而不包括平移。@dmuir:刚性变换是平移和旋转的组合。谢谢您的详细解释。如果每对源和目标都有权重,您有什么解决方案吗?
T = mean { Q[i] - R*P[i]} = Qbar - R*Pbar
E = Sum{ <q[i] - R*p[i] | q[i] - R*p[i]>}
where q[i] = Q[i]-Qbar, p[i] = P[i]-Pbar
q[i] = sqrt( weight[i]) * ( Q[i]-Qbar)
p[i] = sqrt( weight[i]) * ( P[i]-Pbar)