4

I'm having a hard time estimating the positions of the Aruco markers with the camera. In my tests with the DICT_6X6_250 dictionary and the board with 4 markers of 20x20 cm on it, I measured at 6 meters with an error of 20-30 cm. I need more precise measurements.

Is this error rate normal? What can I do to increase accuracy?

Christoph Rackwitz
  • 11,317
  • 4
  • 27
  • 36
bariskplgz
  • 43
  • 1
  • 5

2 Answers2

5

In general there are ambiguity issues with Aruco, which you can find here.

I am doing abit of research on Fiducial Markers and this error rate is pretty normal. The Pose estimation of the markers tend to have errors in x and y rotation and z Translation.

However, there are some factors that can influence the accuracy of Aruco Pose estimation. Here are some points, that can help improve Pose estimation accuracy, which you should take into consideration:

  • The first is to use a Camara with a high resolution. If the Marker is small in the image plane the pose estimation will not be as accurate.
  • Secondly instead of using cv2.aruco.estimatePoseSingleMarkers()
    I would recommend using cv2.SolvePnP() as it allows you to use different Perspective N Point algorithms to calculate the Pose. You can read more about SolvePnP here and the different methods here
  • For the Aruco Detection cv2.detectMarkers() use a SubPixel Corner refinement method.
  • Lastly you can use a Pose Refinement Method to improve the estimated pose (here). This method reduces the reprojection error of the estimated Pose and as a result you should get better Pose estimation accuracy.
2

Inaccuracies of pose can stem from inaccuracies in subpixel localization.

Almost all algorithms for subpixel localization, and all people, assume a linear relationship between what's physically there (edges, corners) and how that is mapped to pixel intensities.

Webcams1 give gamma-compressed data, not raw linear sensor values. Also, webcams love to "sharpen" the picture. Both affect subpixel localization.


1 Not unique to webcams. That goes for everything that isn't a "raw sensor" file format. All JPEG, PNG, ... images are gamma-compressed, and so are all videos.

Christoph Rackwitz
  • 11,317
  • 4
  • 27
  • 36