I am confused between 3D rigid affine(with scale, without shear) transformation and Lie group's sim(3) matrix.
3D affine would be [sR|t; 0 1]. we rotate, scale and then translate a 3D point using 3D affine transform
\begin{matrix} s\cdot r_{11} & s\cdot r_{12} & s\cdot r_{13} & t_1\\ s\cdot r_{21} & s\cdot r_{22} & s\cdot r_{23} & t_2\\ s\cdot r_{31} & s\cdot r_{32} & s\cdot r_{33} & t_3\\ 0 & 0 & 0 & 1 \end{matrix}
sim3, according to [1] is [R|t; 0 1/s]
\begin{matrix} r_{11} & r_{12} & r_{13} & t_1\\ r_{21} & r_{22} & r_{23} & t_2\\ r_{31} & r_{32} & r_{33} & t_3\\ 0 & 0 & 0 & s^{-1} \end{matrix}
In loop closure context, for a candiate loop closure keyframe, we have an old pose(SE3) and its calculated sim3. sim3 has a scale, rotation and translation part.
- what is this sim3 actually? How do I get the new pose (SE3) using sim3 ?
- How do I get the new set of 3D points visible on the old keyframe pose?
- In ORB slam code, the authors find the new set of 3D points from old set by first finding camera coordinates of the 3D points (using old pose) and then multiplying it by the inverse of calculated sim3
- If sim3 is a matrix that maps the old points to new points, why don't we multiply the 3D points directly with sim3 matrix?
Reference: [1] http://ethaneade.com/lie_groups.pdf