I would like to introduce you my Find-GCP project. Using special ArUco code GCP markers we can find the marker centres on the images and the gcp_list.txt file can be generated as a batch process.
The project uses OpenCV and OpenCV contrib libraries and is written in Python.
@dsqndson and @W6oody thank for your encouraging answers.
I’ve sent a request to the ODM development team to join our project to ODM. It is on its way…
Probably a blog entry will be available on the ODM home page in the near future.
I’d love a tool to help us determine the needed size to print the Aruco marker with a given camera megapixel and a given flight height. So for instance, if I’m going to use my GoPro Hero4 Black (12MP) at 400FT AGL, I’d need to get my Aruco printed at x by x inches.
Yes, feature requests are welcome!
This is good idea. There are two utilities in the Find-GCP repo (GitHub - zsiki/Find-GCP: Find ArUco markers in digital photos) aruco_make.py to generate printable standard ArUco markers and dict_gen_3x3.py to generate non-standard 3x3 markers. These programs generate png files. The missing step to calculate the necessary size for printing. From our tests we got that the minimal size of the markers to be detected in the images is 20 pixels (in case of 3x3 ArUco codes) and 30 pixels are optimal. We use DJI Phantom 4 Pro and 30 x 30 cm markers are detected from 70 metres. There are some statistics in the second part of our paper, see here:https://www.bjmc.lu.lv/fileadmin/user_upload/lu_portal/projekti/bjmc/Contents/9_1_06_Siki.pdf
What should be the input data for this calculation? Flight height, focal length, image size? What could be the general formula for this?
I added the source code of gsd_calc to the Find-GCP project on GitHub, it is in the gsd_calc subdirectory (html, javascipt and css). You can translate it to any language, see hu.json file for Hungarian translation. Translations are welcome.
If you can extend the sensor database, plesae do it. The sensor data are in the sensordb.json file. Four data are stored for a sensor:
swidth - sensor width in millimetres
focal - focal length in millimetres (real focal length, not thr 35 mm equivalent)
iwidth - image width pixels
iheight - image height pixels
Pull requests are welcome on GitHub or you can drop data in the forum.
Using 2x2 matrix there are only five different shapes (I guess):
00 10 11 10 11
00 00 00 01 11
If these five are enough for you, it is possible. But there is a danger, the simpler the pattern the more false markers detected in the nature. For example the first pattern is an empty square…
I use mostly 3x3 matrix 30 x 30 centimeters, and I have several false positive matches on roofs. Using 4x4 markers the number of false matches are reduced significantly.