Ground control point workflow
Ground control point workflow¶
Ground Control Points (GCPs) are points with known high accuracy coordinates located in the area of interest. Ground control points serve as a tool to achieve precise absolute position in the photogrammetric scan project. GCPs are required for projects made of images without any GPS information if geoeferenced results are expected. When used in conjunction with images that do have consumer grade GPS data, GCPs help to greatly reduce the error of geolocation. GCPs can also serve as a tool used to evaluate 3D reconstruction accuracy.
The coordinate values for GCPs are obtained by using survey grade equipment and traditional methods or other sources with accurate georeferencing data.
Consumer grade GPS devices provide unstable accuracy results depending on a number of factors, at absolute best 1 to 3 meter accuracy can be achieved horizontally and up to 10 meters vertically. With professional survey grade ground control points, accuracy of a few centimeters can be achieved. As an alternative Real Time Kinematic (RTK) or Post Process Kinematic (PPK) systems can be used which utilize a base station for GPS signal correction in real-time or in post processing. Drones and cameras equipped with RTK or PPK compatible devices are an order of magnitude more expensive but provide comparable accuracy to survey grade GCP's while eliminating the need to physically measure GCP's.
There are two main types of workflow when adding GCPs for accurate georeferencing:
Adding ground control points manually using the Pixpro software while having GCP coordinates in a traditional media such as a notebook or a piece of paper.
Importing ground control point tables from a text file. (supported formats: .txt, .csv, .pxg)
Both types of workflow start with creating a new project and selecting the appropriate coordinate system. Coordinate system of the GCPs that are intended to use in the project must be selected.
After the appropriate coordinate system is selected the photos are uploaded using the photo manager which will appear automatically. Once the photos are loaded reconstruction can be done. At this point only the initial 3D reconstruction is required, Dense Point cloud and other layers can be generated later.
After the reconstruction a single layer is created and loaded - Sparse point cloud. Sparse Point Cloud (SPC) already represents the 3D structure of the scene, although it can be harder to see because there are not too many points as opposed to the Dense Point Cloud (DPC). Having the SPC means that we can begin working with GCP's. The SPC is georeferenced already if the photos had the GPS data embedded and it is not georeferenced if the pictures did not. This can be easily identified by the blue markers near the photos in the photo layer. If the markers are red the pictures were not taken in to the construction. If the pictures were georeferenced map view can be used to quickly find adjacent pictures near the GCP's, more on that below.
Manual GCP workflow¶
If the GCP's are stored in a traditional media, they can be manually entered directly in the software. Makes sure the SPC is loaded and press in the toolbar to load the ground control point manager. Add ground control points manually by pressing Add gcp:
When Add gcp window appears you can enter the coordinates manually in WGS84 or UTM formats in the top part, just mark the appropriate option GEO or UTM. (NOTE: if you have collected GCP's in another coordinate system you will be able to use them as well but with the help of creating a text file and using import function which will be described further down) If elevation information is known enter the value in the elevation field. If just approximate coordinates are needed a place on the map can be selected also. Coordinate values will appear automatically if a place on the map is selected.
After inputting or clicking on the map a blue marker appears. If the marker seems in the right place press ok to proceed.
After pressing OK a new window appears which is used to add gcp projections. Next the GCP import workflow will be described, for how to input GCP projections skip to the GCP projections workflow.
Import GCP workflow¶
GCP information is usually stored in simple text file formats such as .txt and .csv. These files may come from the professional surveying station or they can be created by the user. A more complicated CSV file with a header and additional information looks like this:
Creating a simple text file with accurate information for Pixpro to read is an easy task and it is recommended to do so for beginner users. To create a GCP text file one must follow a simple column structure. In each row of text data should contain the same structure. The most convenient and simple line structure for the GCP data would be: GCP label-space-latitude-space-longitude-space-altitude. Using this structure we can create a text document using notepad that can look like this.
Pixpro should not have any problems with either of these files, most importantly the data and its structure should be correct.
If the GCP file you are importing is .pxg file format, which is native Pixpro format (exported from Pixpro) the process described below should happen automatically, without any additional input and the file structure should be correct.
Coordinates in the text files can be entered in any coordinate system, and the coordinate system can be selected while importing the file. If the text file seems tidy and has correct data it can be imported into the GCP manager in Pixpro software. To import a GCP file press on to bring up Ground Control Point manager. Press Import GCP's and select your created text file. After importing Ground Control Point Import window appears.
In this window we must select correct fields and options for GCP's to work flawlessly.
Starting row selection - Select from which row our relevant GCP data starts. This option is used if the first or more rows contain data that are not GCP's. For example generated equipment name, column headers (as seen in our examples above) or other miscellaneous data.
Delimiter selection - This option allows selecting the type of delimiter in rows of data - a symbol between coordinate values. In our case our delimiter is just a simple space, so we select "Delimited by Space". Otherwise delimiter symbols can be commas, semicolons or tabs.
Label field selection - This option allows selecting which field represents the label of the GCP. In our case it is the very first thing in the each row. So we select the first option which is already seen as the label of the first row (GCP0005). This helps to recognize the fields more easily and the label field value will be used as a layer name in the layers panel.
Latitude field selection - In this field select the GCP latitude value. In our case it is the second value (after the label) in the row and correspondingly second value in the dropdown menu.
Longitude field selection - In this field select the GCP longitude value. It is the third value in the rows of the text file - and it is the third value in the dropdown menu.
Altitude field selection - In this field select the altitude value of the GCP's. It is the fourth value the rows of the text file and it is usually a lot shorter than the latitude and longitude values, so it is easily distinguishable. Also do not forget to choose the appropriate altitude field units. By default it is meters, but if you are using different units select accordingly.
Note: If the GCP's that are being imported happen to not have the altitude information, do not select this field and check the Import as 2D GCP checkmark at the top of the window.
- Time and Time zone fields - these fields are not necessary, but sometimes survey stations provide time data for various purposes. Select these fields accordingly to have time data displayed.
If at this point all field data seems correctly entered there is one more very important thing to select: appropriate coordinate system. Us the coordinate system dropdown menu to reveal suggested coordinate systems, but if you do not see the one that you need select more. Coordinate system window appears.
Here you can select coordinate system from the list dropdown menu or select from SRID list by zone code. More advanced users can upload or enter coordinate system data manually using Well Known Text (WKT) definition format. It is imperative to select the correct coordinate system or the GCP's will not be placed correctly. In our case we use the dropdown menu in the Ground control point window and select LKS94.
After the correct system is selected the data preview window will display GCP values and GCP locations on the map which can give an idea if the correct system is selected. If the GCP's seem to be incorrectly place, try going over the previous steps again. Keep in mind that orthophotographs from the map can be outdated.
Correctly selected fields and GCP previews in the map should look similar to this:
Now we can press ok to proceed. Now the GCP manager windows appears containing the newly added GCP's with the map preview on the right. Here we can add, remove or edit our GCP's.
At this stage we are ready to proceed to the next part of the GCP workflow - working with GCP projections in photos.
GCP projections workflow¶
To tell the software where the GCP's are located in actual project photos we need to assign projections to all GCP's. There are two main ways to begin adding projections to GCPs.
One can use the photos layer to add the projections.
GCP manager can be used right away to add the projections.
Photo layer workflow¶
If the project has no prior GPS information - photos do not contain any location whatsoever, or the location information is generic and incorrect, sometimes it is much easier to first find a marker in the photo, and then add the projection, not vice versa.
To inspect all photos make sure photos are enabled in the Layers menu. Then go to Photos tab in the main window. Photo that will be selected in the layers menu - will appear enlarged in the main window. Any picture can be inspected in detail, mouse wheel can be used to zoom in. When a marker is visible in the photo a GCP that has been imported can be added. To add a particular GCP to a marker that is visible in the photo press add gcp button on the left part of the window . A list of all imported GCP's will appear. Select the appropriate GCP and then select the appropriate marker position on the photo. When done, press OK button on the tools panel on the right. After pressing OK user will be taken to the GCP manager window to finish adding the projections. Further workflow is identical to GCP Manager workflow descrbied below.
GCP Manager workflow¶
To begin double double-click on any GCP in the Ground Control Point manager window or press Edit GCP. Edit Ground Control Point window appears.
In this window we can see several different sections:
- GCP parameters - This section shows a few different things:
Name - Label name of the GCP.
Projections - amount of images to which the GCP is projected in relation to whole image set.
Projection Error - point projection error in pixels.
Origin from ortho checkbox - automatically checked if the GCP was added manually in the map.
Status - GCP status. Either enabled or disabled from the layers panel. Only the enabled GCP's will be used for georeferencing.
GCP location information - basically all the location and elevation data that was entered while creating or importing the GCP. Can be edited by press the Manual button.
Manual GCP coordinate editing - Using this button we can bring up a window that is identical to the manual GCP addition window and edit longitude, latitude and altitude values manually.
Photo view - Section where the selected picture is displayed.
List view - Section where all project photos are listed. Photos with projections that have been selected automatically by the software are labeled as 'estimated' and those that have been modified by the user are labeled as 'modified' or 'manual'. The list also contains picture name, projection X Y coordinates in pixels, distance to camera center (GCP position distance from the photo center) and projection error in pixels.
Approve/Unset buttons - buttons used when filtering through suggested projections. If a software suggested projection seems to be perfect - approve button is used. If the projection seems bad and uncorrectable - unset button is used. TIP: to speed up approving or unsetting projections keyboard shortcuts can be used. Press F3 button to approve a projection or F4 to unset a projection. After using one of these shortcuts the next projection is selected automatically.
Map view - view in which the GCP is displayed alongside photos in a map. To see the picture locations pictures must be enabled in layers tab. This view helps identifying photos which are near the GCP in question to find which photos to use when adding projections. The GCP is displayed as a green dot, selected picture is yellow and suggested (estimated) pictures are white:
After getting to know the Edit Ground Control point window we can begin adding projections to the pictures. First select a picture in map view that is near the GCP or list view that has estimated GCP projection. Find the place where the GCP marker is located in the photo. In this case we will look for the marker numbered 5 (we are adding projections to the GCP that is labeled with a number 5 so naturally we need to find the corresponding marker). In our case the marker is standard black and white square, but it can be anything from a natural feature like a rock or painted dot. You can zoom the picture in to get a clearer look. After finding the appropriate marker left mouse click on the markers center to add a precise projection. A yellow GCP indicator should appear where it was clicked.
As you can see in the example we selected the center of the marker with a number 5 on it. Note that the picture in the list view is now regarded as modified (in green text) as opposed to estimated. This exact process has to be repeated at least three times. After marking 3 pictures precisely the software will adjust itself and estimate much more accurate projections in all images where the GCP is visible.
Now the 2 pictures that user has precisely marked are designated as 'manual' and we have much more estimated projections. Those estimated projections now have to be reviewed and either approved, edited or unset. If a projection is correct and the yellow GCP indicator is seemingly in a correct position on the picture, all you need is to press approve button. If the yellow indicator is placed somewhat incorrectly, go ahead and precisely mark where it should be. If the indicator is placed incorrectly and there is no way to correct it (for example a tree branch obstructs the view) press the unset button. After doing all the work to pictures with the projected GCP, all relevant images should be designated as manual. This process has to be repeated for all the GCP's. Projections can be designated by mouse and by entering X and Y coordinates in pixels.
Ideally projection error should not exceed more than a few pixels. If all is well press OK and proceed to make all other GCP's using the identical process as described before. When all is done the GCP manager window should show the GCP with their projection counts.
The more projections - the better, but all projections have to be correct. It is better to unset than to mark a projections badly. Now that all the GCP's have their projections we can press ok and the GCP's will be added to the layers panel and should be visible in the Map and 3D view tabs as blue dots.
After we projected all GCP's to the images we can go back to the 3D view window. In this window the distance between actual GCP positions from survey grade data and their triangulated projections on the point cloud will be connected with green lines. These green lines represent the distance between survey grade GPS data and actual 3D reconstruction made with less accurate GPS data from the images. The distance of the green lines are GCP errors visualised. If these errors were too great the Pixpro software would detect that before georeferencing and warn the user, just in case there was error in the GCP or GPS data.
Project is now ready to be georeferenced using the GCP's. To do that go to Reconstruction in the menu bar and select Georeference to Ground Control Points. A pop-up dialog will appear stating that elevation models, orthophoto and contour lines cease to be accurate. As we have not generated these layers yet the dialog serves only as a warning. If the GCP's were entered after these layers were generated, DEM, orthophoto and contour lines will have to be regenerated again. Now we can proceed to generate a dense point cloud, digital elevation map, orthophoto and all other layers that are needed. Newly generated layers will also be georeferenced by the GCP's and there is nothing more left to do in regards to GCP's, at this point the project will have survey grade georeferencing accuracy.
If a GCP is selected in the layers panel it will be highlighted in yellow while unselected GCP's are blue dots. GCP's that were used in the goereferencing will be designated in blue while photos will no longer be marked as blue. GCP's that were not used in the georeferencing will be marked in red.
Every selected GCP will have its properties shown in the properties panel. Properties panel includes information about the selected GCP:
- Name: shows the GCP label.
- Projections: this will show available/set projections number. Available projections are a number of images that the GCP is visible on vs the set projections - number of images that have user defined projections.
- Referencing: included or not included. The status included means that the GCP is used for current georeferencing.
- Ref. Error: displays the referencing error in selected units. Referencing error is the distance between the GCP coordinate to the projection on the 3D reconstruction. If the referencing error seems large - use the optimize process in the workflow menu.
Position section displays the original GCP coordinates in its respective coordinate system. The values should be identical to those in the imported GCP file.
Reference section displays the GCP position in the 3D scene using the current project coordinate system. If the reference error is 0, the reference and position section will have identical values.
The properties panel can be seen in images above and below.
Arbitray GCP workflow¶
Arbitrary system GCPs are GCPs that are not made in a geographic coordinate system. These GCPs are usually used where the GPS signal is not possible (underground, indoors, remote areas), or arbitrary grid systems are used to obtain more accurate points than a GPS system can provide (mining, urban local grids). Usually these GCPs are expressed in meters, that represent relevant position between the points. The workflow of an arbitrary system is the same as for geographic coordinate system GCPs as described above.
When a project is created with intention to use arbitrary GCPs it is important to choose the Arbitrary coordinate system in the coordinate selection menu when creating the project. Also make sure that the appropriate units are selected when importing arbitrary GCPs (meters of feet are available as options)
After selecting appropriate units proceed with adding projections in the same manner as described in GCP projections workflow. Finalize by going to the Referencing tab in the top menu and choosing Reference to Ground Control Points. After a short process your project will be referenced in an arbitrary coordinate system. The position on the map will not be available, but the project scale will be correct according to the GCPs thus enabling all measurements in the software.
An example of arbitrary system used in a photogrammetric underground scan below. On the left is a diagram representing the arbitrary GCPs, on the right is a dense point cloud seen as reconstructed in Pixpro.
An example of a gravel pile scan with GCPs as referencing.