Treatment with GCP points

Hello, I have a problem because the software works very well, but when I look at the georeferencing of my model a great inaccuracy is observable.
So I decided to import a GCP file, but the processing does not succeed and ends with a memory error.
This error appears on 2 different computers. I would like to know where the problem lies.
I can see my data and the image of the processing error.
Otherwise do you have another solution to improve the accuracy of my model.
Thanks to you.

Data:

1 Like

Are you able to tag the images with the GCP target they’re associated with?

Cannot load file, please fix the following errors:
In row 0 missing gcpName
In row 1 missing gcpName
In row 2 missing gcpName
In row 4 missing gcpName
In row 5 missing gcpName
In row 6 missing gcpName
In row 7 missing gcpName
In row 8 missing gcpName
In row 9 missing gcpName
In row 10 missing gcpName
In row 11 missing gcpName
In row 12 missing gcpName
In row 13 missing gcpName
In row 14 missing gcpName
In row 15 missing gcpName
In row 16 missing gcpName
In row 17 missing gcpName
In row 18 missing gcpName
In row 19 missing gcpName
In row 20 missing gcpName
In row 21 missing gcpName
In row 22 missing gcpName
In row 23 missing gcpName
In row 24 missing gcpName
In row 25 missing gcpName
In row 26 missing gcpName
In row 27 missing gcpName
In row 28 missing gcpName
In row 29 missing gcpName
In row 30 missing gcpName
In row 31 missing gcpName
In row 32 missing gcpName
In row 33 missing gcpName

Yes of course, I also have a GCP file with the name of the images, but when I enter it in ODM I can’t read the GCP file…

Data:

1 Like

Looks like you have the image names for the frames above 9 named improperly in the gcp_list.txt (they have an extra 0):

Corrected:

It also looks like you have the projection wrong, or possibly the actual X/Y values, since you’re on Null Island:

Finally, you’re only associating one image per GCP, which is not to specification. You’ll need 3-5 images at the least per GCP.

Looks like a better starting point for your gcp_list.txt is this:

+proj=longlat +datum=WGS84 +no_defs
3.784279 43.436978 1.5 2559 137 YUN00004.JPG [gcp01_1]
3.784279 43.436978 1.5 2557 442 YUN00005.JPG [gcp01_2}
3.784279 43.436978 1.5 2587 761 YUN00006.JPG [gcp01_3]
3.784279 43.436978 1.5 2594 1085 YUN00007.JPG [gcp01_4]
3.784279 43.436978 1.5 2603 1430 YUN00008.JPG [gcp01_5]
3.784279 43.436978 1.5 2597 1742 YUN00009.JPG [gcp01_6]
3.784279 43.436978 1.5 2588 2060 YUN00010.JPG [gcp01_7]
3.784279 43.436978 1.5 2551 2389 YUN00011.JPG [gcp01_8]
3.784279 43.436978 1.5 1528 137 YUN00015.JPG [gcp01_9]
3.784279 43.436978 1.5 1502 473 YUN00016.JPG [gcp01_10]
3.784279 43.436978 1.5 1559 741 YUN00017.JPG [gcp01_11]
3.784279 43.436978 1.5 1570 1034 YUN00018.JPG [gcp01_12]
3.784279 43.436978 1.5 1568 1360 YUN00019.JPG [gcp01_13]
3.784279 43.436978 1.5 1571 1683 YUN00020.JPG [gcp01_14]
3.784279 43.436978 1.5 1570 1997 YUN00021.JPG [gcp01_15]
3.784279 43.436978 1.5 1525 2295 YUN00022.JPG [gcp01_16]
3.784667 43.437150 1.5 2356 416 YUN00002.JPG [gcp02_1]
3.784667 43.437150 1.5 2270 649 YUN00003.JPG [gcp02_2]
3.784667 43.437150 1.5 2313 1056 YUN00004.JPG [gcp02_3]
3.784667 43.437150 1.5 2320 1363 YUN00005.JPG [gcp02_4]
3.784667 43.437150 1.5 2335 1675 YUN00006.JPG [gcp02_5]
3.784667 43.437150 1.5 2345 1991 YUN00007.JPG [gcp02_6]
3.784667 43.437150 1.5 2309 2313 YUN00008.JPG [gcp02_7]
3.784667 43.437150 1.5 2331 2629 YUN00009.JPG [gcp02_8]
3.784667 43.437150 1.5 2296 2929 YUN00010.JPG [gcp02_9]
3.784667 43.437150 1.5 1214 420 YUN00013.JPG [gcp02_10]
3.784667 43.437150 1.5 1234 742 YUN00014.JPG [gcp02_11]
3.784667 43.437150 1.5 1257 1042 YUN00015.JPG [gcp02_12]
3.784667 43.437150 1.5 1258 1380 YUN00016.JPG [gcp02_13]
3.784667 43.437150 1.5 1265 1634 YUN00017.JPG [gcp02_14]
3.784667 43.437150 1.5 1558 1918 YUN00018.JPG [gcp02_15]
3.784667 43.437150 1.5 1254 2238 YUN00019.JPG [gcp02_16]
3.784667 43.437150 1.5 1259 2556 YUN00020.JPG [gcp02_17]
3.784667 43.437150 1.5 1243 2863 YUN00021.JPG [gcp02_18]

However, this still leaves the distribution of GCPs to be not super ideal, but it should be workable.

1 Like

Yes, that’s right, I didn’t. I have corrected this error.
I have restarted the treatment with this corrected file. However I do not have only one image per GCP since I have 2 coordinate points for 21 images. Is there another way to write the file?
How did you manage to read the file in the GCP interface, I can’t do it.

My treatment did not succeed, I still have the same error “memory error” so it did not come from the GCP file

1 Like

Ah, but you do. If you look at the screenshot above, you have your GCPs named individually like gcp01_1 etc. If you really only have two GCP locations, you should have them named something like gcp01 and gcp02 and then tag the images for them so that you get something like 5+ images per gcp01 and gcp02 each.

The file did not load in the GCP interface until I adjusted it, but what I put above should work.

As for the memory error, that can happen with broken GCPs as it can make the boundary of the reconstruction become incredibly large/small and break processing. I’m sure you’ve found that the two computers you’ve tested this dataset on can process it fine without the GCP, correct?

1 Like

Yes, without the GCP the models load correctly. Is there any way to get around this memory error by including the GCPs in the processing?

For the GCP file should I write it like this, with only two GCP names?
If I use this file it should work during processing?

When I load this file in the GCP interface I don’t see the points on the map, is this normal? What am I not understanding?

GCP file:

+proj=longlat +datum=WGS84 +no_defs
3.784279 43.436978 1.5 2559 137 YUN00004.JPG [gcp01]
3.784279 43.436978 1.5 2557 442 YUN00005.JPG [gcp01}
3.784279 43.436978 1.5 2587 761 YUN00006.JPG [gcp01]
3.784279 43.436978 1.5 2594 1085 YUN00007.JPG [gcp01]
3.784279 43.436978 1.5 2603 1430 YUN00008.JPG [gcp01]
3.784279 43.436978 1.5 2597 1742 YUN00009.JPG [gcp01]
3.784279 43.436978 1.5 2588 2060 YUN00010.JPG [gcp01]
3.784279 43.436978 1.5 2551 2389 YUN00011.JPG [gcp01]
3.784279 43.436978 1.5 1528 137 YUN00015.JPG [gcp01]
3.784279 43.436978 1.5 1502 473 YUN00016.JPG [gcp01]
3.784279 43.436978 1.5 1559 741 YUN00017.JPG [gcp01]
3.784279 43.436978 1.5 1570 1034 YUN00018.JPG [gcp01]
3.784279 43.436978 1.5 1568 1360 YUN00019.JPG [gcp01]
3.784279 43.436978 1.5 1571 1683 YUN00020.JPG [gcp01]
3.784279 43.436978 1.5 1570 1997 YUN00021.JPG [gcp01]
3.784279 43.436978 1.5 1525 2295 YUN00022.JPG [gcp01]
3.784667 43.437150 1.5 2356 416 YUN00002.JPG [gcp02]
3.784667 43.437150 1.5 2270 649 YUN00003.JPG [gcp02]
3.784667 43.437150 1.5 2313 1056 YUN00004.JPG [gcp02]
3.784667 43.437150 1.5 2320 1363 YUN00005.JPG [gcp02]
3.784667 43.437150 1.5 2335 1675 YUN00006.JPG [gcp02]
3.784667 43.437150 1.5 2345 1991 YUN00007.JPG [gcp02]
3.784667 43.437150 1.5 2309 2313 YUN00008.JPG [gcp02]
3.784667 43.437150 1.5 2331 2629 YUN00009.JPG [gcp02]
3.784667 43.437150 1.5 2296 2929 YUN00010.JPG [gcp02]
3.784667 43.437150 1.5 1214 420 YUN00013.JPG [gcp02]
3.784667 43.437150 1.5 1234 742 YUN00014.JPG [gcp02]
3.784667 43.437150 1.5 1257 1042 YUN00015.JPG [gcp02]
3.784667 43.437150 1.5 1258 1380 YUN00016.JPG [gcp02]
3.784667 43.437150 1.5 1265 1634 YUN00017.JPG [gcp02]
3.784667 43.437150 1.5 1558 1918 YUN00018.JPG [gcp02]
3.784667 43.437150 1.5 1254 2238 YUN00019.JPG [gcp02]
3.784667 43.437150 1.5 1259 2556 YUN00020.JPG [gcp02]
3.784667 43.437150 1.5 1243 2863 YUN00021.JPG [gcp02]

1 Like

This should work, but it might introduce further distortions since the geogrpahic distribution of the GPCs is not ideal.

gcp_list.txt (fixed mis-named GCP):

+proj=longlat +datum=WGS84 +no_defs
3.784279 43.436978 1.5 2559 137 YUN00004.JPG [gcp01]
3.784279 43.436978 1.5 2557 442 YUN00005.JPG [gcp01]
3.784279 43.436978 1.5 2587 761 YUN00006.JPG [gcp01]
3.784279 43.436978 1.5 2594 1085 YUN00007.JPG [gcp01]
3.784279 43.436978 1.5 2603 1430 YUN00008.JPG [gcp01]
3.784279 43.436978 1.5 2597 1742 YUN00009.JPG [gcp01]
3.784279 43.436978 1.5 2588 2060 YUN00010.JPG [gcp01]
3.784279 43.436978 1.5 2551 2389 YUN00011.JPG [gcp01]
3.784279 43.436978 1.5 1528 137 YUN00015.JPG [gcp01]
3.784279 43.436978 1.5 1502 473 YUN00016.JPG [gcp01]
3.784279 43.436978 1.5 1559 741 YUN00017.JPG [gcp01]
3.784279 43.436978 1.5 1570 1034 YUN00018.JPG [gcp01]
3.784279 43.436978 1.5 1568 1360 YUN00019.JPG [gcp01]
3.784279 43.436978 1.5 1571 1683 YUN00020.JPG [gcp01]
3.784279 43.436978 1.5 1570 1997 YUN00021.JPG [gcp01]
3.784279 43.436978 1.5 1525 2295 YUN00022.JPG [gcp01]
3.784667 43.437150 1.5 2356 416 YUN00002.JPG [gcp02]
3.784667 43.437150 1.5 2270 649 YUN00003.JPG [gcp02]
3.784667 43.437150 1.5 2313 1056 YUN00004.JPG [gcp02]
3.784667 43.437150 1.5 2320 1363 YUN00005.JPG [gcp02]
3.784667 43.437150 1.5 2335 1675 YUN00006.JPG [gcp02]
3.784667 43.437150 1.5 2345 1991 YUN00007.JPG [gcp02]
3.784667 43.437150 1.5 2309 2313 YUN00008.JPG [gcp02]
3.784667 43.437150 1.5 2331 2629 YUN00009.JPG [gcp02]
3.784667 43.437150 1.5 2296 2929 YUN00010.JPG [gcp02]
3.784667 43.437150 1.5 1214 420 YUN00013.JPG [gcp02]
3.784667 43.437150 1.5 1234 742 YUN00014.JPG [gcp02]
3.784667 43.437150 1.5 1257 1042 YUN00015.JPG [gcp02]
3.784667 43.437150 1.5 1258 1380 YUN00016.JPG [gcp02]
3.784667 43.437150 1.5 1265 1634 YUN00017.JPG [gcp02]
3.784667 43.437150 1.5 1558 1918 YUN00018.JPG [gcp02]
3.784667 43.437150 1.5 1254 2238 YUN00019.JPG [gcp02]
3.784667 43.437150 1.5 1259 2556 YUN00020.JPG [gcp02]
3.784667 43.437150 1.5 1243 2863 YUN00021.JPG [gcp02]

I’m using GCP Editor Pro for visualizing the GCP data you’re sending me, if that helps.

On a machine with 4GB RAM and 4GB SWAP, it processed until failing due to an empty pointcloud, so it looks like the GCPs did not help reconstruction.

[ERROR]   Uh oh! We ended up with an empty point cloud. This means that the reconstruction did not succeed. Have you followed best practices for data acquisition? See https://docs.opendronemap.org/flying/. Also, since you used a boundary setting, make sure that the boundary polygon you specified covers the reconstruction area correctly.

Are you able to refine the list of images per GCP down to a more typical 3-5 images per, and are you able to idenfity other features you can use that have a better spatial distribution in your mapped area (around the edges maybe)?

1 Like

I have just restarted a treatment with your file, it is impressive that it worked, what did you change in the file?
Is it better to make a GCP file manually or to create it from GCP Editor?

Apart from a better coverage of the area with the GCP, what do you advise me as input parameter to get a better precision on the orthophoto and more accurate DEM DTM ?

1 Like

All I did for that run was correct a syntax mistake and run the process with defaults. However, it did not work properly here, but did not fail with Out-Of-Memory, at least.

I think using the GCP Editor is easier than manual, by far (reminder: I work for UAV4Geo, but this recommendation has not changed).

Using actual/real GCPs by placing markers or paint marks in the scene and surveying the locations of the markers using a high-accuracy GPS would greatly enhance precision/accuracy, provided your spatial distribution of GCP markers is good. Working off of features in the environment can help sometimes, but it isn’t a good replacement for proper a-priori in-situ GCPs.

2 Likes

Okay I thank you for the tips, I understood well for the use of PCGs.

Now what I would like to know are the parameters to enter when I launch my treatment. Which values would help me to increase my accuracy, for example for the GPS accuracy, DEM parameter…

2 Likes

This very well may be an interative process for you, as it normally is for me (and I’m sure most others).

If you have knowledge of your dataset that helps, like you know your GPS accuracy is closer to 5m than 10m, you should adjust --gps-accuracy accordingly. If you know you’re working in difficult areas, you should consider raising --feature-quality as high as you can, and maybe bump up --matcher-neighbors and --min-num-features.

I think a better way to explore this stage might be by having concrete examples of things you don’t like about how a particular dataset procecssed with certain settings, so you can compare how changing a setting helped (or didn’t). Small, bite-sized goals on how to improve so you can keep track :slight_smile:

2 Likes

Thank you for your time!
I already know my parameters such as the precision of my GPS, the resolution of my images… I will try to find by myself the parameters to get a better DTM / DSM.
If I don’t succeed, I will open a new topic about this.

2 Likes

You can continue here, if you wish!

Anything you want to ask about, please do!

Also, if you’re going to be comparing, having the processing parameters before/after and a screenshot before/after will be hugely helpful!

Also, don’t forget our docs:
https://docs.opendronemap.org

I’m working on expanding it so that you’ll have a nice summary of how each value works, some pictures for comparison, and some guidelines on when you might want, or not want, to adjust it.

1 Like

Okay, thank you for your help, I will not hesitate if I have any questions!

Yes, I have read all the official documentation, but some of the input parameters are still a bit unclear

1 Like

I know :sob:
I am going to complete all of them, I apologize for the delay!

1 Like

So after trying to get a DTM and a DSM as correct as possible with different parameters, I get this, I put you the models with the data in the link:

For the DSM I have the lowest values in blue and they go from -10 to +10m.
For the DTM, I have the highest values in blue and they go from -10 to +6m.
I know that my GCP’s are not in the most ideal position, they were taken with a rtk and the orthophoto is very accurate, however for the mnt and mns you can see that the values are not accurate. Also where there is water we have the highest values which should be the opposite. We can also see on the screenshot in the 3D model the absolute 0 is not well set.

So I wanted to know how I could improve my model, I had to be able to operate it with a maximum of 1m deviation on the whole model.

Moreover I did not put a layer limit for the area so the model extends on the coast with very erroneous values which is normal.

Translated with DeepL Translate: The world's most accurate translator (free version)

1 Like

Hey Saijin, did you have time to look at my problem on the mnt?
I tried with an acquisition at 40m with the same GCP instead of 100m but the mnt was not improved. However the GCP are taken with a gnss rtk

Thank you for your help

1 Like

I am not sure what is occuring at the moment, sorry.

Okay, no problem

1 Like