Hi, I’d like to detect partially visible Checkerboards using findChessboardCornersSB but the way I’m using it seems to be wrong even though I think I’m using it according to the documentation.
The code I’m using for detection is
When I draw the result it skips every second row thus returning the wrong corners. Sorry I cannot show an image here, since I’m new to the forum and I’m only allowed to upload one image.
I noticed that the result for the given image is wrong only if I pass certain pattern sizes to the function (e.g. (9,4) as in this example) but works for other sizes like (3,3). In case of (3,3) it detects all visible corners in a 9x6 grid as I expected.
Do I use this function the wrong way?
your board covers way too small an area of the image. with such pictures, you will have a very hard time accurately estimating the intrinsics.
OpenCV can’t handle partially occluded/invisible checkerboards. the corner detection isn’t the issue. associating found corners into a grid is the issue.
I have ideas on how to make regular checkerboards “detectable” even if they’re partially occluded/invisible, but not the free time and specific motivation.
if you need to handle partially occluded boards, you’ll need to use “charuco”, which is a different board type.
Thank you crackwitz. The image was just for testing purposes so I could see if it detects the partial board.
OpenCV can’t handle partially occluded/invisible checkerboards. the corner detection isn’t the issue. associating found corners into a grid is the issue.
But isn’t the whole point of findChessboardCornersSB to find partial checkerboards? What else would the flag CALIB_CB_LARGER be used for then? Also the docu says
In the case, the flags CALIB_CB_LARGER or CALIB_CB_MARKER are given, the result can be recovered from the optional meta array. Both flags are helpful to use calibration patterns exceeding the field of view of the camera.
I know about charuco but I’d prefer a traditional checkerboard since it can hold far more corners than a charuco board. That’s why I would prefer to make this approach work.