Figure 1. Framework for 3D analyses of ground-nesting bird nests. Example images are from an agri-environment scheme site (left-blue) and spring-cereal arable site (right-yellow). A) Photograph of nest taken with colour calibrated Sony camera. B) 3D scan nests with ASUS phone and upload the point cloud into Matterport scenes for standardisation of formatting. C) Import and label point clouds in ImageJ. D) Run nest 3D energy and visibility transect analysis scripts.
Photographs of the nests and nulls were taken using a MICA colour-calibrated Sony A6000 with a baader venus-u 52mm UV filter and the camera’s own visible light filter (Moher Alsady et al., 2016). A 7% and 93% uniform (λ 200-700nm) reflectance standard was placed in situ for each photograph (Troscianko et al., 2016b). Standards were created using Zenith Polymer sintered PTFE sheets. As the lighting environment was highly variable with weather conditions, all photos were taken with a 1m2 pop-out NEEWER diffuser sheet at times greater than 2 hours from dawn and dusk (Duarte et al., 2018; Troscianko et al., 2016b). Photographs were calibrated and converted to multispectral images using the MICA toolbox v2.2.2 for ImageJ (Schneider et al., 2012; Troscianko and Stevens, 2015; van den Berg et al., 2020).

Constructing Height Maps:

The 3D scans were processed using the open-source program MeshLab v.2022.02 (Visual Computing Lab – ISTI – CNR, http://meshlab.sourceforge.net/), to extract only the height data and export the scans as .ply files (Simonov and Matantseva, 2020). These files were then imported into ImageJ, using a custom script, to create images containing each nest’s X, Y, and Z (height) coordinates, with 1 pixel representing 1mm (Schneider et al., 2012). Missing Z values (0.07% of pixel values) were filled with the mean background value. Finally, ImageJ was used to label the different parts of each scan, including the clutch (area around all the eggs), the nest (area around the scrape), the background (non-blank parts of the scan), and the individual eggs (group of regions of interest around each egg), see Figure 1. Instructions can be found within our supplementary material and on our GitHub.

Nest 3D Measures:

Cross-section maps of each nest were constructed by creating a circle selection (radius=300mm) centred on the clutch ROI. At each integer distance (radius = 0-300mm), the mean Z-value was measured and translated either to the minimum of the clutch (nest-normalised) or the surrounding background (radius-normalised) (see supplemental material). These cross-sections allowed for comparisons of the scans’ peak nest, peak clutch and trough heights and calculation of the nest’s slope.
To quantify how rough or smooth the terrain at nest locations was at different spatial scales, we used methods similar to those used for 2D pattern analysis. We measured the ‘energy’ (SD) of the Z value at different spatial scales relative to the mean wavelength of the clutches ( \(\sqrt{\text{clutch}}\ area=86mm\)), in the following octaves (1/8, 1/4, 1/2, 1, 2, 4) (Lindeberg, 2015; Michalis et al., 2017). Energy maps for each spatial scale were made using difference of Gaussians (DoG); subtracting each octave by 1.6x the same scale (Figure 2).