问题背景
在多目立体视觉中,不同的 dense reconstruction 算法提取出来的相机位姿不会完全一样,如果要对这多种 dense reconstruction 算法输出的点云/相机位姿进行对齐。
问题描述
已知一系列相机在世界坐标系A下的旋转矩阵和位移向量为[Rr∣tr]、在世界坐标系B下的旋转矩阵和位移向量为[R∣t],求坐标系B到坐标系A的变换矩阵(s,[Rt∣tt])(s为一对角矩阵表示缩放)使得坐标系B下的任意坐标P映射为坐标系A下的坐标Pr:Pr=s(RtP+tt)。
求解方法1
显然,同一个点世界坐标系AB下的坐标Pr和P在同一个相机坐标系下的坐标必然成比例:
RP+t=sr(RrPr+tr)
带入Pr=s(RtP+tt):
RP+tP=Q=R−1Q−R−1t
RP+tRP+t=srRrs(RtP+tt)+srtr=ssrRrRtP+ssrRrtt+srtr
若带入P=0则有:
tssrRrtttt=ssrRrtt+srtr=t−srtr=ssr1Rr−1(t−srtr)
进而方程可消去位移项:
RPP=ssrRrRtP=ssrR−1RrRtP
显然要让上式成立,ssrR−1RrRt必为单位矩阵:
ssrR−1RrRtssrRt=I=Rr−1R
其中Rt、Rr和R都是旋转矩阵,所以必有ssr=1而Rt=Rr−1R,再带入tt的计算式易得:
tt=Rr−1(t−s1tr)
仍有未知量需要求解,如何求解tt和s?
多个相机的Rr,i和tr,i可构成方程组求解之。
由于tt对于所有相机都相同,可以取任意两相机i,j求s:
Rr,i−1(ti−s1tr,i)Rr,i−1(sti−tr,i)sRr,i−1ti−Rr,i−1tr,is(Rr,i−1ti−Rr,j−1tj)s=Rr,j−1(tj−s1tr,j)=tt=Rr,j−1(stj−tr,j)=sRr,j−1tj−Rr,j−1tr,j=Rr,i−1tr,i−Rr,j−1tr,j=Rr,i−1ti−Rr,j−1tjRr,i−1tr,i−Rr,j−1tr,j
最后将s带入公式易得tt。