Paper · 2026-10-01 · cs.CV
The Impact of Processing Parameters on High-Accuracy Measurements in UAV Photogrammetry
Full-factorial study of 768 Bundle Block Adjustment (BBA) processing variants in Agisoft Metashape on ten UAV surveys (220 ha). Number of GCPs, extra camera-calibration corrections and PPK georeferencing matter most. Best variant: 16 mm 3D RMSE at check points, worst 303 mm. Tuned settings halve the systematic vertical error (14 to 7 mm). Author-reported.
Multi-view reconstructionBundle adjustmentThin-plate spline (TPS) warpOutlier rejectionphotogrammetryuavbundle-adjustmentgeoreferencingdeformation-monitoring
AI-compiled by claude-haiku-5-5 on 2026-11-01, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.
In plain words
A drone photographs a patch of land, and special software stitches the photos into a precise map and a 3D model. Those models are only as good as the software's internal settings, and most people use the defaults. This study tried a very large grid of settings combinations on ten drone flights over the same 220 ha site, and measured how far each resulting model was from known survey points.
The biggest effects came from three choices: how many ground markers were placed, whether extra camera-correction terms were switched on, and how the drone's camera position was determined (a local base station with post-processing versus a network correction service). The best combination was far more accurate than the worst, and the same settings also cut the systematic drift in measured ground movement. The authors' conclusion is that careful tuning can reach high accuracy with fewer ground markers, which means less time in the field.
TL;DR
- The paper runs all 768 combinations of eight processing parameters in Agisoft Metashape on ten UAV datasets from one 220 ha site §2.1 tab. 1.
- The best variant reaches 16 mm 3D RMSE at check points; the worst reaches 303 mm [abstract].
- Extra camera-correction terms (AC), at least five ground control points, and PPK camera positioning matter most §3.1 fig. 6.
- With the tuned settings, systematic vertical displacement error falls from 14 mm to 7 mm, while random error stays at 6 to 7 mm §3.2 tab. 5.
Problem
Commercial photogrammetry software is often used as a black box with default settings. Prior work studied ground-control-point (GCP) layout and camera positioning, but rarely the effect of the bundle-block-adjustment (BBA) settings on the final accuracy, and rarely for ground-deformation work at this scale §1. The authors also note that default settings can be insufficient when input data quality is poor or when very high accuracy is required §1. All conclusions are tied to this study's conditions (area, resolution, GCP accuracy) §1.
Method
Study setup §2.1. Ten surveys in 2022–2023 over about 220 ha. A DJI Matrice M300 RTK carried a Zenmuse P1 camera (full-frame, 8192 × 5460 px, DL 35 mm lens). The mission had 80 % forward and 60 % side overlap, terrain-following mode, and a ground sampling distance (GSD) of 10 mm. About 7,500 images were taken per session. The GCP and check-point (CP) networks are disjoint, measured once, and reused unchanged for every variant.
Factors §2.2 tab. 1. Eight factors, full-factorial, 2 × 4 × 2 × 2 × 2 × 3 × 2 × 2 = 768 variants, each run on every series:
- PCMD: how camera projection centres are fixed, RTN (virtual reference stations from ASG-EUPOS) or PPK (own static base station, baseline under 1 km).
- NGCP: 1, 5, 9 or 23 GCPs. Higher counts add new points without moving the earlier ones.
- GCPA: a priori GCP accuracy, 25 mm or 15 mm (assumed RMSE per coordinate).
- AC: additional self-calibration corrections off or on. When on, the 96-parameter model of Tang et al. §2.2 is fitted on top of Brown's model.
- TPA: tie-point accuracy, 1 px or 2 px.
- PCA: a priori accuracy of camera centres, 100 mm, 50 mm or "estimated" (from the PPK or RTN processing).
- TPF: tie-point filtration, off or on fig. 2.
- TR: post-adjustment seven-parameter similarity transform (3 translations, 3 rotations, 1 scale), off or on.
Processing sequence per variant §2.2 fig. 2.
- Align images with 40,000 key points and 10,000 tie points per image, frame camera model. Brown's model estimates principal point, focal length, k1–k4 and p1–p2 in every variant §2.2.
- Run an initial BBA with the factors fixed: AC off, TPA 1 px, PCA estimated, TPF off, marker accuracy 0.5 px, camera accuracy 10°. This gives 16 primary variants (2 PCMD × 4 NGCP × 2 GCPA) §2.2.
- Inspect exterior orientations for gross errors. Images with clearly wrong positions (under 1 % of the total) are excluded from later steps §2.2.
- Run the final BBA with each variant's target settings, applying TPF when on (pseudocode below) §2.2.
- Apply the transform (TR) after the final BBA when on §2.2.
- Rank variants by the mean 3D RMSE at the CPs over all series §2.3.
# One processing variant, run on each measurement series [§2.2] [tab. 1]
# Input: images, GCP and CP coordinates, one setting per factor
# Output: 3D RMSE at the CPs for this variant
def run_variant(images, gcps, cps, setting):
# Alignment with 40,000 key points and 10,000 tie points per image [§2.2]
tie_points = align_images(images, key_points=40000, tie_points=10000)
# Initial BBA with AC off, TPA 1 px, PCA estimated, TPF off [§2.2]
adjustment = bba(tie_points, gcps, initial_fixed_settings())
# Remove images with clearly wrong exterior orientation (under 1 %) [§2.2]
images = drop_gross_errors(images, adjustment)
# Final BBA with the target settings. The paper does not say how tie
# points are rebuilt after images are dropped; this keeps the rest [§2.2]
tie_points = keep_points_of(tie_points, images)
if setting.tpf:
tie_points = filter_tie_points(tie_points, gcps, setting)
adjustment = bba(tie_points, gcps, setting)
# Seven-parameter transform after the final BBA, if TR is on [§2.2]
if setting.tr:
adjustment = similarity_transform(adjustment, gcps)
# Ranking metric: 3D RMSE at the check points [§2.3]
return rmse_3d(adjustment, cps)# Tie-point filtration [fig. 2]
# Thresholds are unitless, as in the Metashape gradual selection tool [fig. 2]
def filter_tie_points(points, gcps, setting):
# Remove points seen in fewer than 3 images [fig. 2]
points = [p for p in points if p.num_images >= 3]
# Remove points with reconstruction uncertainty above 8 [fig. 2]
points = [p for p in points if p.reconstruction_uncertainty <= 8]
# Remove points with projection accuracy worse than 8 [fig. 2]
points = [p for p in points if p.projection_accuracy <= 8]
# Reprojection errors need an adjustment; the paper does not say which
# one is used first, so this runs one BBA on the remaining points [fig. 2]
adjustment = bba(points, gcps, setting)
# Iterate: drop points with reprojection error above 0.25, re-adjust,
# and stop once the maximum reprojection error is below 0.5 [fig. 2]
while True:
points = [p for p in points if reproj_error(p, adjustment) <= 0.25]
adjustment = bba(points, gcps, setting)
if max_reproj_error(adjustment) < 0.5:
return pointsDeformation pipeline §2.4 fig. 3. Orthomosaics are produced at 10 mm/px and DEMs at 20 mm/px §2.4. Eight time intervals are used, spanning May 2022 to September 2023. December 2022 is excluded because snowfall prevented automatic displacement determination §2.4.
- Divide each series into 30 m square registration windows (RWs) on a 30 m grid. The comparison-series fragment is enlarged by 1 m on each side §2.4.1.
- Classify urbanized pixels by the vegetation index (G − B) / (R + G + B) on standardized 0–1 values, threshold 0.019. Skip the RW unless at least 15 % of its pixels are urbanized §2.4.1.
- Estimate horizontal shifts (d_n, d_e) with weighted normalized cross-correlation (WNCC) §2.4.1.
- Shift the comparison DEM by the horizontal shift, subtract heights over pixels with weight 1, and take the median as d_h. Keep d_h only if the median absolute deviation of those differences is at most 35 mm §2.4.1.
- Remove vectors longer than 0.6 m (horizontal) or 2.0 m (vertical) §2.4.1.
- Fit a first-degree polynomial with RANSAC in 150 m × 150 m patches, applied per 50 m × 50 m filtration window. Outliers lie more than 3 cm (horizontal) or 5 cm (vertical) from the fit. A horizontal vector is an outlier if either component is §2.4.1.
- Remove isolated vectors that have no neighbour within a 100 m search radius §2.4.1.
Tilt and strain §2.4.2. Tilt changes and horizontal strains are first differences of the filtered vertical (tilt) and horizontal (strain) displacements on the regular grid, with node spacing S (the RW spacing, 30 m §2.4.1). They are placed halfway between nodes. The paper gives these as unnumbered display equations:
t_n\left(n+\tfrac{S}{2}, e\right) = \frac{d_h(n+S, e) - d_h(n, e)}{S}
t_e\left(n, e+\tfrac{S}{2}\right) = \frac{d_h(n, e+S) - d_h(n, e)}{S}
\varepsilon_n\left(n+\tfrac{S}{2}, e\right) = \frac{\sqrt{\left(d_n(n+S,e)-d_n(n,e)+S\right)^2+\left(d_e(n+S,e)-d_e(n,e)\right)^2}-S}{S}
\varepsilon_e\left(n, e+\tfrac{S}{2}\right) = \frac{\sqrt{\left(d_e(n,e+S)-d_e(n,e)+S\right)^2+\left(d_n(n,e+S)-d_n(n,e)\right)^2}-S}{S}
# Tilt and horizontal strain at one grid node [§2.4.2]
# Node (n, e) is "0"; "N" = node (n+S, e); "E" = node (n, e+S)
# Units: displacements in mm, S in m, tilt in mm/m (implied, see Pitfalls)
def tilt_and_strain(node, north, east, S):
# Tilt change along north, at (n + S/2, e) [§2.4.2]
tilt_north = (north.dh - node.dh) / S
# Tilt change along east, at (n, e + S/2) [§2.4.2]
tilt_east = (east.dh - node.dh) / S
# Strain along north: stretched segment length minus S, over S [§2.4.2]
length_north = sqrt((north.dn - node.dn + S) ** 2
+ (north.de - node.de) ** 2)
strain_north = (length_north - S) / S
# Strain along east, at (n, e + S/2) [§2.4.2]
length_east = sqrt((east.de - node.de + S) ** 2
+ (east.dn - node.dn) ** 2)
strain_east = (length_east - S) / S
return tilt_north, tilt_east, strain_north, strain_eastError decomposition §2.4.3. Before RMSE, values are excluded as outliers if they exceed 9 cm (horizontal displacement), 15 cm (vertical), 5 mm/m (tilt) or 3 mm/m (horizontal strain). The systematic part is the spatially correlated error, estimated by thin-plate smoothing splines with smoothing parameter 1 (described as a cubic spline interpolant) and 10-fold cross-validation (fit on 9/10 of the nodes, predict 1/10). The random part is total minus systematic §2.4.3. Systematic error is summarised by median absolute error (MAE) across intervals; random error by RMSE across intervals §2.4.3.
Statistics §2.3. The effect of each factor is tested on the mean (two-sample t-test) and on the variance (Bartlett's test) of the AL, ACR and EL CP errors, at α = 0.05. Factors with more than two levels are compared pairwise. AL and ACR are the components of the error vector along and across the flight direction; EL is elevation §2.3.
Two configurations compared in the deformation analysis §2.4 §3.2.
| Factor | Baseline (from Puniach et al.) §2.4 | Enhanced (lowest mean 3D RMSE) §3.2 |
|---|---|---|
| PCMD | RTN | PPK |
| NGCP | 23 | 23 |
| GCPA | 25 mm | 15 mm |
| AC | ON | ON |
| TPA | 2 px | 2 px |
| PCA | 50 mm | estimated |
| TPF | YES | NO |
| TR | YES | YES |
The "enhanced" row is the lowest-RMSE variant. The text does not give its RMSE directly; the abstract's best figure is 16 mm. Section 3.2 writes the TPF row as "ON/OFF" where §2.4 writes YES/NO; the values are the same.
Hyperparameters
| Name | Value | Where | Notes |
|---|---|---|---|
| PCMD (camera centre method) | RTN; PPK | tab. 1 §2.2 | PPK: static base on site, baseline ≤ 1 km, 0.2 s logging; RTN: VRS, nearest CORS 20, 40, 50 km |
| NGCP (GCPs) | 1, 5, 9, 23 | tab. 1 fig. 1 | Points added without moving existing ones §2.2 |
| GCPA (GCP a priori accuracy) | 25 mm; 15 mm | tab. 1 | Assumed RMSE per coordinate §2.2 |
| AC (additional corrections) | OFF; ON | tab. 1 §2.2 | ON: 96-parameter model of Tang et al. §2.2 |
| TPA (tie-point accuracy) | 1 px; 2 px | tab. 1 §2.2 | Other scales proportional to scale §2.2 |
| PCA (camera centre a priori accuracy) | 100 mm; 50 mm; estimated | tab. 1 §2.2 | "Estimated" = from PPK or RTN processing; numeric value not stated |
| TPF (tie-point filtration) | NO; YES | tab. 1 fig. 2 | Thresholds in pseudocode above |
| TR (transform) | NO; YES | tab. 1 §2.2 | 7 parameters: 3 translations, 3 rotations, 1 scale |
| Key points per image | 40,000 | §2.2 | Initial alignment |
| Tie points per image | 10,000 | §2.2 | Initial alignment |
| Camera model | frame | §2.2 | |
| Calibration parameters | f, cx, cy, k1–k4, p1, p2 | §2.2 | Brown model §2.2 |
| Marker accuracy | 0.5 px | §2.2 | Constant across variants; repeatability test §2.2 |
| Camera accuracy | 10° | §2.2 | Stated for the initial BBA only |
| Initial BBA fixed factors | AC OFF, TPA 1 px, PCA estimated, TPF NO | §2.2 | |
| Gross-error exclusion | under 1 % of images | §2.2 | Criterion is visual inspection; no numeric rule |
| Tie-point minimum images | 3 | fig. 2 | |
| Reconstruction uncertainty limit | 8 | fig. 2 | Unitless |
| Projection accuracy limit | 8 | fig. 2 | Unitless |
| Reprojection error (per pass) | 0.25 | fig. 2 | |
| Maximum reprojection error (stop) | < 0.5 | fig. 2 | |
| Orthomosaic resolution | 10 mm/px | §2.4 | |
| DEM resolution | 20 mm/px | §2.4 | |
| RW size | 30 m square; 1 m margin each side | §2.4.1 | Adjacent RW centres 30 m apart |
| Urbanized index | (G − B) / (R + G + B), threshold 0.019 | §2.4.1 | Values standardized to 0–1 §2.4.1 |
| Urbanized RW share | ≥ 15 % of pixels | §2.4.1 | Otherwise no displacement |
| Vertical MAD gate | ≤ 35 mm | §2.4.1 | Else vertical not recorded |
| Max horizontal vector length | 0.6 m | §2.4.1 | |
| Max vertical vector length | 2.0 m | §2.4.1 | |
| RANSAC fit patch | 150 m × 150 m, first-degree polynomial | §2.4.1 | Per 50 m × 50 m filtration window |
| RANSAC inlier distance | 3 cm horizontal; 5 cm vertical | §2.4.1 | |
| Isolation search radius | 100 m | §2.4.1 | Minimum neighbour count not stated |
| Outlier exclusion (RMSE) | 9 cm; 15 cm; 5 mm/m; 3 mm/m | §2.4.3 | Horizontal disp.; vertical disp.; tilt; horizontal strain |
| Thin-plate smoothing parameter | 1 | §2.4.3 | Described as cubic spline interpolant |
| Cross-validation | 10-fold | §2.4.3 | |
| Significance level | α = 0.05 | §2.3 | No multiple-comparison correction stated |
| Static GNSS sampling | 5 s; 45 min per point | §2.1 | Base station ≈ 7 h |
| RTK GNSS epoch | 30 s | §2.1 | Rover on 2 m pole |
| Software | Agisoft Metashape Professional 2.0.3 (build 16960) | §2.2 | Processing; REDtoolbox for PPK; MATLAB R2022b Update 3 for deformation §2.2 §2.4 |
Results
Author-reported. Setup: ten UAV datasets, one 220 ha site, GSD 10 mm, Agisoft Metashape, 768 variants, check-point error §2.1 §3.1.
| Setting | Metric | Baseline | This paper | Source |
|---|---|---|---|---|
| All 768 variants | 3D RMSE at CPs, best vs worst | n/a | 16 mm vs 303 mm | abstract |
| Worst 10 % | mean 3D RMSE at CPs | n/a | 64.8 to 303.4 mm | §3.1 |
| Best 10 % | mean 3D RMSE at CPs | n/a | 15.9 to 19.8 mm | §3.1 |
| Displacement, vertical | RMSE | 21 mm | 14 mm | tab. 5 |
| Displacement, northing | RMSE | 10 mm | 7 mm | tab. 5 |
| Displacement, easting | RMSE | 8 mm | 7 mm | tab. 5 |
| Displacement, vertical | median absolute systematic error | 14 mm | 7 mm | §3.2 |
| Displacement, horizontal | systematic MAE per axis | 4 and 6 mm | about 2 mm | §3.2 |
| Displacement, random | RMSE | 6–7 mm | 6–7 mm | §3.2 |
| Tilt change | RMSE | 0.31 mm/m | 0.27 mm/m | tab. 6 |
| Horizontal strain | RMSE | 0.19 mm/m | 0.19 mm/m | tab. 7 |
Ranking pattern §3.1 fig. 4 fig. 6. Ranking by 3D RMSE is almost identical to ranking by elevation RMSE §3.1. In all top-10 % variants, AC was on, NGCP was above 1, and PPK was used in over 90 % of them §3.1. A transform appeared in over 70 % and TPA = 2 px in over 70 % §3.1. The worst 10 % are dominated by a single GCP and AC off fig. 4.
Statistical tests for CP errors tab. 2 tab. 3. Full tables, values in mm. "#1" and "#2" are the group statistics for Value #1 and Value #2. The first table gives means, the second standard deviations (SD).
| Parameter | Value #1 | Value #2 | AL mean #1 | AL mean #2 | AL p | ACR mean #1 | ACR mean #2 | ACR p | EL mean #1 | EL mean #2 | EL p |
|---|---|---|---|---|---|---|---|---|---|---|---|
| PCMD | PPK | RTN | 0.1 | 0.7 | 0.000 | 2.3 | -4.1 | 0.000 | 14.9 | 21.2 | 0.000 |
| NGCP | 1 | 5 | -1.6 | 0.9 | 0.000 | -0.4 | -1.6 | 0.000 | 54.9 | 9.7 | 0.000 |
| NGCP | 1 | 9 | -1.6 | 1.8 | 0.000 | -0.4 | -0.8 | 0.000 | 54.9 | 6.0 | 0.000 |
| NGCP | 1 | 23 | -1.6 | 0.4 | 0.000 | -0.4 | -0.8 | 0.000 | 54.9 | 1.7 | 0.000 |
| NGCP | 5 | 9 | 0.9 | 1.8 | 0.000 | -1.6 | -0.8 | 0.000 | 9.7 | 6.0 | 0.000 |
| NGCP | 5 | 23 | 0.9 | 0.4 | 0.000 | -1.6 | -0.8 | 0.000 | 9.7 | 1.7 | 0.000 |
| NGCP | 9 | 23 | 1.8 | 0.4 | 0.000 | -0.8 | -0.8 | 0.605 | 6.0 | 1.7 | 0.000 |
| GCPA | 15 mm | 25 mm | 0.4 | 0.3 | 0.006 | -0.9 | -0.9 | 0.140 | 14.2 | 21.9 | 0.000 |
| AC | OFF | ON | 0.5 | 0.3 | 0.000 | -0.7 | -1.1 | 0.000 | 29.6 | 6.6 | 0.000 |
| TPA | 1 pixel | 2 pixels | 0.3 | 0.4 | 0.006 | -0.6 | -1.2 | 0.000 | 25.7 | 10.5 | 0.000 |
| PCA | 50 mm | 100 mm | 0.4 | 0.3 | 0.045 | -1.0 | -0.4 | 0.000 | 18.2 | 23.3 | 0.000 |
| PCA | 50 mm | estimated | 0.4 | 0.5 | 0.028 | -1.0 | -1.3 | 0.000 | 18.2 | 12.8 | 0.000 |
| PCA | 100 mm | estimated | 0.3 | 0.5 | 0.000 | -0.4 | -1.3 | 0.000 | 23.3 | 12.8 | 0.000 |
| TPF | NO | YES | 0.3 | 0.4 | 0.015 | -0.7 | -1.1 | 0.000 | 23.7 | 12.5 | 0.000 |
| TR | NO | YES | -1.3 | 2.0 | 0.000 | -0.6 | -1.2 | 0.000 | 24.6 | 11.5 | 0.000 |
| Parameter | Value #1 | Value #2 | AL SD #1 | AL SD #2 | AL p | ACR SD #1 | ACR SD #2 | ACR p | EL SD #1 | EL SD #2 | EL p |
|---|---|---|---|---|---|---|---|---|---|---|---|
| PCMD | PPK | RTN | 12.4 | 12.6 | 0.000 | 14.0 | 14.3 | 0.000 | 44.8 | 53.6 | 0.000 |
| NGCP | 1 | 5 | 12.3 | 12.9 | 0.000 | 15.9 | 14.0 | 0.000 | 76.8 | 32.3 | 0.000 |
| NGCP | 1 | 9 | 12.3 | 12.6 | 0.000 | 15.9 | 13.9 | 0.000 | 76.8 | 25.7 | 0.000 |
| NGCP | 1 | 23 | 12.3 | 11.9 | 0.000 | 15.9 | 14.0 | 0.000 | 76.8 | 18.9 | 0.000 |
| NGCP | 5 | 9 | 12.9 | 12.6 | 0.000 | 14.0 | 13.9 | 0.328 | 32.3 | 25.7 | 0.000 |
| NGCP | 5 | 23 | 12.9 | 11.9 | 0.000 | 14.0 | 14.0 | 0.871 | 32.3 | 18.9 | 0.000 |
| NGCP | 9 | 23 | 12.6 | 11.9 | 0.000 | 13.9 | 14.0 | 0.254 | 25.7 | 18.9 | 0.000 |
| GCPA | 15 mm | 25 mm | 12.5 | 12.6 | 0.005 | 14.4 | 14.5 | 0.006 | 41.7 | 55.9 | 0.000 |
| AC | OFF | ON | 15.0 | 9.4 | 0.000 | 16.7 | 11.9 | 0.000 | 62.8 | 26.4 | 0.000 |
| TPA | 1 pixel | 2 pixels | 13.2 | 11.8 | 0.000 | 15.1 | 13.8 | 0.000 | 60.5 | 34.2 | 0.000 |
| PCA | 50 mm | 100 mm | 12.9 | 14.2 | 0.000 | 14.5 | 15.9 | 0.000 | 46.7 | 60.5 | 0.000 |
| PCA | 50 mm | estimated | 12.9 | 10.0 | 0.000 | 14.5 | 12.7 | 0.000 | 46.7 | 38.1 | 0.000 |
| PCA | 100 mm | estimated | 14.2 | 10.0 | 0.000 | 15.9 | 12.7 | 0.000 | 60.5 | 38.1 | 0.000 |
| TPF | NO | YES | 12.8 | 12.2 | 0.000 | 14.7 | 14.2 | 0.000 | 57.8 | 38.8 | 0.000 |
| TR | NO | YES | 12.1 | 12.6 | 0.000 | 15.6 | 13.2 | 0.000 | 50.1 | 48.0 | 0.000 |
Top 10 % only tab. 4. SDs in mm; p from Bartlett's test. NGCP = 1 and AC = OFF are absent from this subset.
| Parameter | Value #1 | Value #2 | AL SD #1 | AL SD #2 | AL p | ACR SD #1 | ACR SD #2 | ACR p | EL SD #1 | EL SD #2 | EL p |
|---|---|---|---|---|---|---|---|---|---|---|---|
| PCMD | PPK | RTN | 8.2 | 7.4 | 0.000 | 9.4 | 8.2 | 0.000 | 12.8 | 16.1 | 0.000 |
| NGCP | 5 | 9 | 8.2 | 8.3 | 0.002 | 8.5 | 9.1 | 0.000 | 13.1 | 13.0 | 0.465 |
| NGCP | 5 | 23 | 8.2 | 7.9 | 0.251 | 8.5 | 9.7 | 0.000 | 13.1 | 13.0 | 0.629 |
| NGCP | 9 | 23 | 8.2 | 7.9 | 0.000 | 9.1 | 9.7 | 0.000 | 13.0 | 13.0 | 0.724 |
| GCPA | 15 mm | 25 mm | 8.2 | 8.1 | 0.101 | 9.5 | 9.0 | 0.000 | 13.0 | 13.1 | 0.410 |
| TPA | 1 pixel | 2 pixels | 8.1 | 8.1 | 0.264 | 8.7 | 9.5 | 0.000 | 13.1 | 13.0 | 0.502 |
| PCA | 50 mm | 100 mm | 8.6 | 9.7 | 0.000 | 9.8 | 10.2 | 0.000 | 12.7 | 12.3 | 0.023 |
| PCA | 50 mm | estimated | 8.6 | 7.1 | 0.000 | 9.7 | 8.6 | 0.000 | 12.7 | 13.5 | 0.000 |
| PCA | 100 mm | estimated | 9.7 | 7.1 | 0.000 | 10.2 | 8.6 | 0.000 | 12.3 | 13.5 | 0.000 |
| TPF | NO | YES | 8.1 | 8.2 | 0.231 | 9.2 | 9.5 | 0.000 | 13.2 | 12.8 | 0.001 |
| TR | NO | YES | 7.8 | 8.0 | 0.002 | 11.0 | 8.2 | 0.000 | 13.2 | 12.9 | 0.019 |
Displacement and derivative accuracy tab. 5 tab. 6 tab. 7.
| Variant | Displacements dn/de (n) | dh (n) | Outliers dn/de % | Outliers dh % | RMSE dn | RMSE de | RMSE dh |
|---|---|---|---|---|---|---|---|
| Baseline | 7798 | 7271 | 0.8 | 0.0 | 10 mm | 8 mm | 21 mm |
| Enhanced | 7825 | 7273 | 0.7 | 0.0 | 7 mm | 7 mm | 14 mm |
| Variant | Tilt tn (n) | Tilt te (n) | Outliers % | RMSE (mm/m) |
|---|---|---|---|---|
| Baseline | 4901 | 4953 | 0.0 | 0.31 |
| Enhanced | 4910 | 4963 | 0.0 | 0.27 |
| Variant | Strain εn (n) | Strain εe (n) | Outliers % | RMSE (mm/m) |
|---|---|---|---|---|
| Baseline | 5169 | 5260 | 0.1 | 0.19 |
| Enhanced | 5198 | 5286 | 0.0 | 0.19 |
Systematic error histograms are narrower for the enhanced variant, most clearly for vertical displacement fig. 12. Random error histograms are almost identical for the two variants fig. 11. Tilt and strain are much less affected than displacement, because first differences suppress the slow systematic errors §3.2.
Paper vs code
No official code.
Searched: (1) the paper, abstract and arXiv metadata for a repository link, none
found; the supplementary material is hosted by the journal (DOI in its
Appendix A), and the data are "available on request" p. 24; (2) GitHub
user search for "Puniach" and "Cwiakala": the only Puniach account
(puniachirag051-coder) has no link to the authors and was not used, and
none of the "cwiakala" hits is obviously an author; (3) GitHub repository search for
"UAV photogrammetry bundle block adjustment processing parameters" (no results)
and "photogrammetry agisoft" (no author-owned repository among the first 17 results).
The software used is commercial (Agisoft Metashape Professional 2.0.3) and the deformation code is MATLAB, so no open implementation of the pipeline exists in this set of sources §2.2 §2.4.
Pitfalls
- Metashape-specific settings. Factors map to Agisoft names (marker accuracy, camera accuracy, tie-point limit, frame camera model). Other photogrammetry tools use different definitions of tie-point accuracy and reprojection error, so the thresholds (0.25, 0.5, the 8 limits) do not transfer without re-testing §2.2 fig. 2.
- "Estimated" PCA has no number. The paper says the a priori camera-centre accuracy comes from the PPK or RTN processing but gives no value. Implementers must compute it from their own GNSS post-processing §2.2.
- Study-area size is inconsistent. Methods give 220 ha §2.1; the discussion says 200 ha §4. Use 220 ha for this dataset.
- Recommended GCP density is extrapolated. The "1 GCP per 40 ha for areas over 200 ha" rule comes from a single site with GSD 10 mm and well-distributed GCPs. The authors caution against generalizing §4 §5.
- Number of CPs is not stated. Fig. 1 shows CP locations, but the count is not given in the text §2.1 fig. 1.
- Gross-error step is subjective. Removing images with incorrect exterior orientations is done by visual inspection of errors, tie-point count and quality indicators; no numeric rule is given §2.2.
- Units of tilt and strain. Displacements are in mm and S is in m; the paper reports tilt and strain in mm/m but does not write out the unit conversion §2.4.2 §2.4.3.
- Isolation filter is underspecified. A 100 m search radius is stated, but the minimum neighbour count for keeping a vector is not §2.4.1.
- RANSAC details are missing. The paper cites Torr and Zisserman's MLESAC §2.4.1 (paper ref. [56]) but gives no iteration count, sample size or random seed.
- Thin-plate smoothing parameter. "Smoothing parameter of 1, corresponding to a cubic spline interpolant" is the paper's wording; the mapping to a specific library parameter is not given §2.4.3.
- No multiple-comparison correction. Tab. 2 and 3 run many t-tests and Bartlett's tests with α = 0.05 each; no correction is stated. Many "significant" differences are small in practice (the authors' own practical threshold is 2 mm in SD) §2.3 §3.1.
- AL/ACR rotation angle not stated. Error vectors are rotated into the flight-aligned frame; the angle used is not given beyond "aligned with the flight path" §2.3.
- Appendix 1 is not in the PDF. The full variant ranking is referenced as Appendix 1 §3.1 but was not in the PDF we read. Any value from it is unverified here.
- Systematic MAE pairing. "4 mm and 6 mm in the baseline" is not explicitly tied to the northing and easting axes §3.2.
- Hidden cost. Each variant needs at least two full BBA runs, and the study ran 768 variants on ten series, so processing time is large §2.2.
- Tie-point filtration is costly with no measured gain. The paper finds TPF has no significant effect on the best variants, yet it cites USGS guidance that recommends the step. The enhanced configuration turns it off §3.2 §4 fig. 6.
Lineage
- Builds on: the displacement method and the baseline variant of Puniach et al. (2025), Measurement 253(A) (paper ref. [44]) §2.4; the Brown calibration model §2.2 (ref. [34]); the 96-parameter Fourier self-calibration model of Tang et al. (2012) (ref. [37]) §2.2; USGS Metashape workflow guidance (ref. [43]) §2.2; WNCC implementation (ref. [55]); tie-point cleaning (ref. [53]).
- Compared against: the Puniach et al. baseline configuration §2.4; prior GCP-density studies (refs. [1], [7], [13], [15], [16], [21]) §1.
- Superseded by: none known.
Source and license
Adapted from “The Impact of Processing Parameters on High-Accuracy Measurements in UAV Photogrammetry” by Paweł Ćwiąkała, Edyta Puniach, Elżbieta Pastucha, Wojciech Gruszczyński (arXiv:2610.01438), used under CC BY 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors.