Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

The aruco corners aren't nearly as accurate as the chessboard corners, particularly in OpenCV 3.3.1. The chessboard corners are localized more accurately with the cv::cornerSubpix. If you want more points, use a different chessboard grid or more pictures.

The aruco corners aren't nearly as accurate as the chessboard corners, particularly in OpenCV 3.3.1. The chessboard corners are localized more accurately with the cv::cornerSubpix. If you want more points, use a different chessboard grid or more pictures.

[edit: I didn't intend to leave an "answer", but rather a "comment" - I will add some more detail]

The reason only the chessboard corners are used is because they provide more accurate image locations than the Aruco corners. I typically see error reduced by 50% when using the chessboard corners compared to the Aruco corners. (Say, 0.6 pixel re-projection error with the Aruco, and 0.3 pixel re-projection error with the chessboard corners) In my experience there are two primary issues with using the Aruco marker corners as calibration points:

  1. The functions that locate the Aruco markers, particularly in older versions of OpenCV, generated poor corner estimates in many cases. In many cases trying to refine the corner locations with cornerSubpix() was difficult because the initial estimates could be very bad, making it possible to find a corner feature internal to the Aruco marker. Corner accuracy is much better in more recent versions of the Aruco functions, but is still less accurate than chessboard style corners.

  2. cornerSubpix, which is used to generate much more accurate corner locations (as compared to goodFeaturesToTrack, for example) works best on chessboard style corners. CornerSubpix works by analyzing the image (intensity) gradient in a neighborhood of pixels. With a single corner there is not as much supporting gradient information, and probably more importantly the single corner can result in bias from focus or other image formation factors. The double corner of a chessboard corner feature tends to balance out the bias, giving a more accurate corner estimate.

A primary benefit of using a Charuco board vs a standard chessboard is that you don't have to see the full calibration target in your image. This helps in getting calibration points into the corners of the calibration images, which is important for getting accurate distortion parameters, particularly on high distortion lenses.

The aruco corners aren't nearly as accurate as the chessboard corners, particularly in OpenCV 3.3.1. The chessboard corners are localized more accurately with the cv::cornerSubpix. If you want more points, use a different chessboard grid or more pictures.

[edit: I didn't intend to leave an "answer", but rather a "comment" - I will add some more detail]

The reason only the chessboard corners are used is because they provide more accurate image locations than the Aruco corners. I typically see error reduced by 50% when using the chessboard corners compared to the Aruco corners. (Say, 0.6 pixel re-projection error with the Aruco, and 0.3 pixel re-projection error with the chessboard corners) In my experience there are two primary issues with using the Aruco marker corners as calibration points:

  1. The functions that locate the Aruco markers, particularly in older versions of OpenCV, generated poor corner estimates in many cases. In many cases trying to refine the corner locations with cornerSubpix() was difficult because the initial estimates could be very bad, making it possible to find a corner feature internal to the Aruco marker. Corner accuracy is much better in more recent versions of the Aruco functions, but is still less accurate than chessboard style corners.

  2. cornerSubpix, which is used to generate much more accurate corner locations (as compared to goodFeaturesToTrack, for example) works best on chessboard style corners. CornerSubpix works by analyzing the image (intensity) gradient in a neighborhood of pixels. With a single corner there is not as much supporting gradient information, and probably more importantly the single corner can result in bias from focus or other image formation factors. The double corner of a chessboard corner feature tends to balance out the bias, giving a more accurate corner estimate.

A primary benefit of using a Charuco board vs a standard chessboard is that you don't have to see the full calibration target in your image. This helps in getting calibration points into the corners of the calibration images, which is important for getting accurate distortion parameters, particularly on high distortion lenses.

lenses. The aruco markers aren't there to generate more data points, rather to provide correspondence points that are accurate enough to predict the (approximate) locations of the chessboard corners. These approximate locations are then refined with cornerSubpix to give very accurate image locations for the calibration target (world) points.