Medical & Scientific Vision
Aerial and Drone Image Analysis
How low-altitude images from drones and aircraft are planned, captured and analysed for mapping and inspection, from platforms, cameras, ground sampling distance and overlap to orthomosaics and surface models, inspection tasks, the VisDrone, UAVDT and UAVid benchmarks, and flight rules as official sources state them.
intermediate
Aerial image analysis works with images taken from aircraft flying a few tens to a few hundreds of metres above the ground, today mostly from small unmanned aircraft. These are also called drones, unmanned aerial vehicles (UAVs) or, with their ground station and radio links, unmanned aircraft systems (UAS). Compared with the satellites described in remote sensing and multispectral satellite imaging, they give pixels of a few centimetres or millimetres over areas of hectares to a few square kilometres, at times the operator chooses. Overlapping images from them are turned into maps and 3D models by structure from motion and multi-view stereo, and single images and video are searched for objects, damage and change. This article covers that mapping and inspection use: platforms and cameras, ground sampling distance and flight planning, photogrammetric products, inspection and recognition tasks, benchmarks, and how flights are regulated. Detecting objects in overhead images (oriented boxes, densely packed objects, the overhead detection benchmarks) is the subject of aerial object detection, and farm uses that of computer vision in agriculture. How a drone perceives its surroundings in order to fly belongs to robotics, in visual navigation and robot perception.
Problem
Two kinds of work dominate. Mapping produces geometrically correct products of an area: an orthomosaic (a map-like image with the perspective removed), a digital surface model (DSM) of the tops of buildings and vegetation, a digital terrain model (DTM) of the bare ground, point clouds and textured meshes. Volumes of stockpiles, progress on construction sites, landslides and quarries are measured from them. Inspection looks at objects closely, often from oblique viewpoints, to find defects: cracks and spalling on bridges, or damage to transmission towers and power lines. Both often feed recognition tasks such as counting vehicles, segmenting land cover or detecting change between repeated flights.
Vautherin et al. (2016) list stockpile analysis, construction site monitoring, quarries, cultural heritage, agriculture and the mapping of city districts as typical uses, and give low cost, portability, ease of use and flexibility as the reasons consumer drones are used for them. Giordan et al. (2020), reviewing engineering geology, add that this needs both data-processing knowledge and a pilot able to manage the mission. The vision problems that follow differ from satellite imagery in three ways (our summary). The scale is much finer, so objects span many pixels and fine texture matters. The geometry is that of a perspective frame camera close to a 3D scene, so relief displacement, occlusion and viewing angle change from image to image. And the imagery is acquired to a plan, so its resolution, overlap and timing are design choices made before the flight.
Visual Data
Platforms
Giordan et al. (2020) note that fixed-wing aircraft and multirotors (with four to eight propellers) are the platforms most used for environmental work, and rate them in a qualitative table (1 low, 5 high): fixed wings score 5 for range and 5 for flight duration, multirotors 4 and 3, both 2 for wind influence. Discussing LiDAR payloads, they give the flight autonomy of the multirotors that usually carry them as no more than 25–30 minutes, and they note that a fixed wing needs a take-off and landing area of at least 20–25 m, while a multirotor takes off and lands vertically. Following earlier work by Giordan and colleagues, they suggest a multirotor with oblique images for steep targets such as rock walls or infrastructure, and a fixed wing with nadir images for gentle, extensive slopes. Hybrid and transitioning aircraft, combining the advantages of rotary and fixed wings, appear in their list of future developments. Vautherin et al. (2016) compare consumer quadcopters with a fixed-wing mapping drone (the senseFly eBee), estimate the area each can cover on one battery charge at different speeds, and point out that a speed limit set by the camera therefore limits the area mapped per battery.
Cameras and payloads
Giordan et al. (2020) group drone payloads into digital cameras, thermal detectors, multispectral cameras and LiDAR. Most mapping uses an RGB frame camera, and a property that matters for geometry is the shutter. Vautherin et al. (2016) explain that consumer drones, designed mainly for aerial cinematography, usually read their CMOS image sensors with an electronic rolling shutter: rows are exposed and read one after another, and a frame takes on the order of 30–40 ms to read in most consumer cameras. A camera moving at survey speed therefore images the top and bottom of a frame from different positions. Global shutters, mechanical shutters in the lens or electronic global shutters, expose the whole frame at once; the professional mapping drone in their study carried a compact camera with a global shutter. Lens distortion and the other internal parameters can be refined during processing by self-calibration, as described in structure from motion and camera calibration.
Multispectral drone cameras capture each band with a separate sensor, as OpenDroneMap’s documentation describes them, so the bands of one shot are separate images that have to be registered (our reasoning). OpenDroneMap’s documentation lists the cameras its multispectral support was developed with, the MicaSense RedEdge-MX and Altum, the Sentera 6X and the DJI Phantom 4 and Mavic 3 Multispectral, and describes radiometric normalization that produces reflectance orthophotos from them; it also generates temperature orthophotos from long-wave infrared cameras such as the MicaSense Altum, the DJI Zenmuse XT and the Zenmuse H20 series (OpenDroneMap 3.6.0 documentation, as of November 2026). The physics of bands, radiance and reflectance is the same as for satellites and is described in the multispectral satellite imaging article; its uses on farms, such as vegetation indices from reflectance orthophotos, are described in computer vision in agriculture.
Positioning
Each image carries the drone’s position and attitude from its satellite navigation receiver and inertial measurement unit. Giordan et al. (2020) give the precision of a stand-alone receiver as a standard deviation of 3–5 m, or 1–3 m with the EGNOS or WAAS augmentation services. Receivers that record raw carrier-phase data allow post-processed kinematic (PPK) positioning, and some systems offer real-time kinematic (RTK) positioning with corrections from a base station. In their own test, a PPK solution from an external receiver on a multirotor followed a total-station track with an accuracy of a few centimetres. Ground control points (GCPs) are the alternative or complement: targets or sharp features whose coordinates are measured on the ground, typically with high-precision satellite positioning, and marked in the images. OpenDroneMap’s guidance is to spread them evenly over the area, covering high and low ground, with a minimum of 5 for most jobs and 8–10 for larger projects, and to place them so that each appears in at least 5 images (OpenDroneMap 3.5.4 documentation, as of November 2026). GCPs not used in processing serve as independent check points for accuracy.
Ground Sampling Distance and Flight Planning
Ground sampling distance
Pix4D’s documentation defines the ground sampling distance (GSD) as the distance between two consecutive pixel centres measured on the ground, and lists what it depends on: the flight height or distance to the object , the image width in pixels , the sensor width and the focal length (Pix4D, as of November 2026). For a nadir image of flat ground, the pinhole camera model gives the relation in a form that follows from similar triangles (our derivation):
where is the pixel pitch, and all lengths are in the same unit. The image then covers a footprint of by on the ground. The relation holds only where the ground is at distance : Pix4D notes that even at constant flight height the images of a project do not all have the same GSD, because terrain elevation and camera angle vary, and that its orthomosaic uses an average GSD. Oblique images have a GSD that grows from the near to the far edge of the frame (our reasoning from the same geometry). Mundt et al. (2019) worked the same relation the other way for bridge inspection: concrete cracks can be as narrow as 0.3 mm, and resolving them needs about 0.1 mm per pixel, which a consumer camera with a 23.5 mm wide, 6000-pixel sensor and a 50 mm lens reaches at about 1.5 m from the surface. The GSD is a sampling interval, not a guarantee of what can be seen: optics, motion and noise blur the image further, and sampling and aliasing gives the theory.
Overlap
Photogrammetric processing matches points between images, so the images must overlap. Pix4D’s general recommendation is at least 75% frontal overlap along the flight direction and at least 60% side overlap between flight lines, in a regular grid, keeping the camera at a constant height above the terrain. It raises this to at least 85% front and side for forest and dense vegetation, where trees look different from image to image, and to at least 80% for flat agricultural fields with uniform texture, and it recommends flying higher in both cases; for dense vegetation it states that the best results are obtained with a GSD coarser than 10 cm per pixel. For snow and sand it recommends at least 85% front and 70% side overlap, and it describes oceans as impossible to reconstruct (Pix4D, as of November 2026). OpenDroneMap’s flying tips recommend 70–80% overlap, slightly off nadir (5–10°), for 2D and 2.5D products, and for full 3D reconstruction a 60% overlap nadir flight combined with a 70–80% overlap cross-grid flown with the camera at 45° (OpenDroneMap 3.6.0 documentation, as of November 2026). For buildings, Pix4D recommends oblique images from several rounds at increasing height and decreasing camera angle.
With front overlap and side overlap , consecutive photos are taken a base apart along a line, where is the along-track footprint, and lines are a spacing apart, where is the across-track footprint. Each image then adds of new ground, and a point in the interior of the block is seen, on average, in
images (our derivation): 10 at 75% and 60%. The number of images per unit area grows as at fixed overlap and the length of flight lines as , which is why the GSD is chosen before the flight. Pix4D advises deciding the GSD first and setting flight height and camera to suit, flying lower when detail is needed and higher to save acquisition time, batteries and processing. Giordan et al. (2020), following a workflow published by Nex and Remondino (2014), list the parameters of a flight plan as the GSD, the area of interest, the camera and the goals of the flight; the drone’s battery duration and range from the ground station; and camera calibration and the availability and distribution of GCPs.
Motion during exposure
A camera moving at ground speed during an exposure smears the image by on the ground, or pixels (our arithmetic). The rolling shutter adds a geometric distortion on top of that, because the rows are captured at different times. Vautherin et al. (2016) estimated readout times from their rolling-shutter model of 74 ms for the DJI Phantom 2 Vision+ camera and 30 ms for the DJI Inspire 1 (DJI confirmed 73 ms and 33 ms), They approximate the displacement of image content during readout as , with readout time , image height in pixels, vertical field of view in radians and height , and state that at 8 m/s and 70 m above ground it is about 10 pixels on the Phantom 2 and about 4 pixels on the Inspire 1. With the readout times and vertical fields of view of their Table 1 (74 ms, 3,288 rows and 80°; 30 ms, 3,000 rows and 70°), the same formula gives about 20 and 8 pixels (our arithmetic); the paper does not explain the factor of two. Their results are described under photogrammetric mapping below.
Photogrammetric Mapping
Mapping from drone images is the structure-from-motion and multi-view stereo pipeline applied to a planned block of images. Features are detected and matched between overlapping images, camera poses and a sparse point cloud are estimated incrementally or globally and refined by bundle adjustment, which in this setting also takes the GNSS positions of the images and the GCPs as observations. Dense matching then produces depth maps that are fused into a dense point cloud and a mesh. COLMAP implements this general pipeline; mapping packages add georeferencing, DSM and orthomosaic generation, and camera models for rolling shutters. OpenDroneMap’s outputs illustrate the products: a georeferenced point cloud, a textured mesh, an orthophoto as a GeoTIFF, and, when requested, a DSM (ground and objects) and a DTM (ground only), which its documentation describes as built with morphological filters. Its orthophoto and elevation-model resolutions default to 5 cm per pixel and are capped by an estimate of the GSD (OpenDroneMap 3.6.0 documentation, as of November 2026), so a product cannot be finer than the images it comes from.
An orthomosaic differs from a panorama stitched with homographies. A homography maps one plane into another, so it aligns images exactly only for a planar scene or a camera rotating about its centre. Drone images of terrain with buildings and trees are taken from different positions, and each point of the scene appears displaced in proportion to its height. An orthophoto removes this by projecting every image onto the surface model and resampling it vertically, then blending the images into a mosaic (our summary of standard practice). Where the surface model is wrong, as at building edges, under trees or over water where matching fails, the orthophoto shows smeared or doubled edges.
Accuracy and the rolling shutter. Vautherin et al. (2016) flew three consumer drones with rolling-shutter cameras over an office site at 70 m above ground and speeds of 1, 4 and 8 m/s, and a fixed-wing drone with a global shutter at a height chosen to give a similar GSD, with 12 surveyed GCPs, six used for georeferencing and six (or five, where occluded) for verification. Processing each dataset with and without their rolling-shutter camera model in Pix4Dmapper 2.1 beta, they found that the model made the largest difference at high speed and long readout. For the Phantom 2 Vision+ at 8 m/s, the root-mean-square errors on verification points fell from 13.5, 17.9 and 7.1 cm in X, Y and Z to 2.3, 3.7 and 1.4 cm, at a mean GSD of 2.85 cm. For the global-shutter camera, they report that the model had no influence on accuracy; their table shows RMS errors within 0.2 cm of each other with and without it. They conclude that without the model the Phantom 2 should fly no faster than about 4 m/s to stay within what they call a well-accepted practical accuracy of 1–2 GSD horizontally and 2–3 GSD vertically, and the Inspire 1, with its faster readout, about 8 m/s, and that global-shutter cameras remain more accurate. Five GCPs placed around their small test area reduced the errors inside it about as much as the model did, but not outside it.
Vision Tasks Involved
Object detection and tracking. Drone images and video of traffic, streets and crowds are the setting of the VisDrone and UAVDT benchmarks (below). The UAVDT authors name high density, small objects and camera motion as the new difficulties (Du et al., 2018), and the VisDrone-DET2019 organizers small objects and occlusion (Du et al., 2019). The general object detection methods are the starting point; of 47 detectors submitted to VisDrone-DET2019, the organizers group many as built on Cascade R-CNN, CenterNet, RetinaNet or feature pyramid networks, with several ensembles (Du et al., 2019). Multi-object tracking and crowd counting are tasks of the same benchmarks. Oriented boxes for overhead views and the satellite and aerial detection benchmarks belong to aerial object detection.
Semantic segmentation labels every pixel, for example building, road, tree, low vegetation, car and clutter in UAVid, using the encoder–decoder networks of semantic segmentation. On orthomosaics, segmentation becomes a mapping product and joins land cover classification at a finer scale.
Inspection combines close-range imaging with detection, segmentation and classification of defects. Two datasets show the variety. TTPLA contains 1,100 images of 3,840 × 2,160 pixels with 8,987 labelled instances of transmission towers and power lines, sampled every 15 frames from 80 videos recorded by a Parrot ANAFI drone in two US states, and annotated for instance segmentation (Abdelfattah et al., 2020). Its authors point out why power lines are hard: they are long and thin, can have the colour of the background, and lie close together, so that non-maximum suppression with a single threshold either misses highly overlapping lines (a low threshold) or keeps more false positives (a high one). CODEBRIM contains 1,590 high-resolution images of defects on 30 concrete bridges, partly acquired by a UAV for close access to parts of bridges people cannot reach, with 5,354 defect boxes in five classes (crack, spallation, efflorescence, exposed bars and corrosion stains) that often overlap, so each box can carry several labels (Mundt et al., 2019). Industrial machine vision describes defect inspection in factories, where lighting and viewpoint are controlled; in the field they are not, and Mundt et al. used diffused flash to light the darker areas of bridges.
Change and monitoring. Repeat flights over the same area, with the same plan, give time series of orthomosaics and surface models. Differencing surface models measures volumes and displacements, and image-based change detection finds new or removed objects; both depend on accurate co-registration of the epochs. Giordan et al. (2020) list repeat surveys made possible by route programming and GNSS among the developments that changed landslide studies.
Example: Planning a Survey for Small Objects
The script below plans a survey with a hypothetical frame camera and asks how the planned GSD affects finding small objects in synthetic images. Part A computes the GSD, footprint, photo base, line spacing, images per hectare and motion smear at four flight heights, using the formulas above with a camera of 13.2 × 8.8 mm, 5472 × 3648 pixels and an 8.8 mm lens, 75% front and 60% side overlap, and a ground speed of 8 m/s at 1/500 s exposure. Part B lays out footprints on a grid and counts how many cover each interior ground point, to check . Part C builds a 12 × 12 m patch of textured ground on a 0.5 cm grid with 120 bright disks of 10 cm diameter (contrast 0.10 on a background of mean 0.25, with texture at 2 cm and 30 cm scales), images it at GSDs of 1 to 6 cm through a Gaussian optical blur of 0.5 sensor pixels, an optional 1.6 cm motion smear (8 m/s × 1/500 s), pixel integration and noise, and detects the disks with a difference-of-Gaussians filter matched to their size and to the blur. The detection threshold is set on a separate object-free scene so that it gives one false alarm per 10 m², and detections count as hits when they fall within one object radius plus one pixel of an unmatched object. The scenes use seeds 0–4.
The plan fixed every parameter before the first run, and the script shown is that first run unchanged. Our plan expected recall above 0.9 once an object spans about three pixels; the output did not bear that out. It runs in about two minutes with NumPy 2.3.5, SciPy 1.16.3 and scikit-image 0.25.2, and two runs gave identical output.
import numpy as np
from scipy import ndimage as ndi
from scipy.spatial import cKDTree
from skimage.feature import peak_local_max
# ---------- Part A: flight-planning arithmetic for a frame camera ----------
SW, SH = 13.2e-3, 8.8e-3 # sensor width, height (m)
IW, IH = 5472, 3648 # image width, height (pixels)
F = 8.8e-3 # focal length (m)
PITCH = SW / IW # pixel pitch (m)
PF, PS = 0.75, 0.60 # front and side overlap
V, T_EXP = 8.0, 1 / 500 # ground speed (m/s), exposure (s)
print("Part A: GSD and flight plan (75% front, 60% side overlap)")
print(" H(m) GSD(cm) footprint(m) base(m) lines(m) img/ha line km/ha smear(px)")
for H in (30, 60, 90, 120):
gsd = PITCH * H / F # ground sampling distance (m)
across, along = IW * gsd, IH * gsd # long image side across track
base, spacing = (1 - PF) * along, (1 - PS) * across
per_ha = 1e4 / (base * spacing)
line_km = 1e4 / spacing / 1e3
smear = V * T_EXP / gsd
print(f"{H:5d} {100*gsd:6.2f} {across:5.1f}x{along:4.1f} {base:6.1f} {spacing:6.1f}"
f" {per_ha:6.1f} {line_km:6.2f} {smear:5.2f}")
# ---------- Part B: how many images see each ground point ----------
print("\nPart B: footprints covering each interior point")
print(" front side formula mean min")
for pf, ps in ((0.60, 0.30), (0.75, 0.60), (0.80, 0.70), (0.85, 0.70)):
W, L = 1.0, 1.0 # footprint in units of itself
base, spacing = (1 - pf) * L, (1 - ps) * W
xs = np.arange(-2, 12, spacing) # footprint centres
ys = np.arange(-2, 12, base)
g = np.linspace(4, 6, 401) # interior test points
gx, gy = np.meshgrid(g, g)
cnt = np.zeros_like(gx)
for cx in xs:
inx = np.abs(gx - cx) <= W / 2
for cy in ys:
cnt += inx & (np.abs(gy - cy) <= L / 2)
print(f" {pf:.2f} {ps:.2f} {1/((1-pf)*(1-ps)):6.2f} {cnt.mean():5.2f} {cnt.min():3.0f}")
# ---------- Part C: small objects at several GSDs ----------
FINE = 0.005 # simulation grid (m)
SIDE = 12.0 # scene side (m)
N = int(SIDE / FINE)
DIAM, CONTRAST, NOISE = 0.10, 0.10, 0.01
FA_PER_10M2 = 1.0
def background(rng):
a = ndi.gaussian_filter(rng.standard_normal((N, N)), 0.02 / FINE)
b = ndi.gaussian_filter(rng.standard_normal((N, N)), 0.30 / FINE)
return 0.25 + 0.03 * a / a.std() + 0.03 * b / b.std()
def place_objects(rng, n=120):
pts = []
while len(pts) < n:
p = rng.uniform(0.3, SIDE - 0.3, 2)
if all(np.hypot(*(p - q)) > 0.5 for q in pts):
pts.append(p)
return np.array(pts)
def add_objects(scene, pts):
yy, xx = np.mgrid[0:N, 0:N]
out = scene.copy()
r = DIAM / 2 / FINE
for (x, y) in pts:
cx, cy = x / FINE, y / FINE
sl = (slice(int(cy - r - 2), int(cy + r + 3)), slice(int(cx - r - 2), int(cx + r + 3)))
m = (xx[sl] - cx + 0.5) ** 2 + (yy[sl] - cy + 0.5) ** 2 <= r * r
out[sl][m] += CONTRAST
return out
def image(scene, gsd, smear, rng):
k = int(round(gsd / FINE))
img = ndi.gaussian_filter(scene, 0.5 * k) # optics: sigma 0.5 sensor px
if smear > 0: # motion along x
img = ndi.uniform_filter1d(img, int(round(smear / FINE)), axis=1)
n = N // k
img = img[:n * k, :n * k].reshape(n, k, n, k).mean(axis=(1, 3)) # pixel integration
return img + NOISE * rng.standard_normal(img.shape)
def response(img, gsd):
r_px = DIAM / 2 / gsd
s1 = np.hypot(r_px / np.sqrt(2), 0.5)
return ndi.gaussian_filter(img, s1) - ndi.gaussian_filter(img, 3 * s1 + 2)
def peaks(resp, gsd):
md = max(1, int(round(DIAM / 2 / gsd)))
p = peak_local_max(resp, min_distance=md, exclude_border=2)
return p, resp[p[:, 0], p[:, 1]]
print("\nPart C: 10 cm objects, threshold set for 1 false alarm per 10 m^2 on an object-free scene")
print(" GSD(cm) H(m) diam(px) smear recall mean [min-max] FA/10m^2 mean")
SEEDS = range(5)
for smear in (0.0, V * T_EXP):
for gsd in (0.01, 0.02, 0.03, 0.04, 0.06):
rec, fas = [], []
for seed in SEEDS:
rng = np.random.default_rng(seed)
pts = place_objects(rng)
scene = add_objects(background(rng), pts)
empty = background(np.random.default_rng(1000 + seed))
# threshold from the object-free scene
_, v0 = peaks(response(image(empty, gsd, smear, np.random.default_rng(2000 + seed)), gsd), gsd)
n_fa = int(round(FA_PER_10M2 * SIDE * SIDE / 10))
thr = np.sort(v0)[::-1][n_fa]
p, v = peaks(response(image(scene, gsd, smear, rng), gsd), gsd)
keep = v > thr
p, v = p[keep], v[keep]
det_xy = (p[:, ::-1] + 0.5) * gsd # pixel centre -> metres (x, y)
tree = cKDTree(pts)
used = np.zeros(len(pts), bool)
tp = 0
for i in np.argsort(-v):
d, j = tree.query(det_xy[i], k=3, distance_upper_bound=DIAM / 2 + gsd)
for dd, jj in zip(np.atleast_1d(d), np.atleast_1d(j)):
if np.isfinite(dd) and not used[jj]:
used[jj] = True
tp += 1
break
rec.append(tp / len(pts))
fas.append((len(v) - tp) / (SIDE * SIDE / 10))
rec = np.array(rec)
print(f" {100*gsd:4.0f} {gsd*F/PITCH:5.0f} {DIAM/gsd:5.1f} {100*smear:3.1f}cm"
f" {rec.mean():.3f} [{rec.min():.3f}-{rec.max():.3f}] {np.mean(fas):.2f}")
Part A: GSD and flight plan (75% front, 60% side overlap)
H(m) GSD(cm) footprint(m) base(m) lines(m) img/ha line km/ha smear(px)
30 0.82 45.0x30.0 7.5 18.0 74.1 0.56 1.95
60 1.64 90.0x60.0 15.0 36.0 18.5 0.28 0.97
90 2.47 135.0x90.0 22.5 54.0 8.2 0.19 0.65
120 3.29 180.0x120.0 30.0 72.0 4.6 0.14 0.49
Part B: footprints covering each interior point
front side formula mean min
0.60 0.30 3.57 3.52 2
0.75 0.60 10.00 10.06 8
0.80 0.70 16.67 16.75 15
0.85 0.70 22.22 22.35 18
Part C: 10 cm objects, threshold set for 1 false alarm per 10 m^2 on an object-free scene
GSD(cm) H(m) diam(px) smear recall mean [min-max] FA/10m^2 mean
1 36 10.0 0.0cm 0.762 [0.700-0.808] 0.96
2 73 5.0 0.0cm 0.687 [0.642-0.733] 0.96
3 109 3.3 0.0cm 0.582 [0.550-0.608] 1.06
4 146 2.5 0.0cm 0.388 [0.308-0.475] 0.94
6 219 1.7 0.0cm 0.152 [0.108-0.192] 1.03
1 36 10.0 1.6cm 0.760 [0.700-0.808] 0.96
2 73 5.0 1.6cm 0.685 [0.642-0.733] 0.97
3 109 3.3 1.6cm 0.580 [0.550-0.608] 1.06
4 146 2.5 1.6cm 0.388 [0.308-0.475] 0.93
6 219 1.7 1.6cm 0.152 [0.108-0.192] 1.03
The cost of a finer GSD. In Part A the GSD scales with height, and the image count per hectare with the inverse square: flying at a quarter of the height buys a GSD four times finer for sixteen times as many images and four times the length of flight lines. At 30 m and 8 m/s, a 7.5 m photo base also means one photo about every 0.9 s, which the camera and storage must sustain (our arithmetic from the table). The motion smear is fixed in ground units, 1.6 cm, so it grows in pixels as the GSD shrinks, reaching about two pixels at 30 m.
Overlap and redundancy. Part B confirms that the average number of images seeing an interior point is ; the differences of about 1%, in both directions, come from the finite window of test points, which does not span whole periods of the layout, and from points on footprint edges counting for both neighbours (our explanation). The minimum matters more for reconstruction than the mean. At 60% front and 30% side overlap, some points appear in only two images, the least from which a point can be triangulated, while at the 75% and 60% of Pix4D’s general recommendation every interior point appears in at least eight.
What the GSD does to detection. Part C shows two regimes. Below about three pixels across the object, recall falls steeply as the GSD grows: a 10 cm object at 6 cm GSD is less than two pixels wide and is found about once in seven. Above it, recall rises only slowly, and even at 1 cm GSD, with the object ten pixels across, about a quarter of the objects are missed at this false-alarm rate. Our reading is that the background texture, not the sensor noise, then sets the limit: the 2 cm texture produces bright blobs of about the objects’ size and contrast, and a finer GSD resolves those as clearly as the objects, so a threshold that admits only one false alarm per 10 m² must lie above many real objects (an interpretation; the example does not separate the two sources). The motion smear changes recall by at most 0.002, because 1.6 cm is small next to a 10 cm object at every height. The flight heights in the table tie this to regulation: with this camera, GSDs of 4 and 6 cm require flying at about 146 and 219 m, above the 400 ft (122 m) ceiling of the US small-drone rule and the 120 m of the EU’s open category (Deployment Considerations, below), so a coarser GSD within those limits needs a shorter focal length or larger pixels. Going from 3 cm to 1 cm GSD here raises recall from about 0.58 to 0.76 at roughly nine times the images per hectare (from the scaling in Part A); whether that is worth it depends on the task, and a better detector or a second look from another angle may buy more than a lower flight.
Datasets and Benchmarks
| Dataset | Year | Platform and imagery | Task | Size |
|---|---|---|---|---|
| VisDrone-DET | 2018–2019 | Drone platforms, different places and heights | Object detection in images | 8,599 images (6,471 / 548 / 1,580); over 540k boxes in 10 categories |
| VisDrone (all tasks) | 2019 | Same | Detection in images and video, single- and multi-object tracking, crowd counting | 288 clips (261,908 frames) and 10,209 static images; over 2.6 million boxes |
| UAVDT | 2018 | DJI Inspire 2 video, 1080 × 540 at 30 fps | Vehicle detection, single- and multi-object tracking | 100 sequences, about 80,000 frames, 0.84 million boxes |
| UAVid | 2020 | 4K UAV video of urban street scenes | Semantic segmentation (8 classes) | 42 sequences (20 / 7 / 15) in UAVid2020 |
| TTPLA | 2020 | Parrot ANAFI video, 3,840 × 2,160 | Detection, instance and semantic segmentation of towers and power lines | 1,100 images, 8,987 instances |
| CODEBRIM | 2019 | Several cameras, partly UAV-mounted | Multi-target classification of concrete defects | 1,590 images of 30 bridges, 5,354 defect boxes |
VisDrone. The VisDrone-DET2019 challenge used the same data as VisDrone-DET2018: 8,599 images captured by drones in different places and at different heights, with more than 540,000 boxes in ten categories (pedestrian, person, car, van, bus, truck, motor, bicycle, awning-tricycle and tricycle), split into 6,471 training, 548 validation and 1,580 test images collected at different locations in similar environments (Du et al., 2019). A human standing or walking is a pedestrian and otherwise a person. Ranking uses the COCO protocol: average precision averaged over ten IoU thresholds from 0.50 to 0.95, alongside AP at 0.5 and 0.75 and average recall with at most 1, 10, 100 and 500 detections per image (the paper lists the last as AR50 in one place and AR500 in another; its tables use AR500). Ground truth marks ignored regions, and detections in them or labelled “others” are not evaluated (VisDrone2018-DET-toolkit README, as of November 2026). The test-challenge annotations are withheld, and the repository provides a separate test-dev set with annotations for publishing papers. Of 47 submitted detectors, 33 beat the organizers’ Cascade R-CNN baseline (16.09% AP); the best reached 29.62% AP on the test set, slightly below the 2018 winner, and the organizers single out small objects, occlusion and the scarce awning-tricycle class as the main failure sources (Du et al., 2019). The repository README describes the full benchmark as 288 video clips with 261,908 frames and 10,209 static images from 14 cities, with more than 2.6 million boxes, under five tasks; it states no licence for the data, and the evaluation toolkit is marked for research purposes only (as of November 2026).
UAVDT. Du et al. (2018) selected 100 sequences from more than 10 hours of video recorded with a DJI Inspire 2 over urban squares, arterial streets, toll stations, highways, crossings and T-junctions. About 80,000 frames carry 0.84 million boxes on more than 2,700 vehicles (car, truck, bus), labelled by over ten domain experts, with attributes for weather (daylight, night, fog), flying altitude (low at 10–30 m, medium at 30–70 m, high above 70 m), camera view (front, side, bird’s-eye), occlusion and out-of-view. Regions of vehicles too small to label are marked as ignored. The training and test sets have 30 and 70 sequences, with 20 of the test sequences used for detection and multi-object tracking and 50 for single-object tracking, and training videos come from different locations than test videos. Detection is scored by AP with a hit threshold of IoU 0.7, following KITTI. The authors report that R-FCN reached 34.35% AP on UAVDT against 70.06% on KITTI’s hard set, and attribute the gap to the many small objects seen from the drone’s viewpoint and to the more cluttered background at higher altitude.
UAVid. The dataset’s site describes UAVid as UAV video for semantic segmentation of urban street scenes at 4K resolution, with eight classes: building, road, static car, tree, low vegetation, human, moving car and background clutter. The 2020 version has 42 sequences, 20 for training, 7 for validation and 15 for testing; the first version had 30. Scoring is per-class IoU computed from a confusion matrix accumulated over the whole test split, with background clutter evaluated as a class rather than ignored, because it covers a large share of pixels and contains meaningful objects. The test ground truth was made public in 2023, and the site also announces an evaluation server on Codalab. The data are released under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 licence (UAVid site, as of November 2026). The site asks users to cite the dataset paper by Lyu et al. (2020) in the ISPRS Journal of Photogrammetry and Remote Sensing.
Inspection datasets. TTPLA’s images were split at random into 70% training, 10% validation and 20% test images. With YOLACT, the authors report a best box AP averaged over IoU 0.50–0.95 of 22.96% (ResNet-101, 700 × 700 input) and a best mask AP of 15.72% (ResNet-50, 700 × 700), which they call low in general (Abdelfattah et al., 2020). Its repository carries an Apache 2.0 licence file (as of November 2026). CODEBRIM counts a prediction as correct only if all labels of a defect box are right. Its validation and test sets each take 150 defect examples per class, with all boxes from one image kept in the same split. The authors considered splitting by bridge and found it infeasible to balance the classes that way (Mundt et al., 2019). The best test accuracy in their comparison, 72.19%, came from an architecture found by the MetaQNN search, against 70.77% for a DenseNet-121.
Benchmarks from manned aircraft, such as ISPRS Vaihingen and Potsdam, appear in land cover classification, and the satellite benchmarks in remote sensing.
Challenges
- Scale and viewpoint vary within a dataset. A change of flight height changes the GSD and with it the size of every object in pixels; UAVDT’s altitude attribute spans 10 m to more than 70 m (Du et al., 2018). Oblique video adds a scale gradient within each frame, and perspective changes appearance between nadir and oblique views.
- Small, dense and thin objects. The VisDrone organizers describe small-object false positives and duplicate detections under occlusion (Du et al., 2019); power lines are thin and long rather than compact (Abdelfattah et al., 2020).
- Surfaces that do not match. Water, snow, sand, uniform fields and moving vegetation give few stable features, which is why the acquisition guidance above raises overlap or flight height for them.
- Camera motion and timing. Rolling-shutter readout, motion blur and vibration distort images taken at speed (Vautherin et al., 2016), and illumination changes during and between flights, with shadows that move.
- Weather. Giordan et al. (2020) describe small drones as usually unable to operate in severe weather, name wind, especially gusts, as the main problem for platform safety and camera stability, and add precipitation, fog and mist.
- Labels. Annotating many tiny objects is slow: UAVDT’s labels took over ten experts two months (Du et al., 2018), and both VisDrone and UAVDT mark regions that were not labelled as ignored.
Evaluation
Mapping products are evaluated against independent ground truth. A common measure, used by Vautherin et al. (2016), is the root-mean-square error at check points surveyed on the ground and not used in processing, given separately for horizontal and vertical components and often expressed in multiples of the GSD. Errors should be reported where the check points lie: in their study, points in the middle of the block were more accurate than those near its edge, and GCPs around the area corrected errors only inside it. Surface models can be compared in the same way with surveyed profiles or with lidar (our summary).
Recognition tasks use the general metrics: COCO-style AP for detection (VisDrone), AP at a fixed IoU (UAVDT uses 0.7), per-class IoU for segmentation (UAVid), and the tracking and counting metrics of their tasks. Three conventions change the numbers and should be stated with any result: how ignored regions and unlabelled tiny objects are treated, the IoU threshold, and the maximum number of detections per image, which in crowded drone images can cap recall (VisDrone reports recall at up to 500). The split matters too. Images from the same flight or the same structure are highly correlated, so a random split by image, as in TTPLA, or by defect example with each image’s boxes kept together, as in CODEBRIM, measures performance on new views of seen places; separating locations, as VisDrone and UAVDT do, or structures, which CODEBRIM’s authors found hard to balance, measures performance at new sites (our reading, following the spatial-split argument in land cover classification). For detection of small objects, recall at a stated false-alarm rate per area, as in the example, is often closer to what an operator needs than AP over many IoU thresholds.
Failure Modes and Risks
- Systematic shifts from rolling shutter. Fast flights with a rolling-shutter camera and a global-shutter camera model produce systematic reprojection errors and shifted check points (Vautherin et al., 2016).
- Orthomosaic artefacts. Errors in the surface model appear as stretched or doubled building edges and smeared trees, and moving vehicles appear several times or in fragments where images from different times are blended (our summary).
- Gaps in coverage. Wind, battery limits or a lost signal can leave strips of low overlap, which show up only as a sparser model or a failed region (our reasoning).
- Detectors that do not transfer. A detector trained at one altitude and viewing angle meets objects of a different pixel size and appearance at another (our reasoning); VisDrone and UAVDT both take their test images from other locations than their training images.
- Privacy and safety. Low flights photograph people in detail, and flights near people, airports and infrastructure carry the risks the rules below address.
Deployment Considerations
Regulation. Rules differ by country, and the first item in the site checklist of Giordan et al. (2020) is to verify restrictions set by the authorities, such as near an airport. The following is taken only from the official texts named and is an outline as of November 2026, not legal guidance. In the United States, 14 CFR Part 107 applies to civil small unmanned aircraft systems, defined as aircraft under 55 pounds at take-off. The remote pilot, a visual observer if one is used, and the person at the controls must be able to see the aircraft with unaided vision (corrective lenses allowed) throughout the flight (§107.31). Ground speed may not exceed 87 knots, altitude may not exceed 400 feet above ground level unless the aircraft stays within 400 feet of a structure and no higher than 400 feet above its top, flight visibility must be at least 3 statute miles, and the aircraft must stay at least 500 feet below and 2,000 feet horizontally from clouds (§107.51). Several of these provisions, including §107.31 and §107.51, can be waived under §107.205. Under Part 89, after 16 September 2023 and unless otherwise authorized or excepted, unmanned aircraft may be operated only as a standard remote identification aircraft, which broadcasts the required message elements itself, with a remote identification broadcast module, or within the boundaries of an FAA-recognized identification area (§§89.105–89.115; eCFR, text up to date as of 29 October 2026). In the European Union, EASA describes an “open” category for low-risk operations, divided into subcategories A1 (over people but not over assemblies of people), A2 (close to people) and A3 (far from people), with drones bearing class labels C0 to C4, privately built, or placed on the market before 2024, and flight below 120 m above ground. Operations outside those limits, such as flights beyond visual line of sight, with a maximum take-off mass above 25 kg or higher than 120 m, fall in the “specific” category, which needs an operational authorisation from the national aviation authority unless they follow a declared standard scenario or the operator holds a light UAS operator certificate (EASA pages, as of November 2026).
Planning and processing. Survey practice follows from the sections above: choose the GSD from the smallest object or defect to be seen, then height, camera and overlap; check the speed against exposure and shutter readout; place GCPs or use RTK or PPK positioning, and keep independent check points; fly the same plan for repeat surveys. Giordan et al. (2020) note that processing can take hours depending on survey size and computer, and that software licences at the high end can be costly, while newer structure-from-motion software is lowering cost and complexity. Running detection on board during flight is limited by the computing power and energy the aircraft carries, the general subject of model deployment.
Related
- Remote Sensing and Earth Observation
How satellites and aircraft image the Earth in many spectral bands and with radar, what spatial, spectral, temporal and radiometric resolution mean, how the images are corrected and analysed with computer vision, and the public missions, benchmarks and pitfalls of the field, from Landsat 1 in 1972 to geospatial foundation models.
- Multi-View Stereo
Recovering dense 3D geometry, as depth maps, point clouds, meshes, or volumes, from many images whose camera poses and intrinsics are known.
- Aerial Object Detection
Detecting vehicles, ships, aircraft and other objects in overhead satellite and aerial images, where objects are small, densely packed and arbitrarily oriented; oriented bounding boxes and their angle conventions, rotated IoU and NMS, tiling of large images, the main method families, and benchmarks such as DOTA, xView, HRSC2016 and DIOR with their protocols.
- Computer Vision in Agriculture
Computer vision for crops and fields, from satellite time series to plant-level images; crop monitoring, yield estimation, weed and disease detection, fruit and wheat head counting, phenotyping in outline, splits by field, region and season, and datasets with their protocols and results.
- Change Detection
Finding where the Earth's surface changed between co-registered images taken at different dates; the preprocessing it depends on (co-registration and radiometric normalization), classical methods from image differencing and ratioing to change vector analysis, MAD and post-classification comparison, Siamese and other learned networks, and benchmarks such as OSCD, LEVIR-CD, HRSCD and xBD with their protocols.
- COLMAP
An open-source structure-from-motion and multi-view stereo pipeline that recovers camera poses, intrinsics, sparse points and dense geometry from image collections, with a GUI, a command-line interface and Python bindings.
References
- Giordan, D., Adams, M. S., Aicardi, I., Alicandro, M., Allasia, P., Baldo, M., De Berardinis, P., Dominici, D., Godone, D., Hobbs, P., Lechner, V., Niedzielski, T., Piras, M., Rotilio, M., Salvini, R., Segor, V., Sotier, B. & Troilo, F. (2020). The use of unmanned aerial vehicles (UAVs) for engineering geology applications. Bulletin of Engineering Geology and the Environment, 79(7), 3437–3481.
- Vautherin, J., Rutishauser, S., Schneider-Zapp, K., Choi, H. F., Chovancova, V., Glass, A. & Strecha, C. (2016). Photogrammetric Accuracy and Modeling of Rolling Shutter Cameras. ISPRS Annals of the Photogrammetry, Remote Sensing and Spatial Information Sciences, III-3, 139–146.
- Pix4D Documentation: “Ground sampling distance (GSD) in photogrammetry” (PIX4D, as of November 2026).
- Pix4D Documentation: “Step 1. Before Starting a Project > 1. Designing the Image Acquisition Plan > a. Selecting the Image Acquisition Plan Type” (PIX4Dmapper, as of November 2026).
- OpenDroneMap 3.6.0 documentation: “Flying Tips”, “OpenDroneMap Outputs”, “Multispectral and Thermal” and the options dsm, dtm, orthophoto-resolution and dem-resolution (as of November 2026).
- OpenDroneMap 3.5.4 documentation: “Ground Control Points” (as of November 2026).
- Du, D., Zhu, P., Wen, L., Bian, X., Ling, H., Hu, Q., Peng, T., Zheng, J., Wang, X., Zhang, Y., et al. (2019). VisDrone-DET2019: The Vision Meets Drone Object Detection in Image Challenge Results. IEEE/CVF International Conference on Computer Vision Workshops (ICCVW), 213–226.
- VisDrone: VisDrone-Dataset repository README and VisDrone2018-DET-toolkit README (version 1.0.4), GitHub (as of November 2026).
- Du, D., Qi, Y., Yu, H., Yang, Y., Duan, K., Li, G., Zhang, W., Huang, Q. & Tian, Q. (2018). The Unmanned Aerial Vehicle Benchmark: Object Detection and Tracking. European Conference on Computer Vision (ECCV), Lecture Notes in Computer Science, 375–391.
- UAVid Semantic Segmentation Dataset: home, download, task and benchmark pages (University of Twente, as of November 2026).
- Abdelfattah, R., Wang, X. & Wang, S. (2020). TTPLA: An Aerial-Image Dataset for Detection and Segmentation of Transmission Towers and Power Lines. Asian Conference on Computer Vision (ACCV), Lecture Notes in Computer Science, 601–618.
- Mundt, M., Majumder, S., Murali, S., Panetsos, P. & Ramesh, V. (2019). Meta-Learning Convolutional Neural Architectures for Multi-Target Concrete Defect Classification With the COncrete DEfect BRidge IMage Dataset. IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 11188–11197.
- Code of Federal Regulations, Title 14, Part 107, Small Unmanned Aircraft Systems, and Part 89, Remote Identification of Unmanned Aircraft (eCFR, text up to date as of 29 October 2026).
- European Union Aviation Safety Agency (EASA): “Open Category — Low Risk — Civil Drones” and “Specific Category — Civil Drones” (as of November 2026).