Support Website Contact Support Blog

GCP/Checkpoint Accuracy


I marked 7 GCP’s and 3 checkpoints. I noticed that the error for some reason was much more for the checkpoints as opposed to the GCP’s I created. The GCP’s seemed to be spot on. I know that checkpoints don’t go into the computations, but I’m just trying to understand my absolute accuracy here.

Is it possible that I just didn’t match images good enough for the checkpoints as opposed to the GCP’s? I don’t understand the purpose of checkpoints if each GCP can give you their own margin of error from their original spot before you correct with image matching.

Please explain this to me, as maybe I’m not really understanding checkpoints. I’ve attached my QR. I’m going to need some detail, so please don’t just send me a link to an article as I’ve read all of them that Pix4d has to offer on this subject.

Thanks ahead of time!

Hi Brendan,

GCPs are used to georeference the project improve the absolute and relative accuracy of photogrammetry projects while Checkpoints are used for quality assessment.

Checkpoints are used to assess the absolute accuracy of the model. The marks of the checkpoints are used to estimate its 3D position as well as potential errors in the clicks. This way, the relative accuracy of the area of the checkpoints may improve. The difference between the initial and the computed positions of the checkpoints is displayed in the quality report, and it gives an estimation of the absolute accuracy of the model in the region.

We generally recommend that each project has at least 5 GCPs distributed throughout the project area. If the project area is quite large then more GCPs are needed. We recommend measuring more GCPs, so some can be used as checkpoints to assess the accuracy of the project.

The error that each checkpoint gives is highly related to how close or far they are located from the GCPs. So it really depends on the distribution of the GCPs and checkpoints at the same time.

Unfortunately from the picture, you provided to us it is not clear how the GCPs and checkpoints are distributed. Can you please set all checkpoints as GCPs and select Menu Process > Reoptimize and Menu Process > Generate Quality Report and send us the quality report in .pdf format?


Got it.

Ok next question is simple. My “Z” values were incredibly off using the 96 Geoid.

I had my lat long in WGS 84/UTM 16N.

My surveyor then sent me “Z” values in MSL taken from the 12B Geoid.

Am I able to simply change the “Z” values in my GCP’s based off the 12B Geoid, in other words manually changing them, then reoptimize, but keep the lat/long values as the same?

Because the lat/long seems to be spot on, whereas my only discrepancies lie in the “Z” values. From what I read on this forum, it seems that this works as a solution, being that I’ve heard of many issues with the EGM 96 Geoid. But I just wanted to make sure that if I do this I can still expect accurate results.


Hi @bkeane,

In my understanding, the vertical coordinate system of your GCPs is NAVD88 height - 12B Geoid but instead, you used the EGM 96 Geoid. Is this correct?

I have two suggestions for you:

In PIX4Dmapper
Please select as a GCP and Output Coordinate System the Arbitrary option as shown in the image below and reprocess:

If possible share with us the quality report in .pdf format.

In PIX4Dmatic
The other option is to use the free 15-day-trial of PIX4Dmatic where the specific vertical coordinate system and the geoid are supported. You can download the software from this link:

And on the link below you can find a list of the supported Vertical CS and the geoids supported in PIX4Dmatic.


Thanks so much.

I’ve already processed this project based on manually putting those arbitrary numbers into the “Z” column, even though it was originally set to the EGM 96 Geoid.

With this being said, my “Z” values are still correct, they are what they are.

I guess what I’m asking is, are these 2 scenarios essentially the same and will yield in accurate results:

1). Setting the vertical coordinate system to arbitrary, entering your “Z” values.


2). Setting the vertical coordinate system originally to EGM 96 Geoid “Z” values, but then manually changing them in the “Z” column to arbitrary “Z” values. At this point, essentially the “Z” values would no longer be based on the EGM 96 Geoid, since I manually changed them in the “Z” column to 12B Geoid numbers.

Thanks ahead of time.

Here is my QR:

Hi @bkeane,

I am not sure I understand the second scenario. When you say “Setting the vertical coordinate system originally to EGM 96 Geoid “Z” values, but then manually changing them in the “Z” column to arbitrary “Z” values” how do you mean to do that? Can you give me some more information?

You also mention that you manually changed them in the “Z” column to 12B Geoid coordinates. Because we do not support this Geoid I would suggest to you to select as a GCP and Output Coordinate System the Arbitrary option as shown in the image above and reprocess. This way the output vertical coordinate system although it would be set to Arbitrary the Vertical Coordinates will be transformed into the “Arbitrary” vertical coordinate system you used, which is based on the 12B Geoid.

Let me know if this works.



So what I meant was, after I had originally set it to the EGM 96 Geoid and processed the entire project, I realized my “Z” values for the GCP’s were way off.

So after that, I went in to the GCP menu and then manually changed all of the “Z” values to 12B values, and then I reprocessed the whole thing. The GCP menu allows you to go in and change the values manually by simply clicking on the desired cells, and then you see a text cursor with highlighted live text that you can change.

Does this make sense? I am just making sure that in doing this I am ok with my data. It seems as though I am, only because my XY values were spot on, only “Z” values were off in MSL.

Hi @bkeane,

Do you mean that you changed the values of the GCP coordinates? Were they in another coordinate system?

If yes, then this is the correct workflow. Either correct them manually or import a corrected .csv file.
Then you can select as a GCP and Output Coordinate System the Arbitrary option as shown in the image above and reprocess. Are those the steps you followed? How are the results?


The attached is showing exactly what I’m referring to. I changed the “Z” to 12B values even though the project was originally set to EGM 96 Geoid.


You will have to now set the Vertical Coordinate System from EGM 96 Geoid–>to Arbitrary and process again.

The other way would be to process in PIX4Dmatic.


Ok, sounds good.

So I can do this proceeding from Step 2 and I won’t have to re-process step 1 correct?

Also, I tried re-optimizing after switching to arbitrary, however I received this message:

[Error]: Cannot reoptimize: coordinate systems of param and processing results are not the same!

Thanks for all of this!


I would suggest processing again the project. All steps.

Let me know if you experience any issues.