findChessboardCornersSB not finding corners in partially visible chessboard

Hi all, I’ve read in findChessboardCornersSB doc that it should be able to detect partially visible chessboards when using CALIB_CB_MARKER and CALIB_CB_LARGER flags. However it is unable to detect corners in the following image (and all others of that calib session).

The images are a bit dark (due to reducing exposition time to minimize hand movements), but aside from that, it seems like detection should be relatively easy.

Could anyone with more insight on that algorithm help me understand where is the main difficulty in those images, or if it works for them?

this is expected. the chessboard/grid finding APIs of OpenCV require the whole thing to be in view. that’s bad because it complicates getting data points in the far corners of the picture, where measuring distortion is most important.

if I had some paid time I’d implement a grid labeling algorithm that would erase those limitations. I’m sure lots of other people have these issues but nobody seems to wanna open-source their implementations.

instead, people solve this with “ChArUco”…

Yeah I agree it complicates precise distortion calibration.

this is expected. the chessboard/grid finding APIs of OpenCV require the whole thing to be in view

Actually, it seems I misread the CALIB_CB_LARGERdocumentation. It works in reverse of what I thought. Instead of giving the findChessboardCornersSBWithMeta function the full size board shape (which fails), I can give it a small size like (4, 3) and it’s capable of extending it, and returning for example a 9x5 meta array.

I’ll try to explore that track and see if I manage to do a full calibration with partially visible chessboards.

Hum, doesn’t work as well as I was hoping …