this is an duplicate question of opencv: Rigid Transformation between two 3D point clouds. However, there is no answer accepted and I don't understand the only answer there.
The only answer says scaling and shearing can have different meaning in higher dimension, and gives an example that 2D scaling is 3D translation.
I think a 3D affine transformation should include scaling/shearing in 3 dimensions (i.e. x,y,z axis). A 3D rigid transformation should only have translation and rotation in 3 dimensions.
I am confused that why the answer in the post saying "That's the reason why you don't have an option to set a rigid affine transformation in 3D, because you actually already are performing one"
I should have commented on the original post but I can't due to the reputation requirement.
Despite what the (now deleted) answer linked in the question (as well as my previous deluded speculation... I blame a bad plate of Arcturian MegaDonkey) might have suggested, estimateAffine3d
does exactly what it says: estimates affine transformations, including scaling, shearing, translations and rotations, in 3d. The OP has confirmed this (in comments) and I've run several tests in which the transformations were successfully recovered.
There is no reason to believe that estimateAffine3d
does not work as intended.