Confusion in Posture Assessment Methods

I am trying to do a pose estimate (actually [Edit: 3DOF ] rotation is all I need) from a planar marker with 4 corners = 4 coplanar points.
Until today, I was under the impression from everything I read that you will always compute homography (using DLT for example) and decompose this matrix using the various methods available (Faugeras, Zhang, the analytical method, which is also described in this post here , in stackexchange ) and refine it using non-linear optimization if necessary.

The first minor question is, if this is an analytical method (by simply taking two columns from a matrix and creating an orthonormal matrix from them, resulting in the desired rotation matrix), what needs to be optimized? I tried this in Matlab and the result is shaking badly, so I can clearly see that the result is not perfect or even sufficient, but I also don't understand why it would be necessary to use the rather expensive and complex SVDs used by Faugeras and Zhang if this simple method gives results already.

Then there are methods for evaluating iterative pose, such as the Orthogonal Iteration (OI) algorithm of Lu et al. Or the Schweigofer and Pinz algorithm for evaluating reliable pose, where the word "homography" is not even mentioned. All they need is an estimate of the initial pose, which is then optimized (the reference implementation in Matlab done by Schweighofer uses an OI algorithm, for example, which itself uses some kind of SVD based method).

My problem is everything I've read so far was "4 points"? Homography, homography, homography. Decay? Well, difficult, in general, not unique, multiple methods. Now this iterative world is opening up, and I just can't connect these two worlds in my head, I don't quite understand their relationship. I cannot even clearly articulate what my problem is, I just hope someone understands where I am.

I would really appreciate a hint or two.

Edit . Is it correct to say: 4 points on the plane and their image are connected by homography, i.e. 8 parameters. The search for marker pose parameters can be done by calculating and decomposing the homography matrix using Faugeras, Zhang, or a direct solution, each of which has its drawbacks. This can also be done using iterative methods, such as the OI or Schweighofer algorithm, which by no means calculate the homography matrix, but simply use the appropriate points and require an initial estimate (for which an initial guess from the homography decomposition could be used).

+3


source to share


2 answers


With only four points, your solution will usually be very sensitive to small errors in their location, especially when the rectangle is nearly orthogonal to the optical axis (this is because the vanishing points are not observed - they are outside the image and very far from the measurements - and the pose is given by the cross product vectors from the center of the quadrilateral to vanishing points).



Is your template such that the corners can be confidently positioned with sub-pixel precision? I recommend using checkerboard patterns for corners, which allow for a good and simple iterative refinement algorithm to achieve subpixel precision (search for an "iterative saddle point algorithm" or search documents in OpenCV).

+2


source


I won't give you a complete answer, but it looks like at least one of the points that need to be clarified is this:

homography is an invertible mapping from P ^ 2 (homogeneous 3-vectors) to itself, which can always be represented by an invertible 3x3 matrix. Having said that, note that if your 3D points are coplanar, you can always use homography to snap world points to image points.

In general, a point in 3-space is represented in homogeneous coordinates as a 4-vector. The projective transformation acting on P ^ 3 is represented by a non-singular 4x4 matrix (15 degrees of freedom, 16 elements minus one for the general scale).



So the bottom line is that if your model is planar, you can get away with homography (8 DOF) and the appropriate algorithm, while in general you will need to evaluate a 4x4 matrix and will need a different algorithm to do this.

Hope it helps,

Alex

0


source







All Articles