findHomography, getPerspectiveTransform, & getAffineTransform
affinetransform, c++, homography, opencv
Solution
Q #1: Right, the findHomography tries to find the best transform between two sets of points. It uses something smarter than least squares, called RANSAC, which has the ability to reject outliers - if at least 50% + 1 of your data points are OK, RANSAC will do its best to find them, and build a reliable transform.
The getPerspectiveTransform has a lot of useful reasons to stay - it is the base for findHomography, and it is useful in many situations where you only have 4 points, and you know they are the correct ones. The findHomography is usually used with sets of points detected automatically - you can find many of them, but with low confidence. getPerspectiveTransform is good when you kn ow for sure 4 corners - like manual marking, or automatic detection of a rectangle.
Q #2 There is no equivalent for affine transforms. You can use findHomography, because affine transforms are a subset of homographies.
Problem
This question is on the OpenCV functions `findHomography`, `getPerspectiveTransform` & `getAffineTransform` What is the difference between `findHomography` and `getPerspectiveTransform`?. My understanding from the documentation is that `getPerspectiveTransform` computes the transform using 4 correspondences (which is the minimum required to compute a homography/perspective transform) where as `findHomography` computes the transform even if you provide more than 4 correspondencies (presumably using something like a least squares method?). Is this correct? (In which case the only reason OpenCV still continues to support getPerspectiveTransform should be legacy? ) My next concern is that I want to know if there is an equivalent to `findHomography` for computing an Affine transformation? i.e. a function which uses a least squares or an equivalent robust method to compute and affine transformation. According to the documentation `getAffineTransform` takes in only 3 correspondences (which is the min required to compute an affine transform). Best,