Ask Your Question

Calibration at the edges of the image

asked 2020-06-22 10:22:08 -0500

Quizzy5889 gravatar image

updated 2020-06-23 01:53:56 -0500

Hi, everybody, I'm working on calibrating a camera, testing a charuco-type calibrator for the first time.

I had many expectations about this calibrator, thinking with it I could get much closer to the edges of the image than with a standard chessboard, since charuco does not need to be seen entirely.

The results I get leave me a little puzzled though. The interpolateCharucoCorners function, never returns me the last line/column of the chessboard, making it impossible to use those areas of the image for calibration.

Just to give you an idea I enclose the following image, where I highlighted the area described by the points extracted by interpolateCharucoCorners (the area is the convex hull of the whole set of points).

image description

As you can see the last column to the right of markers has not been extracted. Can you help me explain why? How do I include those pixels in the calibration?

That's my code, but it's the same as in the example

image_grayscale = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
corners, ids, rejected_points = cv2.aruco.detectMarkers(image_grayscale, board.dictionary)
_, charuco_corners, charuco_ids = cv2.aruco.interpolateCornersCharuco(corners, ids, image_grayscale, board)
edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted

answered 2020-09-19 06:58:33 -0500

The chessboard calibration only uses the internal corners for calibration purposes. So the outermost corners are never used.

Citation from the docs: "For example, a regular chessboard has 8 x 8 squares and 7 x 7 internal corners, that is, points where the black squares touch each other."

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2020-06-22 10:22:08 -0500

Seen: 97 times

Last updated: Jun 23 '20