0

I am trying to use Aruco boards for high-precision (< 1 mm) localisation of a small object, with small markers (markerLength < 2 cm). I figured that there is some kind of precision limit using Aruco boards, around 2 millimeters. I wondered why, and I supposed this could be some limitation due to the datatype used for pose estimation. To test this hypothesis, I wanted to convert all the parameters of cv.aruco.estimatePoseBoard to numpy.float64, but it was not possible for the cv.aruco.Board object.

This assert prevents Aruco board creation with 64-bit floating point data, as shown in this issue. And mixing datatypes results in incoherent results, so I wanted to know if there was a good reason to disable this feature.

Jux
  • 49
  • 5
  • Try fixing the OpenCV code locally. If it is useful to support double precision, propose your patch to the official repository. Can be that internally, all the computations are done in single precision. In this case, the assert can be understandable. – Catree Jul 30 '20 at 12:54
  • Thanks for your answer. [This](https://github.com/opencv/opencv/blob/master/modules/calib3d/src/solvepnp.cpp#L57) line of `solvepnp.cpp` makes me think that the computations can be done using double precision, so i will try writing a patch. – Jux Jul 30 '20 at 13:58

0 Answers0