Determine the rotation, translation and scaling in homography matrix from estimateAffinePartial2D; Can I force no scaling? (Euclidan/Rigid)
I'm trying to align scans to a blank template -- images are from the same scanner at same scale, just rotated and translated. I find ORB feature matching as described here.
I've had good luck using findHomography and then sending that homography matrix to warpPerspective. However, findHomography allows more degrees of freedom than necessary; We just do rotation and translation, no scaling.
estimateAffinePartial2D gives me a 3x2 matrix -- How can I determine the rotation, translations (x&y) , and the scaling contained in that matrix? That way, if scaling is not close to 1, I know the homography is bad.
Is there a way I can FORCE the estimateAffinePartial2D to find only solutions where scaling 1???
I'm not sure what the differences are between estimateAffinePartial2D and estimateRigidTransform, but I use the former (with the third parameter set to false) - you might want to compare the results between the two.
As for scaling, if you use esimateRigidTransform with the third parameter set to false, you will get a translation, rotation and uniform scale (no projective or shear)...so the upper 2x2 part of the matrix will have the form:
cos * S -sin * S
sin * S cos * S
and since cos^2 + sin^2 = 1, you can determine what S is and then divide it out of the result. It's a bit more work, but I think it would achieve what you want.