Finding circle grid failing when blob detector succsed


I am reading now the “Learn OpenCV3” O’Reilly book. Now I am experimenting with the camera calibration functions. I started to test with a GoPro hero 8 and the chessboard and circle grid targets. I got really results, but when I tried the same algorithm with more distorted lower resolution camera I was not able to find the pattern on the images. I tried to investigate the problem, and tried to change the parameters, but nothing helped. When I run the blob detector on these images almost all the time it returns the circle grid as detected blobs. When I try to use this detector with the findcirclegrid() it still not finding the pattern. I tried to use in symmetric, asymmetric and clustering mode. I read the documentation, but still not clear why fail the grid finding when the blob detector works well.

do you have an example image, where this happens, for us, please ?

that is probably more distortion than the “find grid” procedure tolerates. it doesn’t just find the blobs, it has to put them into a sensible order.

look in the fisheye module for other approaches to find grids.

or do this iteratively:

  • maintain a “total” estimate of distortion coefficients
  • initialize with some initial guess that makes the grid detectable
  • undistort image
  • try finding the grid in undistorted image
  • estimate residual distortion
  • add to total estimate
  • iterate

…and hope that converges…

1 Like

The image acquisition environment is not good.
There is a foreign object on the lens or lens cover, and it looks like there is a scratch.
This makes image processing difficult.
I recommend that you try using a chess board instead of a circle board.