Why does this charuco pose estimation fail for this particular image and how can I avoid it?

I get the Charuco board’s corners properly detected for all my images. Nevertheless, for some of them the actual estimated camera pose (relative to the board) goes completely wrong.

The image at the top is a good pose estimation. While the image at the bottom is is a bad pose estimation por a very similar image (albeit with less detected corners as it can be seen in the image)

Should’nt the detected corners be enough data to properly estimate the pose in the bottom one? Is there anything I can do? Thanks

make sure your board is flat. it’s not. use double-sided tape to stick the printout to a flat piece of board. I personally prefer thin fibreboard (MDF, not that coarse stuff) or good plywood (cheap plywood can be bent).

charuco board pose recovery is implemented wrong. not by you, by whoever wrote the code in the aruco module, potentially even the original aruco authors. I’ve noticed absolutely nonsensical results from slightly perturbed boards. it doesn’t degrade gracefully.

1 Like

Thanks @crackwitz.

Since charuco board pose estimation does not seem to be reliable, do you have any recommendations on an alternative approach? Is this issue specific to the Charuco implementation? Or will I experience the same if I try to use Aruco baords or independent Aruco markers?

Perhaps you even have recommendations outside OpenCV? (I’ve tried Colmap, looking for something else).

Thanks!