Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

No, there is no way to use solvePnP() for your specific use case.


You can do it yourself. I see two possibilities.

In both cases you would have to reimplement the non-linear minimization process for the pose estimation refinement. You can use as a reference the solvePnPRefineLM() and modify it for your needs.

The first solution is to truncate the Jacobian matrix that is of size 2N x 6 (with N the number of points and 6 the number of parameters: angle-axis + translation) to 2N x 3. Then you update only the rotation part.

The other solution I see is to keep the Jacobian matrix of size 2N x 6 and just update the rotation part. But I am not sure if is valid or not.


See: Gauss-Newton / Levenberg-Marquardt Optimization by Ethan Eade. The application is for pose estimation.

No, there is no way to use solvePnP() for your specific use case.


You can do it yourself. I see two possibilities.

In both cases you would have to reimplement the non-linear minimization process for the pose estimation refinement. You can use as a reference the solvePnPRefineLM() and modify it for your needs.

The first solution is to truncate the Jacobian matrix that is of size 2N x 6 (with N the number of points and 6 the number of parameters: angle-axis + translation) to 2N x 3. Then you update only the rotation part.

The other solution I see is to keep the Jacobian matrix of size 2N x 6 and just update the rotation part. But I am not sure if is valid or not.

Or maybe use something like a selection matrix to discard the translation part?


See: Gauss-Newton / Levenberg-Marquardt Optimization by Ethan Eade. The application is for pose estimation.