Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Output of cv2.findHomography in OpenCV (Python)

Tags:

python

opencv

I'm using OpenCV's findHomography function (with RANSAC) in Python to find the transformation between two sets of points.

Looking at the documentation, the output is a mask and a transformation matrix.

The documentation is not clear about what the mask represents, and how the matrix is structured.

Is a 1 in the output mask a point that fits the found transformation or a point that was ignored? And could you explain the makeup of the 3x3 output transformation matrix?

Thanks in advance and sorry if I missed some documentation which explains this.

like image 492
Akanes Avatar asked Sep 05 '14 20:09

Akanes


People also ask

What does cv2 findHomography do?

cv. findHomography() returns a mask which specifies the inlier and outlier points.

What is findHomography mask?

The mask returned by findHomography is an 8-bit, single-channel cv::Mat (or std::vector<uchar> , if you prefer) containing either 0 or 1 indicating the outlier status. EDIT: You access each element of the mask by calling . at<double> , which is leading to the confusing output.

What is homography in Python?

Homography is a transformation that maps the points in one point to the corresponding point in another image. The homography is a 3×3 matrix : If 2 points are not in the same plane then we have to use 2 homographs. Similarly, for n planes, we have to use n homographs.

How many points is homography?

We have seen that a homography can be used to map one image to the other in the case of pure camera rotation or a planar scene. If such a homography exists between the images, four points are sufficient to specify it precisely.


2 Answers

Based on my limited search, mask returned by findHomography() has status of inliers and outliers, i.e. it's a matrix representing matches after finding the homography of an object.

This answer addresses your first question.

This answer addresses what a mask is and what are its dimensions.

like image 162
Kanad Avatar answered Sep 24 '22 23:09

Kanad


Well what do you need to do with the mask? Because that field is not needed so you don't have to put any mask.

As for the resulting matrix. It is called a homography matrix, or H matrix and it represents the transformation of one point in an image plane to the same point in another image plane.

 X1 = H * X2

The point X1 is the same point (X2) in a different plane.

So the H matrix is basically the description of how one point in, lets say, image 1 matches 1 point in image2.

like image 44
Jay Avatar answered Sep 20 '22 23:09

Jay