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
…and hope that converges…
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.