<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Archiving and Interchange DTD v2.3 20070202//EN" "archivearticle.dtd">
<article article-type="methods-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Remote Sens.</journal-id>
<journal-title>Frontiers in Remote Sensing</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Remote Sens.</abbrev-journal-title>
<issn pub-type="epub">2673-6187</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1599128</article-id>
<article-id pub-id-type="doi">10.3389/frsen.2025.1599128</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Remote Sensing</subject>
<subj-group>
<subject>Methods</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>A workflow for extracting ungulate trails in wetlands using 3D point clouds obtained from airborne laser scanning</article-title>
<alt-title alt-title-type="left-running-head">Wang et al.</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/frsen.2025.1599128">10.3389/frsen.2025.1599128</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Wang</surname>
<given-names>Jinhu</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2828117/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/formal-analysis/"/>
<role content-type="https://credit.niso.org/contributor-roles/visualization/"/>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
<role content-type="https://credit.niso.org/contributor-roles/validation/"/>
<role content-type="https://credit.niso.org/contributor-roles/software/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
<role content-type="https://credit.niso.org/contributor-roles/data-curation/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Cornelissen</surname>
<given-names>Perry</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
<role content-type="https://credit.niso.org/contributor-roles/conceptualization/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Kissling</surname>
<given-names>W. Daniel</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/164714/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/investigation/"/>
<role content-type="https://credit.niso.org/contributor-roles/funding-acquisition/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
<role content-type="https://credit.niso.org/contributor-roles/project-administration/"/>
<role content-type="https://credit.niso.org/contributor-roles/conceptualization/"/>
<role content-type="https://credit.niso.org/contributor-roles/supervision/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>Department of Theoretical and Computational Ecology</institution>, <institution>Institute for Biodiversity and Ecosystem Dynamics (IBED)</institution>, <addr-line>Amsterdam</addr-line>, <country>Netherlands</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>Staatsbosbeheer</institution>, <addr-line>Amersfoort</addr-line>, <country>Netherlands</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/149987/overview">Eduardo Landulfo</ext-link>, Instituto de Pesquisas Energ&#xe9;ticas e Nucleares (IPEN), Brazil</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/121779/overview">Massimo Menenti</ext-link>, Delft University of Technology, Netherlands</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2302347/overview">Fan Mo</ext-link>, Ministry of Natural Resources of the People&#x2019;s Republic of China, China</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2988472/overview">Tomasz Lipecki</ext-link>, AGH University of Krakow, Poland</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Jinhu Wang, <email>j.wang7@uva.nl</email>
</corresp>
</author-notes>
<pub-date pub-type="epub">
<day>04</day>
<month>08</month>
<year>2025</year>
</pub-date>
<pub-date pub-type="collection">
<year>2025</year>
</pub-date>
<volume>6</volume>
<elocation-id>1599128</elocation-id>
<history>
<date date-type="received">
<day>24</day>
<month>03</month>
<year>2025</year>
</date>
<date date-type="accepted">
<day>25</day>
<month>06</month>
<year>2025</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2025 Wang, Cornelissen and Kissling.</copyright-statement>
<copyright-year>2025</copyright-year>
<copyright-holder>Wang, Cornelissen and Kissling</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>Ungulates and other mammalian herbivores can create trails in dense vegetation by trampling and browsing. This can affect vegetation structure and result in the fragmentation of closed, high vegetation, with subsequent impacts on biodiversity. Manually mapping trails in the field or from aerial photographs can be challenging and time-consuming, especially in inaccessible or difficult-to-access habitats such as wetlands and if trails occur beneath the canopy of woody plants (i.e., trees and shrubs) or in other tall vegetation (e.g., reed). Airborne laser scanning (ALS) provides an alternative method because Light Detection and Ranging (LiDAR) can record returns from both the canopy and the ground, as some laser pulses pass through gaps in the vegetation, resulting in highly accurate and dense three-dimensional (3D) point clouds. Here, we present a workflow for extracting ungulate trails using 3D point clouds obtained from country-wide ALS surveys, illustrated by red deer trampling in reedbeds within a 36&#xa0;km<sup>2</sup> marsh area of a Dutch nature reserve. The workflow starts by pre-processing to retile the LiDAR point clouds to designated tiles and removes outliers from the raw data. The (near-)terrain points are then segmented using an iterative filtering algorithm, and digital terrain models are generated with a user-defined resolution. Finally, trail cells are extracted by thresholding the residuals from iterative Laplacian smoothing and then refined by sparse 3D structure tensor voting. The parameters of the workflow were optimized with comprehensive sensitivity analyses. Applying the workflow resulted in a classification of trail and non-trail grid cells at 10&#xa0;cm resolution across the study area. Compared to manually labeled ground truths, the results showed an overall accuracy of 93% and 90% in regions of red deer grazing only and both geese and red deer grazing, respectively. To test its transferability, the workflow could be applied to other LiDAR data (e.g., ALS surveys from another flight campaign in the same study area or in a different country), to other nature areas (e.g., other rewilding sites or other wetlands), and to other ungulate species (e.g., domesticated livestock or other native large herbivores).</p>
</abstract>
<kwd-group>
<kwd>ecosystem structure</kwd>
<kwd>grazing pressure</kwd>
<kwd>habitat condition</kwd>
<kwd>large mammals</kwd>
<kwd>light detection and ranging</kwd>
<kwd>nature conservation</kwd>
<kwd>vegetation structure</kwd>
<kwd>reedbed</kwd>
</kwd-group>
<custom-meta-wrap>
<custom-meta>
<meta-name>section-at-acceptance</meta-name>
<meta-value>Lidar Sensing</meta-value>
</custom-meta>
</custom-meta-wrap>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>In many nature reserves in Europe, ungulates such as horses, cattle or red deer are introduced as ecosystem engineers to influence vegetation structure through trampling, browsing and grazing and to create diverse habitats for plants and animals (<xref ref-type="bibr" rid="B4">Bakker et al., 2018</xref>; <xref ref-type="bibr" rid="B10">Cornelissen, 2017</xref>; <xref ref-type="bibr" rid="B36">M&#xfc;ller et al., 2017</xref>). In addition to habitat heterogeneity, they can also create trails, leading to habitat fragmentation, which is one of the causes of declines in biodiversity (<xref ref-type="bibr" rid="B28">Lindenmayer and Fisher, 2013</xref>). Trails are typically linear features and evaluating their impact on ecosystems and biodiversity requires quantitatively delineating trails over large areas. Methods for linear object extraction from 2D images exist (<xref ref-type="bibr" rid="B7">Cao and Zhang, 2020</xref>; <xref ref-type="bibr" rid="B8">Chowdhary and Acharjya, 2020</xref>; <xref ref-type="bibr" rid="B18">Humeau-Heurtier, 2019</xref>; <xref ref-type="bibr" rid="B29">Liu and Peng, 2009</xref>), but extracting trails in three-dimensional (3D) vegetation can be challenging because trails are often covered by tall vegetation (e.g., overhanging reed, shrubs and trees) which makes them difficult to detect from aerial images.</p>
<p>Light detection and ranging (LiDAR) technology employs pulsed laser beams to measure the time of flight from a reflected object to return to the receiver. This offers an efficient way to obtain highly accurate geometric information of objects in the form of 3D point clouds (<xref ref-type="bibr" rid="B50">Vosselman and Maas, 2010</xref>). Airborne LiDAR systems emit laser beams from an airborne platform and thereby receive return signals from vegetation (leaves, branches, stems) or the ground. Since laser pulses can produce multiple returns, which reflect from canopy and sub-canopy elements, understory, and the ground when unobstructed, they are widely used in forestry, ecology and biodiversity research to map the 3D structure of vegetation (<xref ref-type="bibr" rid="B6">B&#xe4;ssler et al., 2011</xref>; <xref ref-type="bibr" rid="B14">Guo et al., 2017</xref>; <xref ref-type="bibr" rid="B13">Gonzalez et al., 2018</xref>; <xref ref-type="bibr" rid="B5">Bakx et al., 2019</xref>). Compared to remote sensing imagery (e.g., RGB or multispectral aerial photographs), LiDAR point cloud data offers distinct advantages for detecting trail features in vegetated environments. First, LiDAR captures elevation data at high spatial resolution and with sub-meter vertical accuracy, allowing for the detection of subtle depressions in terrain such as ungulate trails. Second, because laser pulses can obtain terrain information through gaps in the vegetation canopy and with returns from multiple vertical layers (e.g., ground, understory, and canopy), LiDAR is particularly well-suited for mapping features beneath dense or understory vegetation (<xref ref-type="bibr" rid="B45">&#x160;tular et al., 2012</xref>; <xref ref-type="bibr" rid="B47">Thompson, 2020</xref>). However, optical imagery often fails due to occlusion or lack of contrast. These properties make LiDAR highly suitable for identifying trails in marsh habitats.</p>
<p>Several methods have been developed for extracting linear features from airborne LiDAR point clouds, including road centre line and edge extraction (<xref ref-type="bibr" rid="B2">Alshawabkeh, 2020</xref>; <xref ref-type="bibr" rid="B17">Hui et al., 2016</xref>), linear object detection in urban scenarios (<xref ref-type="bibr" rid="B12">Daniels et al., 2007</xref>; <xref ref-type="bibr" rid="B26">Lari and Habib, 2014</xref>), archaeological feature extraction (<xref ref-type="bibr" rid="B40">Seitsonen and Ik&#xe4;heimo, 2021</xref>; <xref ref-type="bibr" rid="B48">Thuestad et al., 2021</xref>), and identification of hedgerows and tree lines (<xref ref-type="bibr" rid="B31">Lucas et al., 2019</xref>). In wetlands, LiDAR has been used to classify land cover types and habitats (<xref ref-type="bibr" rid="B21">Koma et al., 2021a</xref>) and to quantify the 3D structure of reedbeds (<xref ref-type="bibr" rid="B22">Koma et al., 2021b</xref>). However, to our best knowledge, there is no study that has yet analysed the trampling and browsing effects of ungulates on reedbeds using LiDAR point clouds. Understanding the impact of ungulates is of crucial importance for biodiversity conservation and habitat management.</p>
<p>Here, we present a workflow for extracting ungulate trails in wetlands from raw 3D point clouds of country-wide airborne laser scanning (ALS) surveys. We focus on red deer trails in reedbeds of an extensive marsh area in the Netherlands where this ungulate was introduced in 1992 and subsequently reached high densities (<xref ref-type="bibr" rid="B11">Cornelissen et al., 2014</xref>). Our work consists of pre-processing the LiDAR point clouds, filtering of (near-)terrain points, reconstructing Digital Terrain Models (DTMs) and subsequent classification of trail and non-trail grid cells at 10&#xa0;cm resolution using Laplacian-smoothed DTMs and sparse 3D structure tensor voting. In this work, &#x201c;trails&#x201d; refer to grid cells of the DTMs that exhibit topographic depression signatures characteristic of ungulate trampling. The specific objective is to delineate trail grid cells, enabling high-resolution mapping of trail distribution and reedbed fragmentation. We optimized the parameters of the workflow with a comprehensive sensitivity analysis and validated the workflow with manually labelled point clouds.</p>
</sec>
<sec id="s2">
<title>2 Study area and material</title>
<sec id="s2-1">
<title>2.1 Study area</title>
<p>The study was conducted in the Oostvaardersplassen nature reserve, a eutrophic wetland in the polder Zuidelijk Flevoland located in the centre of the Netherlands (<xref ref-type="fig" rid="F1">Figure 1</xref>). It is both a Ramsar site (No. 427) and a Natura 2000 site (site code: NL9802054) for breeding and wintering wetland birds. The wetland consists of a marsh (36&#xa0;km<sup>2</sup>) and a &#x201c;dry&#x201d; border zone with grasslands (20&#xa0;km<sup>2</sup>). To create a diverse landscape in the border zone, cattle and horses were introduced in 1983/1984. In 1992, red deer (<italic>Cervus elaphus</italic>) were introduced to help decrease the ongoing establishment of shrubs and trees at that time. The area is fenced and there are no large predators such as wolves or bears. As the number of ungulates was not controlled, their numbers grew exponentially and in 2010 maximum numbers were reached, leading to very high densities of &#x3e;200 animals per km<sup>2</sup> in the border zone. In 2018, the management changed because the landscape was no longer diverse and instead dominated by shortly grazed grasslands, which resulted in a decrease of bird diversity. From 2018 onwards, the ungulate populations were controlled to much lower densities of &#x3c;75 animals per km<sup>2</sup>. Although all the ungulates can potentially enter the marsh from the border zone, only red deer make use of it. They enter the reedbeds from the grassland areas and look for shrubs and trees to forage on. Our workflow development focuses on the reed-dominated marsh of the study area (<xref ref-type="fig" rid="F1">Figure 1</xref>) which has been subject to red deer trampling and grazing.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Overview of the study area Oostvaardersplassen in the Netherlands with its marsh area and grassland. The green polygon denotes the boundary of the study area (56&#xa0;km<sup>2</sup>), the purple shaded area is the marsh (largely reedbed habitat and water, 36&#xa0;km<sup>2</sup>), and the green shaded area is the border zone with grasslands (20&#xa0;km<sup>2</sup>). The inset shows the location of the study area in the Netherlands.</p>
</caption>
<graphic xlink:href="frsen-06-1599128-g001.tif">
<alt-text content-type="machine-generated">Satellite map highlighting a marsh area in purple and grassland in green. An inset map shows the location within the Netherlands. A scale of 2500 meters is included at the bottom.</alt-text>
</graphic>
</fig>
</sec>
<sec id="s2-2">
<title>2.2 Point clouds</title>
<p>We utilized the 3D point clouds collected during the fourth Dutch national ALS flight campaign, known as Actueel Hoogtebestand Nederland (AHN4), conducted between 2020 and 2022 (<ext-link ext-link-type="uri" xlink:href="https://www.ahn.nl/">https://www.ahn.nl</ext-link>). The raw AHN4 point clouds, released in LAZ format (<ext-link ext-link-type="uri" xlink:href="https://rapidlasso.com/laszip/">https://rapidlasso.com/laszip/</ext-link>), include x, y, z coordinates, intensity, the number of returns, and the GPS time of data acquisition. The AHN4 point clouds for the study area were captured in April 2020 and have an average point density of approximately 25 points per square meter. The original point clouds were downloaded from the AHN official public portal (<ext-link ext-link-type="uri" xlink:href="https://hub.arcgis.com/maps/esrinl-content::ahn4-download-kaartbladen-1/explore">https://hub.arcgis.com/maps/esrinl-content::ahn4-download-kaartbladen-1/explore</ext-link>). This included a total of seven original tiles (20DZ1, 20DZ2, 26AN2, 26BN1, 26BN2, 26AZ2, and 26BZ1). Each of these tiles has a spatial coverage of <inline-formula id="inf1">
<mml:math id="m1">
<mml:mrow>
<mml:mn>5</mml:mn>
<mml:mtext>&#x2009;km</mml:mtext>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>6.25</mml:mn>
<mml:mtext>&#x2009;km</mml:mtext>
</mml:mrow>
</mml:math>
</inline-formula>. The total number of points of these tiles is 6,243,044,410 with a total volume of 42.3&#xa0;GB. These original point clouds were used as the input into the presented workflow.</p>
</sec>
</sec>
<sec sec-type="methods" id="s3">
<title>3 Methods</title>
<p>The workflow to delineate red deer trails within reedbeds consists of four steps (<xref ref-type="fig" rid="F2">Figure 2</xref>): (1) Pre-processing; (2) Near-terrain filtering; (3) DTM reconstruction; and (4) Trail extraction.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Workflow for extracting red deer trails in reedbed habitat. The point clouds are colorized by height from red (highest) and yellow (higher) to green (intermediate) and blue (lowest), unless otherwise indicated by a color legend.</p>
</caption>
<graphic xlink:href="frsen-06-1599128-g002.tif">
<alt-text content-type="machine-generated">Flowchart illustrating the processing of point cloud data for trail extraction. Step 1: Pre-processing involves re-tiling, clipping, and noise removal. Step 2: Near-terrain filtering distinguishes between terrain and vegetation points. Step 3: Digital Terrain Model (DTM) reconstruction obtains terrain points and generates the DTM. Step 4: Laplacian smoothing is applied, followed by trail extraction. The output is trail grid cells with ten-centimeter resolution.</alt-text>
</graphic>
</fig>
<sec id="s3-1">
<title>3.1 Pre-processing</title>
<p>The downloaded AHN4 point clouds (i.e., seven tiles) of the study area were used as input for workflow step 1 (pre-processing). The pre-processing of the point clouds consists of three steps: (i) re-tiling; (ii) clipping, and (iii) outlier removal. The point cloud for input is large in storage space (i.e., the seven original tiles amount to &#x223c;42.3&#xa0;GB tile volume in LAZ format), which makes manipulating the data difficult. We therefore implemented a spatial extent-based re-tiling approach, which segments the original input point clouds (<inline-formula id="inf2">
<mml:math id="m2">
<mml:mrow>
<mml:mn>5</mml:mn>
<mml:mtext>&#x2009;km</mml:mtext>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>6.25</mml:mn>
<mml:mtext>&#x2009;km&#x2009;tiles</mml:mtext>
</mml:mrow>
</mml:math>
</inline-formula>) into <inline-formula id="inf3">
<mml:math id="m3">
<mml:mrow>
<mml:mn>50</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>50</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="normal">m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> tiles. The generated tiles were then clipped using the polygon shapefiles of the marsh area. For the clipping, we implemented the winding number algorithm which parses points within polygons (<xref ref-type="bibr" rid="B23">Kumar and Mallikarjun, 2018</xref>).</p>
<p>Statistical outlier removal (SOR) was implemented to remove noise, e.g., points from water surface reflection and sparse higher vegetation points (<xref ref-type="bibr" rid="B50">Vosselman and Maas, 2010</xref>), using the method proposed in <xref ref-type="bibr" rid="B39">Rusu et al. (2008)</xref>. Suppose <inline-formula id="inf4">
<mml:math id="m4">
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is a set of 3D points, and for each query point <inline-formula id="inf5">
<mml:math id="m5">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf6">
<mml:math id="m6">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>d</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> is the mean distance of a query point to its <inline-formula id="inf7">
<mml:math id="m7">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> nearest neighbors. For all points in <inline-formula id="inf8">
<mml:math id="m8">
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, the mean distance and standard deviation of the distances of their <inline-formula id="inf9">
<mml:math id="m9">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> nearest neighbors are then determined. Only those points are kept which have distances that are close to the mean distance of the closest neighbours, using <xref ref-type="disp-formula" rid="e1">Equation (1)</xref>.<disp-formula id="e1">
<mml:math id="m10">
<mml:mrow>
<mml:mfenced open="" close="}" separators="|">
<mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mi>P</mml:mi>
<mml:mi>k</mml:mi>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="" close="|" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>q</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>P</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:msub>
<mml:mi>&#x3c3;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:mover accent="true">
<mml:mi>d</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mo>&#x2264;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:msub>
<mml:mi>&#x3c3;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(1)</label>
</disp-formula>Here, <inline-formula id="inf10">
<mml:math id="m11">
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is a density threshold coefficient, and <inline-formula id="inf11">
<mml:math id="m12">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf12">
<mml:math id="m13">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c3;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the mean and standard deviation of the distance from a query point to its <inline-formula id="inf13">
<mml:math id="m14">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> closest neighbors. <inline-formula id="inf14">
<mml:math id="m15">
<mml:mrow>
<mml:msup>
<mml:mi>P</mml:mi>
<mml:mi>k</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> is the point set that is kept, i.e., after removing the outliers.</p>
<p>In summary, the raw ALS point clouds are first re-tiled into smaller spatial units to manage the large file sizes. Then, the tiles are clipped to the marsh boundary using polygon shapefiles. Finally, outliers are removed using the SOR method, which filters points based on their local neighbourhood distance distribution.</p>
</sec>
<sec id="s3-2">
<title>3.2 (Near-)terrain filtering</title>
<p>In workflow step 2 (near-terrain filtering), the reedbed points are removed and only the terrain and near-terrain points (i.e., ground and low vegetation points) within the study area are kept. A virtual 3D grid layer is used in this filtering approach which applies a horizontal boundary of the 3D point cloud with a user defined grid size <inline-formula id="inf15">
<mml:math id="m16">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi>g</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (<xref ref-type="fig" rid="F3">Figure 3</xref>).</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Filtering approach to obtain terrain and near-terrain points from an airborne laser scanning point cloud.</p>
</caption>
<graphic xlink:href="frsen-06-1599128-g003.tif">
<alt-text content-type="machine-generated">Flowchart depicting a process for analyzing a pre-processed point cloud. It starts with setting an initial grid size, generating a virtual grid, and interpolating elevations. The elevation of each point is compared to the grid elevation. If smaller than a threshold, the local slope is computed. If larger than a threshold, it checks for the smallest grid size. If not the smallest, grid size is reduced. If criteria are met, outputs near-terrain points or reedbed points.</alt-text>
</graphic>
</fig>
<p>To construct a 3D grid layer from a given 3D point cloud, the first step is to determine the 3D bounding box that encloses the entire point cloud. This bounding box is then discretized into a structured array of 3D grid cells by dividing it along the <inline-formula id="inf16">
<mml:math id="m17">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> axes. The number of divisions (bins) in each direction is determined based on a user-defined grid size. The origin of this grid, which is referred to as the &#x201c;lower left point&#x201d; of the bounding box, is denoted as <inline-formula id="inf17">
<mml:math id="m18">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi mathvariant="italic">min</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, which represents the minimum coordinate values in each axis direction. Each point in the point cloud is assigned a 3D grid index by comparing its coordinate <inline-formula id="inf18">
<mml:math id="m19">
<mml:mrow>
<mml:msup>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>, where <inline-formula id="inf19">
<mml:math id="m20">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="}" separators="&#x7c;">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> with the corresponding coordinate of <inline-formula id="inf20">
<mml:math id="m21">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi mathvariant="italic">min</mml:mi>
<mml:mi>i</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> using <xref ref-type="disp-formula" rid="e2">Equation 2</xref>.<disp-formula id="e2">
<mml:math id="m22">
<mml:mrow>
<mml:msup>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi mathvariant="italic">min</mml:mi>
<mml:mi>i</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mi>g</mml:mi>
<mml:mi>i</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mtext>&#x2003;</mml:mtext>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(2)</label>
</disp-formula>Here, <inline-formula id="inf21">
<mml:math id="m23">
<mml:mrow>
<mml:msup>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> denotes the grid index of a point along axis <inline-formula id="inf22">
<mml:math id="m24">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf23">
<mml:math id="m25">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mi>g</mml:mi>
<mml:mi>i</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is the user-defined grid size in the respective direction.</p>
<p>Grids that contain no points are marked as empty and excluded from further processing. <xref ref-type="fig" rid="F4">Figure 4</xref> illustrates this process of subdividing the bounding box into grid cells. Initially, the grid size is chosen to be relatively coarse to facilitate efficient organization of the raw point cloud. In later stages of the workflow, particularly during iterative filtering, the grid size is progressively reduced to extract finer terrain detail.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Iterative subdivision of the grids in the bottom layer to obtain a finer terrain surface. <bold>(a&#x2013;c)</bold> are top view of three consecutive subdivisions, and <bold>(e&#x2013;f)</bold> are the corresponding side views. The orange dots show the interpolated elevation of the grids based on the points inside each grid cell. The orange solid lines are the estimated terrain, and the cyan dashed lines indicate the threshold height.</p>
</caption>
<graphic xlink:href="frsen-06-1599128-g004.tif">
<alt-text content-type="machine-generated">Six scatter plots illustrate data distributions with varying grid overlays. Panels (a) to (c) show red, blue, and purple clusters overlaid by progressively finer green grids. Panels (d) to (f) have pink grids organizing red, blue, and purple clusters differently, highlighting distribution changes.</alt-text>
</graphic>
</fig>
<p>After the creation of the 3D grids, only the bottom layer of the grids will be used for the height interpolation and iterative subdivision. The elevation of each grid in the bottom layer is interpolated by the points inside the grid using <xref ref-type="disp-formula" rid="e3">Equation (3)</xref>.<disp-formula id="e3">
<mml:math id="m26">
<mml:mrow>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mi>g</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mn>2</mml:mn>
</mml:msqrt>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>g</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mn>2</mml:mn>
</mml:msqrt>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>g</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(3)</label>
</disp-formula>Here, <inline-formula id="inf24">
<mml:math id="m27">
<mml:mrow>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mi>g</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the interpolated elevation of a grid at the geometric center, <inline-formula id="inf25">
<mml:math id="m28">
<mml:mrow>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the elevation of point <inline-formula id="inf26">
<mml:math id="m29">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf27">
<mml:math id="m30">
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the size of the grid and <inline-formula id="inf28">
<mml:math id="m31">
<mml:mrow>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>g</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the distance from point <inline-formula id="inf29">
<mml:math id="m32">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> to the geometric center of the grid.</p>
<p>The initial terrain surface is defined as the geometric centres of a set of coarse grid cells covering the area of interest. This coarse grid is constructed by dividing the bounding box of the point clouds at a coarse resolution level. The geometric centre of each cell is calculated as the midpoint of its horizontal extent <inline-formula id="inf30">
<mml:math id="m33">
<mml:mrow>
<mml:mfenced open="{" close="}" separators="&#x7c;">
<mml:mrow>
<mml:mi>X</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>Y</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula>, formatting a regularly spaced point set. In each iteration, the bottom layer is subdivided into finer cells, and the centres of these finer cells generate an updated virtual terrain surface for filtering (near-)terrain points (<xref ref-type="fig" rid="F4">Figure 4</xref>).</p>
<p>For low vegetation like herbs and sedges, the terrain points and vegetation points might be difficult to separate, especially in places where trails are located. To prevent segmenting vegetation points as terrain points, a local terrain slope is introduced. Rather than using the geometric definition in <xref ref-type="bibr" rid="B42">Sithole and George (2004)</xref>, the interpolated elevation of grids in each subdivision is used to compute a compensated local slope using <xref ref-type="disp-formula" rid="e4">Equation 4</xref>.<disp-formula id="e4">
<mml:math id="m34">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mi>g</mml:mi>
</mml:msub>
</mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>g</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>g</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:msqrt>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(4)</label>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf31">
<mml:math id="m35">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the local slope value, <inline-formula id="inf32">
<mml:math id="m36">
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the elevation value of point <inline-formula id="inf33">
<mml:math id="m37">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf34">
<mml:math id="m38">
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mi>g</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the interpolated elevation value of the grid in which point <inline-formula id="inf35">
<mml:math id="m39">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is in, <inline-formula id="inf36">
<mml:math id="m40">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the horizontal coordinates of point <inline-formula id="inf37">
<mml:math id="m41">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf38">
<mml:math id="m42">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>g</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf39">
<mml:math id="m43">
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>g</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the geometric center of the grid. The procedure for filtering terrain and near-terrain points in an iterative approach is described in <xref ref-type="statement" rid="Algorithm_1">Algorithm 1</xref>.</p>
<p>
<statement content-type="algorithm" id="Algorithm_1">
<label>Algorithm 1</label>
<p>Iterative terrain points filtering from ALS point clouds.<list list-type="simple">
<list-item>
<p>
<bold>Input</bold>: ALS points {P}, initial and minimum grid size <inline-formula id="inf40">
<mml:math id="m44">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf41">
<mml:math id="m45">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi mathvariant="italic">min</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, height threshold <inline-formula id="inf42">
<mml:math id="m46">
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>h</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>
<bold>Output</bold>: Points labelled as terrain or vegetation <inline-formula id="inf43">
<mml:math id="m47">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mfenced open="{" close="}" separators="&#x7c;">
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>f</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>1: <bold>function IterativeTerrainFilter</bold>
</p>
</list-item>
<list-item>
<p>2: &#x2003;Assign <inline-formula id="inf44">
<mml:math id="m48">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> to all points {P}, iteration count <inline-formula id="inf45">
<mml:math id="m49">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>3: &#x2003;Initiate the grid size <inline-formula id="inf46">
<mml:math id="m50">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>g</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mi>k</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> by <inline-formula id="inf47">
<mml:math id="m51">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>4: &#x2003;<bold>while</bold> <inline-formula id="inf48">
<mml:math id="m52">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>g</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mi>k</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> &#x3e; <inline-formula id="inf49">
<mml:math id="m53">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi mathvariant="italic">min</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> <bold>do</bold>
</p>
</list-item>
<list-item>
<p>5: &#x2003;&#x2003;Create 3D grid <inline-formula id="inf50">
<mml:math id="m54">
<mml:mrow>
<mml:msup>
<mml:mi>G</mml:mi>
<mml:mi>k</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> of iteration <inline-formula id="inf51">
<mml:math id="m55">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> with <inline-formula id="inf52">
<mml:math id="m56">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>g</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>6: &#x2003;&#x2003;Obtain valid bottom layer grids <inline-formula id="inf53">
<mml:math id="m57">
<mml:mrow>
<mml:msubsup>
<mml:mi>G</mml:mi>
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mi>k</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>7: &#x2003;&#x2003;<bold>for</bold> Each grid <inline-formula id="inf54">
<mml:math id="m58">
<mml:mrow>
<mml:mi>G</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msubsup>
<mml:mi>G</mml:mi>
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mi>k</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> <bold>do</bold>
</p>
</list-item>
<list-item>
<p>8: &#x2003;&#x2003;&#x2003;Interpolate elevation <inline-formula id="inf55">
<mml:math id="m59">
<mml:mrow>
<mml:msubsup>
<mml:mi>H</mml:mi>
<mml:mi>g</mml:mi>
<mml:mi>k</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and its terrain elevation <inline-formula id="inf56">
<mml:math id="m60">
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mi>g</mml:mi>
<mml:mi>k</mml:mi>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>h</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>9: &#x2003;&#x2003;&#x2003;<bold>for</bold> Each point <inline-formula id="inf57">
<mml:math id="m61">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> has class label <inline-formula id="inf58">
<mml:math id="m62">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> <bold>do</bold>
</p>
</list-item>
<list-item>
<p>10: &#x2003;&#x2003;&#x2003;&#x2003;<bold>if</bold> <inline-formula id="inf59">
<mml:math id="m63">
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>11: &#x2003;&#x2003;&#x2003;&#x2003;&#x2003;Assign point <inline-formula id="inf60">
<mml:math id="m64">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> as <inline-formula id="inf61">
<mml:math id="m65">
<mml:mrow>
<mml:mi>v</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>g</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>12: &#x2003;&#x2003;&#x2003;&#x2003;<bold>else</bold>
</p>
</list-item>
<list-item>
<p>13: &#x2003;&#x2003;&#x2003;&#x2003;&#x2003;Compute local slope <inline-formula id="inf62">
<mml:math id="m66">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> of point <inline-formula id="inf63">
<mml:math id="m67">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>14: &#x2003;&#x2003;&#x2003;&#x2003;&#x2003;<bold>if</bold> <inline-formula id="inf64">
<mml:math id="m68">
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> then</p>
</list-item>
<list-item>
<p>15: &#x2003;&#x2003;&#x2003;&#x2003;&#x2003;&#x2003;Assign point <inline-formula id="inf65">
<mml:math id="m69">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> as <inline-formula id="inf66">
<mml:math id="m70">
<mml:mrow>
<mml:mi>v</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>g</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>16: &#x2003;&#x2003;&#x2003;&#x2003;&#x2003;<bold>end if</bold>
</p>
</list-item>
<list-item>
<p>17: &#x2003;&#x2003;&#x2003;&#x2003;<bold>end if</bold>
</p>
</list-item>
<list-item>
<p>18: &#x2003;&#x2003;&#x2003;<bold>end for</bold>
</p>
</list-item>
<list-item>
<p>19: &#x2003;&#x2003;<bold>end for</bold>
</p>
</list-item>
<list-item>
<p>20: &#x2003;&#x2003;&#x2003;&#x2003;&#x2003;&#x2003;<inline-formula id="inf67">
<mml:math id="m71">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>g</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>g</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mi>k</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>21: &#x2003;&#x2003;<inline-formula id="inf68">
<mml:math id="m72">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>22: &#x2003;end <bold>while</bold>
</p>
</list-item>
<list-item>
<p>23: &#x2003;Export all points with new classification <inline-formula id="inf69">
<mml:math id="m73">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mfenced open="{" close="}" separators="&#x7c;">
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>f</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>24: <bold>end function</bold>
</p>
</list-item>
</list>
</p>
</statement>
</p>
<p>In summary, a coarse 3D grid is created over the bounding box of the point clouds and elevation values at each grid cells are interpolated using local point distributions. Through iterative grid subdivision and terrain filtering, vegetation points are separated from terrain and near-terrain points based on height thresholds.</p>
</sec>
<sec id="s3-3">
<title>3.3 DTM reconstruction</title>
<p>In workflow step 3 (DTM reconstruction), the obtained terrain and near-terrain points are used to generate DTMs. We apply the Inverse Distance Weight (IDW) interpolation to estimate the elevation of each vertex of the DTM (<xref ref-type="fig" rid="F5">Figure 5</xref>).</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>DTM generation using the obtained terrain and near-terrain points. <bold>(a)</bold> The elevation of point <inline-formula id="inf70">
<mml:math id="m74">
<mml:mrow>
<mml:mi mathvariant="normal">P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> on a vertex of the DTM is interpolated by the height of all terrain and near-terrain points (in red color) within radius <inline-formula id="inf71">
<mml:math id="m75">
<mml:mrow>
<mml:mi mathvariant="normal">r</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. <bold>(b)</bold> A smoothing step is applied for each vertex based on adjacent neighboring vertices (green points). <bold>(c)</bold> Iterative Laplacian smoothing of the generated DTM profile in vertical direction. <inline-formula id="inf72">
<mml:math id="m76">
<mml:mrow>
<mml:mtext>DT</mml:mtext>
<mml:msup>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="normal">t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf73">
<mml:math id="m77">
<mml:mrow>
<mml:mtext>DT</mml:mtext>
<mml:msup>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="normal">t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> are profiles of a trail at iteration t and t &#x2b; 1, respectively.</p>
</caption>
<graphic xlink:href="frsen-06-1599128-g005.tif">
<alt-text content-type="machine-generated">(a) Grid with red dots and a highlighted circle showing point \((P_i^{t})\) with surrounding smaller points. (b) Geometric diagram with points labeled \(P_i^{(t)}\), \(P_i^{(t+1)}\), \(P_k\), \(P_n\), \(P_l\), and \(P_m\), connected by lines and an arrow pointing downwards. (c) Graph of curves labeled \(DTM^{(t)}\) and \(DTM^{(t+1)}\) with X and Z axes, illustrating the transition from \(P_i^{(t)}\) to \(P_i^{(t+1)}\).</alt-text>
</graphic>
</fig>
<p>As shown in <xref ref-type="fig" rid="F5">Figure 5a</xref>, the points in red are the obtained terrain and near-terrain points using the method described above (<xref ref-type="sec" rid="s3-2">Section 3.2</xref>). The blue grids are the DTM with a user-defined resolution. For a specific vertex <inline-formula id="inf74">
<mml:math id="m78">
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> of the DTM (orange point), its elevation is estimated by all red points within the neighborhood radius <inline-formula id="inf75">
<mml:math id="m79">
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> using <xref ref-type="disp-formula" rid="e5">Equation 5</xref>.<disp-formula id="e5">
<mml:math id="m80">
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>Here, <inline-formula id="inf76">
<mml:math id="m81">
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the estimated elevation of vertex <inline-formula id="inf77">
<mml:math id="m82">
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> on the DTM, <inline-formula id="inf78">
<mml:math id="m83">
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the elevation of <inline-formula id="inf79">
<mml:math id="m84">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>-th point within radius <inline-formula id="inf80">
<mml:math id="m85">
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf81">
<mml:math id="m86">
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is its distance to vertex <inline-formula id="inf82">
<mml:math id="m87">
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. The generated DTM will then be used for workflow step 4 (trail extraction).</p>
<p>In summary, the filtered terrain and near-terrain points are used to construct DTMs using IDW interpolation. Elevations at DTM vertices are computed using nearby points within a defined radius.</p>
</sec>
<sec id="s3-4">
<title>3.4 Trail extraction</title>
<p>In workflow step 4 (trail extraction), the Laplacian smoothing method is first employed to smooth the DTM mesh (<xref ref-type="bibr" rid="B15">H&#xe4;ufel, B&#xf6;ge, and Bulatov, 2020</xref>; <xref ref-type="bibr" rid="B37">Nealen et al., 2006</xref>). As shown in <xref ref-type="fig" rid="F5">Figure 5b</xref>, point <inline-formula id="inf83">
<mml:math id="m88">
<mml:mrow>
<mml:msup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> is one vertex on the DTM (orange point), and points <inline-formula id="inf84">
<mml:math id="m89">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf85">
<mml:math id="m90">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf86">
<mml:math id="m91">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf87">
<mml:math id="m92">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are its neighbouring vertices (green points). The smoothing procedure is defined by <xref ref-type="disp-formula" rid="e6">Equation 6</xref>.<disp-formula id="e6">
<mml:math id="m93">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
<mml:mo>&#x2206;</mml:mo>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
<label>(6)</label>
</disp-formula>Here, <inline-formula id="inf88">
<mml:math id="m94">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is the smoothed point of vertex <inline-formula id="inf89">
<mml:math id="m95">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> after <inline-formula id="inf90">
<mml:math id="m96">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> iteration, <inline-formula id="inf91">
<mml:math id="m97">
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is a coefficient and <inline-formula id="inf92">
<mml:math id="m98">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is defined by <xref ref-type="disp-formula" rid="e7">Equation 7</xref>.<disp-formula id="e7">
<mml:math id="m99">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mo>&#x2206;</mml:mo>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>Here, <inline-formula id="inf93">
<mml:math id="m100">
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the number of neighboring points used for smoothing P<sub>i</sub> is the query point and P<sub>j</sub> is one of the neighbouring points. As illustrated in <xref ref-type="fig" rid="F5">Figure 5c</xref>, the Laplacian smoothing is applied iteratively on the smoothed DTM mesh. <inline-formula id="inf94">
<mml:math id="m101">
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mi>T</mml:mi>
<mml:msup>
<mml:mi>M</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> is a profile of the DTM in the previous iteration and <inline-formula id="inf95">
<mml:math id="m102">
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mi>T</mml:mi>
<mml:msup>
<mml:mi>M</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> is the DTM of the next iteration. Note that only the elevation values <inline-formula id="inf96">
<mml:math id="m103">
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> are used for smoothing (<xref ref-type="fig" rid="F5">Figure 5c</xref>). Thus, the horizontal distances between the DTM vertices remain unchanged.</p>
<p>For classifying trail grid cells, the smoothed DTM is then used as input. As illustrated in <xref ref-type="fig" rid="F5">Figure 5c</xref>, <inline-formula id="inf97">
<mml:math id="m104">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mi>T</mml:mi>
<mml:mi>M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> is a profile of a trail at iteration <inline-formula id="inf98">
<mml:math id="m105">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf99">
<mml:math id="m106">
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mi>T</mml:mi>
<mml:msup>
<mml:mi>M</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> is the smoothed profile at the consecutive iteration using Laplacian smoothing. The vertices in the shallow area of the trail were smoothed such that their elevation (z) is higher compared to that of the previous iterations. For example, the elevation of point <inline-formula id="inf100">
<mml:math id="m107">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is higher than that of point <inline-formula id="inf101">
<mml:math id="m108">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. Thus, subtracting the elevation of the two DTMs results in a map of elevation difference where areas of trails show the largest elevation changes. <xref ref-type="disp-formula" rid="e8">Equation 8</xref> defines the elevation changes of DTMs from two consecutive Laplacian smoothing iterations.<disp-formula id="e8">
<mml:math id="m109">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>H</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>D</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>D</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>M</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
<label>(8)</label>
</disp-formula>Here, <inline-formula id="inf102">
<mml:math id="m110">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>H</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the calculated height difference. The grid cells of trail areas can then be determined by <xref ref-type="disp-formula" rid="e9">Equation 9</xref>.<disp-formula id="e9">
<mml:math id="m111">
<mml:mrow>
<mml:mfenced open="" close="}" separators="|">
<mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="" close="|" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>P</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mo>&#x394;</mml:mo>
<mml:mi>H</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bc;</mml:mi>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>H</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3ba;</mml:mi>
<mml:msub>
<mml:mi>&#x3c3;</mml:mi>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>H</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(9)</label>
</disp-formula>Here, <inline-formula id="inf103">
<mml:math id="m112">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the points in the trail area, <inline-formula id="inf104">
<mml:math id="m113">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the trail points, <inline-formula id="inf105">
<mml:math id="m114">
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the entire point sets, <inline-formula id="inf106">
<mml:math id="m115">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bc;</mml:mi>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>H</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf107">
<mml:math id="m116">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c3;</mml:mi>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>H</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the mean and standard deviation of <inline-formula id="inf108">
<mml:math id="m117">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>H</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf109">
<mml:math id="m118">
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the coefficient. The trail extraction step thus results in each grid cell being classified as &#x201c;Trail&#x201d; or &#x201c;Non-Trail&#x201d; (<xref ref-type="fig" rid="F2">Figure 2h</xref>).</p>
<p>The obtained &#x201c;Trail&#x201d; points are then cleaned using the SOR method described in <xref ref-type="sec" rid="s3-1">Section 3.1</xref>. After that, a spatial clustering algorithm is applied to identify patches (i.e., clusters) of connected points based on the results from the Laplacian smoothing of the DTM (<xref ref-type="bibr" rid="B9">Cohen and Deschamps, 2001</xref>). This algorithm performs spatial clustering of a given set of 3D points <inline-formula id="inf110">
<mml:math id="m119">
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="}" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>N</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> based on a connectivity criterion defined by a radius <inline-formula id="inf111">
<mml:math id="m120">
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. The goal is to partition <inline-formula id="inf112">
<mml:math id="m121">
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> into clusters <inline-formula id="inf113">
<mml:math id="m122">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> such that for any two points <inline-formula id="inf114">
<mml:math id="m123">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf115">
<mml:math id="m124">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, they belong to the same cluster if there exists a path of points <inline-formula id="inf116">
<mml:math id="m125">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> where each consecutive pair of points <inline-formula id="inf117">
<mml:math id="m126">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>a</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf118">
<mml:math id="m127">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>b</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> satisfies: <inline-formula id="inf119">
<mml:math id="m128">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>a</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>b</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, here <inline-formula id="inf120">
<mml:math id="m129">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the Euclidean distance computation function. The algorithm begins by constructing a KD-tree for efficient nearest neighbor searching. For each point <inline-formula id="inf121">
<mml:math id="m130">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, a radius search retrieves the set of neighors <inline-formula id="inf122">
<mml:math id="m131">
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, such that <inline-formula id="inf123">
<mml:math id="m132">
<mml:mrow>
<mml:mfenced open="" close="}" separators="|">
<mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="" close="|" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>P</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msubsup>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:mo>&#x2264;</mml:mo>
<mml:msup>
<mml:mi>r</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula>. Then a union-find data structure also known as Disjoint Set Union (DSU) is used to efficiently merge points into connected components, where each point <inline-formula id="inf124">
<mml:math id="m133">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> initially represents its own cluster. When <inline-formula id="inf125">
<mml:math id="m134">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> finds a neighbor <inline-formula id="inf126">
<mml:math id="m135">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> with <inline-formula id="inf127">
<mml:math id="m136">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3e;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, then a union operation is performed using <xref ref-type="disp-formula" rid="e10">Equation 10</xref>.<disp-formula id="e10">
<mml:math id="m137">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2192;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(10)</label>
</disp-formula>After processing all points, clusters are identified by extracting the connected components where all points sharing the same root representative in the DSU form a cluster. This results in a partition of <inline-formula id="inf128">
<mml:math id="m138">
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> into <inline-formula id="inf129">
<mml:math id="m139">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> clusters <inline-formula id="inf130">
<mml:math id="m140">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> using <xref ref-type="disp-formula" rid="e11">Equation 11</xref>.<disp-formula id="e11">
<mml:math id="m141">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="" close="|" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mtext>&#x2009;</mml:mtext>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>f</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>}</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>&#x2200;</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="normal">j</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="normal">P</mml:mi>
</mml:mrow>
</mml:math>
<label>(11)</label>
</disp-formula>The clusters are then used to extract linear features and to refine the trail extraction results. To achieve this, a 3D structure tensor <inline-formula id="inf131">
<mml:math id="m142">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> is calculated at the neighborhood and 3D sparse tensor voting is applied (<xref ref-type="bibr" rid="B19">J&#xf6;rgens and Moreno, 2015</xref>) to enhance the linear feature extraction and to remove small, non-linear and isolated clusters. The dimension of a neighborhood is determined as follows: Suppose <inline-formula id="inf132">
<mml:math id="m143">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>z</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> are the coordinates of a point <inline-formula id="inf133">
<mml:math id="m144">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf134">
<mml:math id="m145">
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> denotes the transpose of the matrix. Then the centroid of all the neighborhood points is determined by <xref ref-type="disp-formula" rid="e12">Equation 12</xref>.<disp-formula id="e12">
<mml:math id="m146">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>p</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(12)</label>
</disp-formula>Here, <inline-formula id="inf135">
<mml:math id="m147">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the number of points in the neighbourhood. The 3D structure tensor <inline-formula id="inf136">
<mml:math id="m148">
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> of those points is then defined by <xref ref-type="disp-formula" rid="e13">Equation 13</xref>.<disp-formula id="e13">
<mml:math id="m149">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:msup>
<mml:mi>Q</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:math>
<label>(13)</label>
</disp-formula>Here, <inline-formula id="inf137">
<mml:math id="m150">
<mml:mrow>
<mml:mi>Q</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mover accent="true">
<mml:mi>p</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mover accent="true">
<mml:mi>p</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mover accent="true">
<mml:mi>p</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>. <inline-formula id="inf138">
<mml:math id="m151">
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is a symmetric matrix and can be decomposed as <inline-formula id="inf139">
<mml:math id="m152">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>R</mml:mi>
<mml:mi>I</mml:mi>
<mml:msup>
<mml:mi>R</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf140">
<mml:math id="m153">
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is a rotation matrix and <inline-formula id="inf141">
<mml:math id="m154">
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is a diagonal positive definite matrix in this case. The elements of <inline-formula id="inf142">
<mml:math id="m155">
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> are the eigenvalues of matrix <inline-formula id="inf143">
<mml:math id="m156">
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. The three eigenvalues are positive, can be denoted by <inline-formula id="inf144">
<mml:math id="m157">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and are sorted such that <inline-formula id="inf145">
<mml:math id="m158">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. The corresponding eigenvectors are <inline-formula id="inf146">
<mml:math id="m159">
<mml:mrow>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, respectively. (<xref ref-type="bibr" rid="B52">Weinmann et al., 2015</xref>). Thus, <xref ref-type="disp-formula" rid="e13">Equation 13</xref> can be rewritten to <xref ref-type="disp-formula" rid="e14">Equation 14</xref> as follows:<disp-formula id="e14">
<mml:math id="m160">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>3</mml:mn>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>T</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
<label>(14)</label>
</disp-formula>The linearity, planarity and sphericity of the structure tensor are defined as follows (<xref ref-type="disp-formula" rid="e15">Equation 15</xref>):<disp-formula id="e15">
<mml:math id="m161">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>L</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mn>1</mml:mn>
<mml:mi>T</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mn>1</mml:mn>
<mml:mi>T</mml:mi>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mn>2</mml:mn>
<mml:mi>T</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mn>1</mml:mn>
<mml:mi>T</mml:mi>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mn>2</mml:mn>
<mml:mi>T</mml:mi>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mn>3</mml:mn>
<mml:mi>T</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(15)</label>
</disp-formula>The sparse 3D structure tensor defined in <xref ref-type="disp-formula" rid="e14">Equation 14</xref> can then be reformulated as <xref ref-type="disp-formula" rid="e16">Equation 16</xref>:<disp-formula id="e16">
<mml:math id="m162">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>L</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>P</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>S</mml:mi>
</mml:mrow>
</mml:math>
<label>(16)</label>
</disp-formula>Based on the above decomposition, sparse 3D structure tensor voting is applied on the obtained point clusters (<xref ref-type="bibr" rid="B33">Medioni et al., 2000</xref>). In this workflow, the linear voting field is computed as given in <xref ref-type="fig" rid="F6">Figure 6</xref>.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Linear tensor voting direction and the decay of the voting strength. <bold>(a)</bold> Voting from point <inline-formula id="inf147">
<mml:math id="m163">
<mml:mrow>
<mml:mi>O</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> to point <inline-formula id="inf148">
<mml:math id="m164">
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. <bold>(b)</bold> The voting weight of the voting field.</p>
</caption>
<graphic xlink:href="frsen-06-1599128-g006.tif">
<alt-text content-type="machine-generated">(a) Diagram showing vectors and stick tensors at voter O and to votee P, with arrows and angles labeled. (b) Contour plot displaying decay values with a color gradient, ranging from 0 to 1, depicting a symmetrical pattern centered on the origin.</alt-text>
</graphic>
</fig>
<p>The direction of the voting tensor <inline-formula id="inf149">
<mml:math id="m165">
<mml:mrow>
<mml:mi>O</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> to position <inline-formula id="inf150">
<mml:math id="m166">
<mml:mrow>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is obtained by rotating the voting tensor direction with angle <inline-formula id="inf151">
<mml:math id="m167">
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, as denoted by <xref ref-type="fig" rid="F6">Figure 6a</xref>. Here, <inline-formula id="inf152">
<mml:math id="m168">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the angle between vector <inline-formula id="inf153">
<mml:math id="m169">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>O</mml:mi>
<mml:mi>X</mml:mi>
</mml:mrow>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf154">
<mml:math id="m170">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>O</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>. <xref ref-type="disp-formula" rid="e17">Equation 17</xref> is used to define the weighting function which reduces the strength of the vote with the arc length <inline-formula id="inf155">
<mml:math id="m171">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>O</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mo>&#x2d8;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> and the curvature <inline-formula id="inf156">
<mml:math id="m172">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>.<disp-formula id="e17">
<mml:math id="m173">
<mml:mrow>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>v</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:msup>
<mml:mi>l</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:msup>
<mml:mi>&#x3c3;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mi>k</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#x2264;</mml:mo>
</mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x3c0;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>w</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(17)</label>
</disp-formula>Here, <inline-formula id="inf157">
<mml:math id="m174">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="|">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>v</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>sin</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf158">
<mml:math id="m175">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="|">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>v</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf159">
<mml:math id="m176">
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is a scale parameter which is defined by the radius that is used for computing the local structure tensor within its neighborhood. The voting tensor propagates its saliency to the neighboring locations and aggregates the saliency that associated with the 3D structure tensor.</p>
<p>In summary, a Laplacian smoothing procedure is iteratively applied to the generated DTMs to capture subtle depressions that are indicative of &#x201c;trails.&#x201d; Then, trail locations are identified by computing elevation differences between two consecutively smoothed DTMs. Grid cells with high residuals are classified as &#x201c;trail.&#x201d; A spatial clustering algorithm is then applied to group connected trail cells, and sparse 3D structure tensor voting is applied to refine the output by enhancing linear features and removing noisy, non-linear clusters.</p>
</sec>
<sec id="s3-5">
<title>3.5 Accuracy assessment</title>
<p>To validate the accuracy of the workflow for extracting ungulate trails, we randomly placed a total of 100 plots of <inline-formula id="inf160">
<mml:math id="m177">
<mml:mrow>
<mml:mn>30</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>30</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="normal">m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> size in our study area. All 100 sample plots were not located in water areas nor at the water-reedbed boundary to avoid incomplete plots. Half of the plots were randomly placed in those reedbed areas of the marsh in which only red deer are grazing (red colour in <xref ref-type="fig" rid="F7">Figure 7</xref>), and the other half where both red deer and graylag geese (<italic>Anser</italic>) are grazing (yellow colour in <xref ref-type="fig" rid="F7">Figure 7</xref>). Areas in which only geese are grazing were not considered (green colour in <xref ref-type="fig" rid="F7">Figure 7</xref>). Besides red deer, graylag geese are also grazing reedbeds, but they mainly feed on young reed shoots that occur near open water (<xref ref-type="bibr" rid="B4">Bakker et al., 2018</xref>). To test whether goose grazing has an influence on the trail extraction results in areas where both red deer and geese co-occur, we performed the method validation on areas of the reedbed that have either been subject only to red deer activity or to both red deer and graylag geese grazing. These areas are mapped yearly as part of the breeding bird monitoring in the marsh (<xref ref-type="bibr" rid="B55">Beemster et al., 2020</xref>).</p>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>For method validation, a total of 100 sample plots were randomly placed within the reedbeds of the marsh area that were grazed by red deer (<italic>Cervus elaphus</italic>) only and grazed both by red deer and graylag geese (<italic>Anser anser</italic>). Areas with only geese grazing were not included.</p>
</caption>
<graphic xlink:href="frsen-06-1599128-g007.tif">
<alt-text content-type="machine-generated">Map illustrating grazing patterns in a specified area. Pink areas represent locations with only red deer grazing, black areas show mixed grazing by red deer and geese, and green areas depict geese grazing exclusively. Red and blue squares indicate fifty sample plots each. A color-coded legend clarifies the map's delineations.</alt-text>
</graphic>
</fig>
<p>The accuracy of trail extraction was evaluated by comparing the results from the presented workflow with the results from manually created ground truths. Manual labelling of the point clouds was done by using the segment tool of the CloudCompare software (<ext-link ext-link-type="uri" xlink:href="https://cloudcompare.org/">https://cloudcompare.org/</ext-link>). The 3D point cloud data were first loaded and then segmented using the DB panel of CloudCompare. Then, the segmentation mode was activated (using the Scissors icon in the toolbar), and a closed polygon was drawn around the desired points by clicking sequentially. Once the selection was complete, the class labelling button was used to classify the selected &#x201c;trail&#x201d; points as class &#x201c;1&#x201d; and the rest of the points as &#x201c;non-trail&#x201d; points (classified as &#x201c;0&#x201d;). Areas of &#x201c;non-trail&#x201d; depict higher elevations compared to areas of &#x201c;trail.&#x201d; After manually labelling the discrete points, a DTM of 10&#xa0;cm resolution was generated for each plot using the same method as described in <xref ref-type="sec" rid="s3-2">Section 3.2</xref> (DTM reconstruction). The class of each grid point was assigned to that of the closest point from the manually created ground truth. A total of 9,000,000 grid points were finally labelled as ground truth across the 100 sample plots. For each plot, the overall accuracy <inline-formula id="inf161">
<mml:math id="m178">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> was used as the evaluation metric, which is defined in <xref ref-type="disp-formula" rid="e18">Equation 18</xref>.<disp-formula id="e18">
<mml:math id="m179">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>c</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>P</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>T</mml:mi>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>N</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>T</mml:mi>
<mml:mi>N</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>F</mml:mi>
<mml:mi>P</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>F</mml:mi>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(18)</label>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf162">
<mml:math id="m180">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (true positives) are the correctly extracted trail cells of 10&#xa0;cm size, <inline-formula id="inf163">
<mml:math id="m181">
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (false positives) represent non-trail cells that were wrongly extracted as trails, <inline-formula id="inf164">
<mml:math id="m182">
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (false negatives) are trails cells that are incorrectly segmented as non-trails, and <inline-formula id="inf165">
<mml:math id="m183">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (true negatives) are the correctly segmented non-trail cells. The overall accuracy was calculated for each of the 100 sample plots.</p>
</sec>
<sec id="s3-6">
<title>3.6 Sensitivity analysis</title>
<p>The presented workflow uses seventeen parameters (<xref ref-type="table" rid="T1">Table 1</xref>). The specific settings of the parameters for the application in our study area are given in <xref ref-type="table" rid="T1">Table 1</xref>. The choice of these specific parameter values was informed by sensitivity analyses or constrained by the specific characteristics of the point cloud data from our study area.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Parameters of the workflow with the specific settings (&#x201c;Value&#x2019;) that were used in the study area.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Step</th>
<th align="center">Parameter name</th>
<th align="center">Definition</th>
<th align="center">Value</th>
<th align="center">Explanation</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="3" align="center">Pre-processing</td>
<td align="center">Size</td>
<td align="center">The length of the tiles</td>
<td align="center">50 m</td>
<td align="center">A large size value results in a large point cloud tile</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf166">
<mml:math id="m184">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">The number of nearest neighbors</td>
<td align="center">6</td>
<td align="center">A larger number of nearest neighbors results in a larger outlier perception region, but also requires more computation time</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf167">
<mml:math id="m185">
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">The standard deviation multiplier threshold</td>
<td align="center">2.0</td>
<td align="center">A large <inline-formula id="inf168">
<mml:math id="m186">
<mml:mrow>
<mml:mi mathvariant="normal">&#x3b1;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> value will remove the most isolated points (outliers)</td>
</tr>
<tr>
<td rowspan="3" align="center">Near-terrain filtering</td>
<td align="center">Maximum grid size</td>
<td align="center">The maximum size of the initial grid</td>
<td align="center">15 m</td>
<td align="center">Using a coarse resolution (<inline-formula id="inf169">
<mml:math id="m187">
<mml:mrow>
<mml:mtext>Siz</mml:mtext>
<mml:msub>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mtext>init</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>) to start the filtering saves computation time</td>
</tr>
<tr>
<td align="center">Minimum grid size</td>
<td align="center">The minimum size of the grid</td>
<td align="center">0.1 m</td>
<td align="center">The minimum grid size (<inline-formula id="inf170">
<mml:math id="m188">
<mml:mrow>
<mml:mtext>Siz</mml:mtext>
<mml:msub>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>) depends on the average point density of the available point cloud</td>
</tr>
<tr>
<td align="center">Height threshold</td>
<td align="center">The height threshold to segment (near-)terrain and vegetation points</td>
<td align="center">0.5 m</td>
<td align="center">A large threshold (<inline-formula id="inf171">
<mml:math id="m189">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mi>h</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>) value will result in more points being segmented as vegetation and less points being segmented as terrain points</td>
</tr>
<tr>
<td rowspan="2" align="center">DTM generation</td>
<td align="center">Resolution</td>
<td align="center">The resolution of the desired DTM</td>
<td align="center">0.1 m</td>
<td align="center">A coarser resolution will result in a coarser DTM</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf172">
<mml:math id="m190">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mtext mathvariant="italic">DTM</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">The radius by which the height of the DTM grid is interpolated</td>
<td align="center">0.3 m</td>
<td align="center">A large radius will include more neighboring points and result in a smoother DTM</td>
</tr>
<tr>
<td rowspan="9" align="center">Trail extraction</td>
<td align="center">Iteration</td>
<td align="center">The number of Laplacian smoothing iterations performed on the generated DTM</td>
<td align="center">2 iterations</td>
<td align="center">More iterations will result in a smoother DTM surface and in the loss of fine-scale terrain features (e.g., trails). It requires at least two iterations to quantify height differences</td>
</tr>
<tr>
<td align="center">Kernel size</td>
<td align="center">The number of closest points of a query point to perform Laplacian smoothing</td>
<td align="center">49</td>
<td align="center">Large Laplacian kernel sizes result in strong smoothing effects</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf173">
<mml:math id="m191">
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">The coefficient used to segment the trail and non-trail areas by the calculated height difference of two Laplacian smoothed DTMs</td>
<td align="center">0.7</td>
<td align="center">Small <inline-formula id="inf174">
<mml:math id="m192">
<mml:mrow>
<mml:mi mathvariant="normal">&#x3ba;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> values will classify few DTM grid cells as trails and more as non-trails</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf175">
<mml:math id="m193">
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">The standard deviation multiplier threshold</td>
<td align="center">1.3</td>
<td align="center">A large <inline-formula id="inf176">
<mml:math id="m194">
<mml:mrow>
<mml:mi mathvariant="normal">&#x03C3;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> value will remove the most isolated points (outliers)</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf177">
<mml:math id="m195">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mtext mathvariant="italic">clustering</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">The radius size used to perform clustering of connected points</td>
<td align="center">0.3 m</td>
<td align="center">A small <inline-formula id="inf178">
<mml:math id="m196">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mtext mathvariant="italic">clustering</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> creates a strict connectivity criterion and results in more and dispersed clusters.</td>
</tr>
<tr>
<td align="center">Ratio</td>
<td align="center">The ratio of width to length of the bounding box of an obtained cluster</td>
<td align="center">0.4</td>
<td align="center">A large ratio value represents a cluster shape that is &#x201c;round,&#x201d; whereas a small value represents an elongated shape. The range of the ratio is <inline-formula id="inf179">
<mml:math id="m197">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>&#x3c;</mml:mo>
<mml:mtext>Ratio</mml:mtext>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf180">
<mml:math id="m198">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mtext mathvariant="italic">tensor</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">The radius size that is used for computing the local 3D shape structure</td>
<td align="center">1.0 m</td>
<td align="center">
<inline-formula id="inf181">
<mml:math id="m199">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mtext mathvariant="italic">tensor</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> should correspond to the width of the trails to ensure that features computed with the 3D shape structure are linear</td>
</tr>
<tr>
<td align="center">Minimum points number</td>
<td align="center">The minimum number of points used in the neighborhood for computing 3D shape structure</td>
<td align="center">8</td>
<td align="center">A minimum number of points is needed for the neighborhood calculation (depends on radius size and average point density)</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf182">
<mml:math id="m200">
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mtext mathvariant="italic">saliency</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">The threshold of saliency value to classify if a point was voted by its neighbors as a trail point or not</td>
<td align="center">0.4</td>
<td align="center">A large saliency value threshold will classify less points as trail</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>A total of twelve parameters were tested with a sensitivity analysis (<xref ref-type="table" rid="T2">Table 2</xref>). For each of these twelve parameters, ten experiments with different parameter values were conducted (<xref ref-type="table" rid="T2">Table 2</xref>). All other parameters were kept constant (as given in <xref ref-type="table" rid="T1">Table 1</xref>). Five of the parameters (<inline-formula id="inf183">
<mml:math id="m201">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf184">
<mml:math id="m202">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf185">
<mml:math id="m203">
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf186">
<mml:math id="m204">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>g</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf187">
<mml:math id="m205">
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>) were not subject to a sensitivity analysis for the following reasons. <inline-formula id="inf188">
<mml:math id="m206">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf189">
<mml:math id="m207">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>g</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf190">
<mml:math id="m208">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf191">
<mml:math id="m209">
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> are the parameters which influence the computation time rather than the output accuracy of the presented workflow. Their values were chosen to make the workflow computationally efficient. The parameter <inline-formula id="inf192">
<mml:math id="m210">
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> was kept constant because the used point clouds were all collected with the same flight campaign, i.e., the overall quality of the data in our study area is similar.</p>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>The parameter settings for the sensitivity analysis. Ten experiments (set 1&#x2013;10) were conducted for each parameter while keeping all other parameters as specified in <xref ref-type="table" rid="T1">Table 1</xref>.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Parameter name</th>
<th align="left">Set 1</th>
<th align="left">Set 2</th>
<th align="left">Set 3</th>
<th align="left">Set 4</th>
<th align="left">Set 5</th>
<th align="left">Set 6</th>
<th align="left">Set 7</th>
<th align="left">Set 8</th>
<th align="left">Set 9</th>
<th align="left">Set 10</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">Minimum grid size (m)</td>
<td align="left">0.1</td>
<td align="left">0.2</td>
<td align="left">0.3</td>
<td align="left">0.4</td>
<td align="left">0.5</td>
<td align="left">0.6</td>
<td align="left">0.7</td>
<td align="left">0.8</td>
<td align="left">1.0</td>
<td align="left">1.5</td>
</tr>
<tr>
<td align="left">Height threshold (m)</td>
<td align="left">0.1</td>
<td align="left">0.2</td>
<td align="left">0.3</td>
<td align="left">0.4</td>
<td align="left">0.5</td>
<td align="left">0.6</td>
<td align="left">0.7</td>
<td align="left">0.8</td>
<td align="left">1.0</td>
<td align="left">1.5</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf193">
<mml:math id="m211">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mtext mathvariant="italic">DTM</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (m)</td>
<td align="left">0.2</td>
<td align="left">0.3</td>
<td align="left">0.4</td>
<td align="left">0.5</td>
<td align="left">0.7</td>
<td align="left">0.9</td>
<td align="left">1</td>
<td align="left">1.1</td>
<td align="left">1.2</td>
<td align="left">1.5</td>
</tr>
<tr>
<td align="left">Iteration</td>
<td align="left">1</td>
<td align="left">2</td>
<td align="left">3</td>
<td align="left">4</td>
<td align="left">5</td>
<td align="left">6</td>
<td align="left">7</td>
<td align="left">8</td>
<td align="left">9</td>
<td align="left">10</td>
</tr>
<tr>
<td align="left">Kernel size (m)</td>
<td align="left">8</td>
<td align="left">16</td>
<td align="left">30</td>
<td align="left">36</td>
<td align="left">49</td>
<td align="left">64</td>
<td align="left">72</td>
<td align="left">88</td>
<td align="left">100</td>
<td align="left">112</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf194">
<mml:math id="m212">
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">0.2</td>
<td align="left">0.3</td>
<td align="left">0.4</td>
<td align="left">0.5</td>
<td align="left">0.6</td>
<td align="left">0.7</td>
<td align="left">0.8</td>
<td align="left">0.9</td>
<td align="left">1.0</td>
<td align="left">1.1</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf195">
<mml:math id="m213">
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">0.8</td>
<td align="left">0.9</td>
<td align="left">1.0</td>
<td align="left">1.1</td>
<td align="left">1.2</td>
<td align="left">1.3</td>
<td align="left">1.4</td>
<td align="left">1.5</td>
<td align="left">1.6</td>
<td align="left">1.7</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf196">
<mml:math id="m214">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mtext>clustering</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (m)</td>
<td align="left">0.1</td>
<td align="left">0.2</td>
<td align="left">0.3</td>
<td align="left">0.4</td>
<td align="left">0.5</td>
<td align="left">0.6</td>
<td align="left">0.8</td>
<td align="left">1.0</td>
<td align="left">1.5</td>
<td align="left">2.0</td>
</tr>
<tr>
<td align="left">Ratio</td>
<td align="left">0.1</td>
<td align="left">0.2</td>
<td align="left">0.3</td>
<td align="left">0.4</td>
<td align="left">0.5</td>
<td align="left">0.6</td>
<td align="left">0.7</td>
<td align="left">0.8</td>
<td align="left">0.9</td>
<td align="left">1.0</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf197">
<mml:math id="m215">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mtext>tensor</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (m)</td>
<td align="left">0.3</td>
<td align="left">0.5</td>
<td align="left">0.7</td>
<td align="left">0.9</td>
<td align="left">1.0</td>
<td align="left">1.5</td>
<td align="left">1.8</td>
<td align="left">2.0</td>
<td align="left">2.5</td>
<td align="left">3.0</td>
</tr>
<tr>
<td align="left">Minimum points number</td>
<td align="left">3</td>
<td align="left">5</td>
<td align="left">6</td>
<td align="left">7</td>
<td align="left">8</td>
<td align="left">9</td>
<td align="left">10</td>
<td align="left">11</td>
<td align="left">12</td>
<td align="left">13</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf198">
<mml:math id="m216">
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mtext>saliency</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">0.1</td>
<td align="left">0.2</td>
<td align="left">0.3</td>
<td align="left">0.4</td>
<td align="left">0.5</td>
<td align="left">0.6</td>
<td align="left">0.7</td>
<td align="left">0.8</td>
<td align="left">0.9</td>
<td align="left">1.0</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>For the near-terrain filtering (workflow step 2), the relevant parameters are <inline-formula id="inf199">
<mml:math id="m217">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>g</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf200">
<mml:math id="m218">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>g</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf201">
<mml:math id="m219">
<mml:mrow>
<mml:mi>H</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>g</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>t</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (<xref ref-type="table" rid="T1">Table 1</xref>). To evaluate the accuracy of this workflow step when changing the parameters (<xref ref-type="table" rid="T2">Table 2</xref>), we manually labelled all vegetation and near-terrain points in the 50 sample plots which were exclusively grazed by red deer (see example in <xref ref-type="sec" rid="s13">Supplementary Figure A1</xref>). The manually labelled point clouds where then compared to the automatically segmented point clouds from the workflow using different parameters settings for the <inline-formula id="inf202">
<mml:math id="m220">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>g</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (<xref ref-type="sec" rid="s13">Supplementary Figure A2</xref>) and for the <inline-formula id="inf203">
<mml:math id="m221">
<mml:mrow>
<mml:mi>H</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>g</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>t</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (<xref ref-type="sec" rid="s13">Supplementary Figure A3</xref>).</p>
<p>For the DTM reconstruction and trail extraction (workflow steps 3 and 4), the accuracy was evaluated based on the manually created trail and non-trail ground truth of the 50 sample plots that are placed in the area that is exclusively grazed by red deer.</p>
</sec>
</sec>
<sec sec-type="results" id="s4">
<title>4 Results</title>
<sec id="s4-1">
<title>4.1 Workflow results</title>
<sec id="s4-1-1">
<title>4.1.1 Pre-processing</title>
<p>The pre-processing step first loaded the seven original tiles of the raw point cloud data which cover the studied marsh area (<xref ref-type="fig" rid="F8">Figure 8a</xref>). These seven tiles of point cloud data were then retiled to square plots of <inline-formula id="inf204">
<mml:math id="m222">
<mml:mrow>
<mml:mn>50</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>m</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>50</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> size (<xref ref-type="fig" rid="F8">Figure 8b</xref>) and clipped to the boundary polygon of the marsh area (<xref ref-type="fig" rid="F8">Figure 8c</xref>). After clipping, a total of 490,234,336 points were kept. The final step of pre-processing then removed the outliers (see parameter settings in <xref ref-type="table" rid="T1">Table 1</xref>) which resulted in a total of 470,279,992 points that were kept for the near-terrain filtering step. The &#x223c;20 million removed points mainly characterized sparse higher vegetation points and water surface reflections. Their removal allowed us to improve the efficiency of the workflow by focusing on terrain and near-terrain points.</p>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>Pre-processing of the original raw point clouds. <bold>(a)</bold> Geo-location of the study area with the seven raw tiles from the AHN4 point clouds. <bold>(b)</bold> The raw tiles are retiled into <inline-formula id="inf205">
<mml:math id="m223">
<mml:mrow>
<mml:mn>50</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>m</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>50</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> square plots. <bold>(c)</bold> Clipping and outlier removal is performed on the retiled point clouds of the studied marsh area. The polygon in orange is the boundary of the studied marsh area. White areas indicate areas with water.</p>
</caption>
<graphic xlink:href="frsen-06-1599128-g008.tif">
<alt-text content-type="machine-generated">Three elevation maps showing different terrains. Map (a) features sections with labeled zones such as 20DZ1, 26AZ2 outlined in orange, with elevation ranging from -6.6 to 192.0 meters. Map (b) illustrates similar zones with varying elevation patterns, also ranging between -6.6 and 192.0 meters. Map (c) displays a continuous landmass with elevation from -3.95 to 18.50 meters, showing a more detailed terrain pattern. Each map includes a scale bar indicating distances in meters.</alt-text>
</graphic>
</fig>
</sec>
<sec id="s4-1-2">
<title>4.1.2 (Near-)terrain filtering</title>
<p>The cleaned point cloud was the input for obtaining the near-terrain points (<xref ref-type="fig" rid="F9">Figure 9</xref>). The filtering started with a maximum grid size of 15&#xa0;m and ended with a minimum grid size of 0.1 m, using a height threshold of 0.5&#xa0;m (<xref ref-type="table" rid="T1">Table 1</xref>). A total of 261,971,994 and 208,307,998 points were segmented as near-terrain and vegetation points, respectively. For the <inline-formula id="inf206">
<mml:math id="m224">
<mml:mrow>
<mml:mi>H</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>g</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>t</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, more points were segmented to near-terrain points when threshold values were larger (<xref ref-type="sec" rid="s13">Supplementary Figure A2</xref>). In contrast, the <inline-formula id="inf207">
<mml:math id="m225">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>g</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> did not show such an effect (<xref ref-type="sec" rid="s13">Supplementary Figure A1</xref>).</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>Near-terrain points filtering results. <bold>(a)</bold> Overview of the near-terrain points filtering result of the studied marsh area. <bold>(b and c)</bold> Side-views of two example regions as denoted by the rectangles.</p>
</caption>
<graphic xlink:href="frsen-06-1599128-g009.tif">
<alt-text content-type="machine-generated">Map and cross-section images illustrating land cover data. Panel (a) shows a map with blue vegetation points and red near-terrain points, measuring 4000 meters. Panels (b) and (c) provide cross-sectional views of the same data, highlighting vegetation heights of 16.0 meters and 6.3 meters respectively.</alt-text>
</graphic>
</fig>
</sec>
<sec id="s4-1-3">
<title>4.1.3 DTM reconstruction</title>
<p>The DTM reconstruction used a 10&#xa0;cm spatial resolution and a 30&#xa0;cm radius for the elevation interpolation (<xref ref-type="table" rid="T1">Table 1</xref>). This resulted in a (near-)terrain surface for the whole marsh area (<xref ref-type="fig" rid="F10">Figure 10</xref>) with a total of 155,553,656,500 grid cells. Note that the study area lies about 2&#x2013;4&#xa0;m below sea level (negative elevation values in <xref ref-type="fig" rid="F10">Figure 10</xref>) because it is located in a polder which used to be part of an inland sea. <xref ref-type="sec" rid="s13">Supplementary Figure A4</xref> illustrates the obtained near-terrain points and the generated DTM using the presented workflow. The DTM is represented using a Triangulated Irregular Network (TIN) obtained by Delaunay triangulation. The height variation of the DTM changes when changing the radius settings (<xref ref-type="sec" rid="s13">Supplementary Figure A4</xref>). DTMs obtained with a small radius showed less smoothing and more terrain details.</p>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>Generated DTM with 10&#xa0;cm resolution using the obtained terrain and near-terrain points with the presented workflow. <bold>(a)</bold> DTM of the entire study area. <bold>(b and c)</bold> Top-views of the regions denoted by the rectangles. The study area lies below sea level.</p>
</caption>
<graphic xlink:href="frsen-06-1599128-g010.tif">
<alt-text content-type="machine-generated">An elevation map showing a terrain in panel (a) with color gradients from black to green, representing elevations from -4.1 meters to -2.5 meters. Panels (b) and (c) are detailed sections magnified from different areas of the map, showing densely packed green patterns indicating terrain features. A scale of 4000 meters is given.</alt-text>
</graphic>
</fig>
</sec>
<sec id="s4-1-4">
<title>4.1.4 Trail extraction</title>
<p>The final workflow step based on the elevation changes of DTMs from two iterations of Laplacian smoothing with a kernel size of 49 points and a <inline-formula id="inf208">
<mml:math id="m226">
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> of 0.7 (<xref ref-type="table" rid="T1">Table 1</xref>) and the subsequent tensor voting allowed the extraction of trails for the whole marsh area (<xref ref-type="fig" rid="F11">Figure 11a</xref>). The highest density of trails (darkest areas in <xref ref-type="fig" rid="F11">Figure 11a</xref>) was found in the border zone with grasslands from which red deer are entering the reedbeds. For refining the &#x201c;Trail&#x201d; points with tensor voting (<xref ref-type="fig" rid="F11">Figures 11b-d</xref>), a radius size of 1.0&#xa0;m was applied with a minimum number of eight points and saliency threshold of 0.4 (<xref ref-type="table" rid="T1">Table 1</xref>). Another example of the trail extraction in the studied area is given in <xref ref-type="sec" rid="s13">Supplementary Figure A5</xref>. A total area of 1.88&#xa0;km<sup>2</sup> was extracted as trails, reflecting 11.6% of the 16.16&#xa0;km<sup>2</sup> studied marsh area (<xref ref-type="fig" rid="F6">Figure 6</xref>). Specifically, the extracted area of trails in the region of red deer grazing only, red deer and geese grazing, and geese grazing only were 0.68 km<sup>2</sup>, 1.17 km<sup>2</sup>, and 0.03 km<sup>2</sup>, respectively. This reflected 10.46%, 12. 90%, and 4.37% of those areas.</p>
<fig id="F11" position="float">
<label>FIGURE 11</label>
<caption>
<p>Extracted trails of the study area. <bold>(a)</bold> Total amount of finally extracted trails in the studied marsh area. <bold>(b)</bold> Example of trail extraction results obtained after using Laplacian smoothing. <bold>(c)</bold> Example of obtained trails after the spatial clustering algorithm had been applied. <bold>(d)</bold> Example of refined trail extraction after using sparse 3D structure tensor voting. For <bold>(b&#x2013;d)</bold>, the example refers to the area denoted by the red rectangle in <bold>(a)</bold>.</p>
</caption>
<graphic xlink:href="frsen-06-1599128-g011.tif">
<alt-text content-type="machine-generated">Four-panel black-and-white graphic: (a) large geographic region filled with network-like structures, measuring 4000 meters. (b, c, d) Close-ups of different network patterns, each showing varying densities and arrangements of the structures.</alt-text>
</graphic>
</fig>
</sec>
<sec id="s4-1-5">
<title>4.1.5 Overall accuracy assessment</title>
<p>The accuracy assessment used the manually labelled ground truth from the sample plots (<xref ref-type="fig" rid="F12">Figure 12a</xref>) and the extracted trail grid cells from the presented workflow (<xref ref-type="fig" rid="F12">Figure 12b</xref>) to calculate the <inline-formula id="inf209">
<mml:math id="m227">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. An example of one of these <inline-formula id="inf210">
<mml:math id="m228">
<mml:mrow>
<mml:mn>30</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>m</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>30</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> plots with a resolution of 10&#xa0;cm (containing 90,000 grid cells) is shown in <xref ref-type="fig" rid="F12">Figures 12a,b</xref>. For this specific sample plot, the accuracy is computed (using <xref ref-type="disp-formula" rid="e18">Equation 18</xref>) as follows:<disp-formula id="equ1">
<mml:math id="m229">
<mml:mrow>
<mml:mtext>Acc</mml:mtext>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>71016</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>11598</mml:mn>
</mml:mrow>
<mml:mn>90000</mml:mn>
</mml:mfrac>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.92</mml:mn>
</mml:mrow>
</mml:math>
</disp-formula>
</p>
<fig id="F12" position="float">
<label>FIGURE 12</label>
<caption>
<p>Accuracy of workflow for extracting red deer trails in reedbed habitat. <bold>(a and b)</bold> Example of manual versus automated trail extraction for a 30&#xa0;m &#xd7; 30&#xa0;m sample plot, with <bold>(a)</bold> showing ground truth of red deer trails which were manually labelled by visual inspection of the point cloud, and <bold>(b)</bold> automated trail extraction results from the presented workflow in the sample plot. <bold>(c)</bold> Summary of accuracies across all sample plots, comparing areas with red deer grazing only (left, n &#x3d; 50 plots) and areas where both geese and red deer are grazing (right, n &#x3d; 50 plots).</p>
</caption>
<graphic xlink:href="frsen-06-1599128-g012.tif">
<alt-text content-type="machine-generated">Three-panel image: (a) and (b) show maps with black trails overlaid on gray backgrounds, labeled &#x22;Non-Trail&#x22; and &#x22;Trail&#x22;. (c) is a box plot comparing accuracy between &#x22;Red deer only&#x22; and &#x22;Geese &#x26; Red deer&#x22;, with the latter showing higher variability.</alt-text>
</graphic>
</fig>
<p>Across all 50 plots in the red deer grazing only region, the overall accuracy of the automated trail extraction from the presented workflow was <inline-formula id="inf211">
<mml:math id="m230">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>c</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.93</mml:mn>
<mml:mo>&#xb1;</mml:mo>
<mml:mn>0.05</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> (range: 0.75&#x2013;0.98). For all the 50 plots in region grazed by both red deer and geese, the resulting accuracy was <inline-formula id="inf212">
<mml:math id="m231">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>c</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.90</mml:mn>
<mml:mo>&#xb1;</mml:mo>
<mml:mn>0.06</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> (range: 0.73&#x2013;0.98).</p>
</sec>
<sec id="s4-1-6">
<title>4.1.6 Sensitivity analysis</title>
<p>The sensitivity analyses showed how different parameter settings will influence the performance of the workflow (<xref ref-type="fig" rid="F13">Figure 13</xref>). Most influential were the <inline-formula id="inf213">
<mml:math id="m232">
<mml:mrow>
<mml:mi>H</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>g</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>t</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf214">
<mml:math id="m233">
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf215">
<mml:math id="m234">
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf216">
<mml:math id="m235">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>g</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf217">
<mml:math id="m236">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (<xref ref-type="fig" rid="F13">Figure 13</xref>). For the <inline-formula id="inf218">
<mml:math id="m237">
<mml:mrow>
<mml:mi>H</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>g</mml:mi>
<mml:mi>h</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf219">
<mml:math id="m238">
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf220">
<mml:math id="m239">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>g</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf221">
<mml:math id="m240">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
<italic>,</italic> the overall accuracy first increases and then decreases within the range of tested parameter values. For <inline-formula id="inf222">
<mml:math id="m241">
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, more than two iterations will smooth the features too much and thus reduce the accuracy of the trail extraction. <inline-formula id="inf223">
<mml:math id="m242">
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>l</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> had a similar (but gentler) trend since it defines the size of the neighborhood that will be used to perform the smoothing step. <inline-formula id="inf224">
<mml:math id="m243">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>g</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf225">
<mml:math id="m244">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mi>T</mml:mi>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> , <italic>Kernel size</italic>, <italic>Minimum points number</italic>, and <inline-formula id="inf226">
<mml:math id="m245">
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> had little influence on the accuracy of the trail extraction results (<xref ref-type="fig" rid="F13">Figure 13</xref>). They performed best when having a low value (<inline-formula id="inf227">
<mml:math id="m246">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>g</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf228">
<mml:math id="m247">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mi>T</mml:mi>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>) or an intermediate value (<italic>Kernel size</italic>, <italic>Minimum points number</italic>, and <inline-formula id="inf229">
<mml:math id="m248">
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>). The finally chosen parameter settings (indicated in red in <xref ref-type="fig" rid="F13">Figure 13</xref> and listed in <xref ref-type="table" rid="T1">Table 1</xref>) are those that provided the highest accuracy values in the 50 selected plots of the area grazed by red deer only.</p>
<fig id="F13" position="float">
<label>FIGURE 13</label>
<caption>
<p>Sensitivity analysis showing the mean accuracy with changing parameter values across 50 sample plots from the area grazed by red deer only. The red lines and dots denote the parameters that were chosen for applying the workflow in our study area (compare <xref ref-type="table" rid="T1">Table 1</xref>).</p>
</caption>
<graphic xlink:href="frsen-06-1599128-g013.tif">
<alt-text content-type="machine-generated">Graphs depict the effect of parameters on accuracy, including minimum grid size, height threshold, RDTM, iteration, kernel size, k, sigma, Rclustering, ratio, Rtensor, minimum points number, and Tsaliency. Each graph shows a marked red vertical line indicating the optimal parameter setting for maximizing accuracy.</alt-text>
</graphic>
</fig>
</sec>
</sec>
</sec>
<sec sec-type="discussion" id="s5">
<title>5 Discussion</title>
<p>This work presents a workflow for extracting ungulate trails in wetlands using 3D point cloud data obtained from airborne laser scanning. Specifically, this work focused on reedbed habitats of the marsh area in the Oostvaardersplassen nature reserve in the Netherlands, where red deer have strongly fragmented the marsh vegetation. The workflow comprises four steps (pre-processing the raw point cloud data, filtering of near-terrain points, reconstructing DTMs, and extracting the trails using Laplacian smoothing techniques refined by sparse tensor voting). The results were validated against manually labelled datasets, demonstrating an average accuracy of 90%&#x2013;93% in the study area. The sensitivity analysis allowed us to optimize the parameters in the workflow, ensuring the best performance in the study area. Overall, this workflow contributes to ecological monitoring and habitat management by offering an efficient and accurate method for assessing the impact of large herbivores such as red deer on biodiversity in marsh areas by, e.g., relating trail density to numbers of breeding birds. Below we discuss the methodological aspects of the proposed workflow, especially how the filtering of near-terrain points, the DTM generation and the trail extraction relate to other existing algorithms. We also highlight management implications and limitations of the current workflow with suggestions for future work.</p>
<sec id="s5-1">
<title>5.1 Filtering of near-terrain points</title>
<p>Filtering near-terrain and vegetation points is a fundamental step in the proposed workflow to ensure accurate and efficient extraction of ungulate trails. The filtering process begins by taking cleaned raw ALS point clouds as input. By structuring this input into grids of multiple scales, the virtual 3D layer is iteratively refined until near-terrain points are accurately identified. Several existing filtering methods are available for segmenting terrain and vegetation points from raw ALS point clouds (<xref ref-type="bibr" rid="B51">Wan et al., 2018</xref>). For example, a mathematical morphology-based filtering method, which uses a moving window to perform sequential opening and closing operations, was initially proposed to separate ground and non-ground points (<xref ref-type="bibr" rid="B27">Lindenberger, 1993</xref>). However, this method is sensitive to fine-scale variation in terrain and vegetation points and can thus influence applications such as the extraction of ungulate trails in marsh vegetation. Applying this method to filter point clouds of marsh vegetation would result in the misclassification of vegetation points as near-terrain points, thereby introducing additional errors in the subsequent DTM reconstruction and trail extraction processes. Other algorithms have attempted to improve the overall accuracy of segmenting ground and non-ground points by incorporating additional parameters, such as slope and height threshold adaptation functions (<xref ref-type="bibr" rid="B49">Vosselman, 2000</xref>; <xref ref-type="bibr" rid="B41">Sithole, 2001</xref>; <xref ref-type="bibr" rid="B16">Hu et al., 2014</xref>). An example is an easy-to-use algorithm with three parameters which was proposed to simulate the terrain as a piece of cloth (<xref ref-type="bibr" rid="B53">Zhang et al., 2016</xref>). However, this method takes predefined fixed resolutions and is thus not very flexible. Moreover, the marsh vegetation that we studied has a relatively flat terrain, and introducing more parameters not only increases the computational effort but also provides limited improvement in overall accuracy. Some filtering algorithms first identify a proportion of ground points and then progressively expand until all points are processed. For instance, an irregular triangulated network (TIN) can be used to simulate the terrain surface, and points within a predefined distance threshold are then progressively added to the terrain points (<xref ref-type="bibr" rid="B3">Axelsson, 2000</xref>; <xref ref-type="bibr" rid="B43">Sohn and Downman, 2002</xref>). However, constructing a TIN is less efficient as it costs substantial computational time and memory. Our method using iterative 3D grid filtering is thus more efficient than other filtering methods, especially regarding two aspects. First, it only uses a proportion of the points that are within their corresponding 3D grids rather than the entire point cloud. Second, it does not require to construct a TIN and hence reduces computation time. The method we implemented for filtering of near-terrain points is therefore the most appropriate solution for our application.</p>
</sec>
<sec id="s5-2">
<title>5.2 DTM generation</title>
<p>We constructed a DTM with the obtained terrain points of the marsh habitat using an IDW interpolation method with two parameters, i.e., the resolution of the desired DTM and the radius by which the height of the DTM grid is interpolated. We predefined those two parameters based on the average point density of the used point clouds, which is 20&#x2013;30 points per square meters for AHN4. Since the elevational changes in the study area are relatively small and the DTM has a high resolution (10&#xa0;cm), we did not have to take additional parameters such as the local slope and roughness into account. However, if a point cloud has a lower point density compared to the desired resolution of the DTM, holes and gaps could be generated in the DTM. Other algorithms should then be considered, e.g., those that allow hole filling and more complexed elevation interpolation. An example is the thin plate spline (TPS) interpolation which combines a hierarchical multiresolution approach to construct the DTM (<xref ref-type="bibr" rid="B34">Mongus and &#x17d;alik, 2008</xref>). However, the accuracy of the resulting DTM can be compromised, e.g., the algorithm needs further weight adaptation if there are strong topographical changes in a study area. Another choice could be the algorithm proposed by <xref ref-type="bibr" rid="B32">Maguya et al. (2013)</xref> for complex terrain. This adaptive algorithm adjusts to terrain complexity by partitioning the input data and applying linear, quadratic, or cubic spline interpolation based on the characteristics of the terrain. This adaptive approach can be particularly effective in steep and forested terrains. However, the complexity of the adaptive algorithm results in higher computational demands, which can slow down the processing for large datasets. Users who apply our workflow in other study areas should therefore be aware that the steepness and complexity of the terrain can influence the DTM reconstruction.</p>
</sec>
<sec id="s5-3">
<title>5.3 Trail extraction</title>
<p>The trails created by red deer in our study area have shallow surrounding elevations and resemble the geometric shape of valleys and canals. Common methods for extracting such features from 2D grids involve the watershed delineation, which is widely used in hydrological modeling and management (<xref ref-type="bibr" rid="B24">Lai et al., 2016</xref>). For instance, <xref ref-type="bibr" rid="B46">Tarboton (1997)</xref> introduced a watershed delineation method for determining water flow directions and upslope areas in grid-based DTMs. This method calculates the flow direction as a single angle, representing the steepest downward slope from each DTM grid cell. By assigning flow between two downslope cells, this approach improves the traditional D8 (eight directions) method by reducing grid bias and minimizing dispersion. However, the method struggles to extract valleys in flat areas and water pits. By connecting local sinks using the accumulated water inflow and direction, <xref ref-type="bibr" rid="B1">Al-Muqdadi and Merkel (2011)</xref> addressed this challenge of watershed delineation in flat and arid terrains, where traditional methods often struggle due to low relief and poorly defined drainage patterns. However, the accuracy of their watershed delineation method heavily depends on the resolution and quality of the DTM data and involves a high computational cost. Moreover, applying their watershed delineation to the 10&#xa0;cm resolution of the generated DTM in our study area would lead to a huge computational cost. <xref ref-type="bibr" rid="B54">Zhang et al. (2020)</xref> proposed a watershed merging algorithm designed to resolve the issue of fragmented watersheds caused by traditional delineation methods. This method merges smaller, disconnected watersheds into cohesive units based on the channel network, resulting in more realistic hydrological models. The merging process, however, is computationally expensive, especially when applied to large datasets with numerous small watersheds.</p>
<p>Our proposed trail extraction method uses the height residuals of two differentiated DTMs with a Laplacian smoothing technique, which has lower computational complexity and only two parameters to fine-tune the results. This potentially improves the applicability of the method and reduces computational costs but occasionally could also lead to lower accuracies. Several factors may contribute to reduced trail extraction accuracy in certain areas. First, trails with variable width or low depth may not produce sufficient elevation residuals to surpass the detection threshold, especially when the terrain is extremely flat. Second, dense or homogeneous vegetation can mask subtle terrain depressions, leading to non-classified trail grid cells. Third, variations in point cloud density or noise, such as water surface reflections, may affect interpolation quality and influence the classification of grid cells. Also, this will most likely happen if the coefficient &#x3ba; is not optimal for the plots, e.g., when a large proportion of the plot area is covered by trails. We further refined the trail extraction results by employing sparse 3D structure tensor voting. The 3D stick tensor voting that we applied is a powerful technique for enhancing linear features in 3D point clouds (<xref ref-type="bibr" rid="B25">Laidlaw and Vilanova, 2012</xref>). It propagates local orientation information to preserve geometric continuity and emphasizes structures such as ridges, edges, and skeleton-like formations. To our knowledge, we applied this technique for the first time to extract linear ecological features. Most current applications are for medical image processing and man-made object extraction (<xref ref-type="bibr" rid="B30">Liu et al., 2012</xref>; <xref ref-type="bibr" rid="B35">Moreno et al., 2012</xref>; <xref ref-type="bibr" rid="B44">Soni et al., 2021</xref>). Our application could be extended to the extraction and refinement of other ecological structures such as tree lines, hedges, and stone walls. The application of sparse 3D stick tensor voting to refine the trail extraction results not only removed outliers of the obtained trail points but also allowed combining points that were located between two trail segments.</p>
</sec>
<sec id="s5-4">
<title>5.4 Management implications</title>
<p>The results from our trail extraction workflow offer insights into the habitat use of a large mammalian herbivore, in this case red deer, in vast, inaccessible and remote habitats, such as reedbeds. The results suggest that 11.6% of the marsh area is covered by red deer trails. Based on the output of the workflow, the trail density of red deer and the resulting reedbed fragmentation can be mapped using a very high (10&#xa0;cm) resolution trail map. This allows ecologists and land managers to study the effects of ungulates on other species (e.g., breeding birds) and to adjust the management of large herbivores in case of negative effects. We found the highest density of trails at the edge with grasslands from which red deer are entering the reedbeds. Our study also suggests that it can be important to know which other herbivores are present in the area and affect the vegetation. In our study area, greylag geese also affect the reed vegetation as they forage on the reed leaves during moult. While doing so, they create paths starting from the open water into the reedbeds and eating the reed vegetation away alongside these paths, creating large patches of up to several ha with very low homogeneous reed vegetation that borders the water. However, the accuracy of our workflow was only slightly reduced in areas where both geese and red deer are grazing, suggesting that the effect of geese on red deer trail extraction was minor in our study area. Nevertheless, applications in other study areas should be aware that the effects of other herbivores should be taken into account.</p>
<p>For studying the effects of ungulate trails on the development of other species such as breeding birds, trails should be monitored over time. In the study area, it is known from annual breeding bird monitoring that some breeding bird species, e.g., the Savi&#x2019;s warbler (<italic>Locustella luscinioides</italic>), appear to be in decline in areas where red deer trails are more abundant. Furthermore, visual inspection of annual aerial photographs indicate that the density of paths increased as the red deer population grew from 50 individuals in 1992 to over 3,500 individuals in 2017. After 2018, as the red deer population decreased to 900 in 2024, a visual decrease in the number of trails can be seen on the aerial photographs. However, a detailed quantitative and spatial assessment of reedbed fragmentation caused by red deer, and its effects on breeding birds, is still lacking in the study area. For effective management, it is important to understand the extent to which different herbivore densities have negative or positive impacts on nature conservation goals, such as the conservation of certain bird species. This knowledge is essential so that timely action can be taken when biodiversity begins to decline as a result of intensive grazing by ungulates. Remote sensing applications with ALS data, like the workflow we have developed here, can thus provide useful tools for habitat condition monitoring (<xref ref-type="bibr" rid="B20">Kissling et al., 2024</xref>).</p>
</sec>
<sec id="s5-5">
<title>5.5 Limitations</title>
<p>While the workflow presented in this study has a high accuracy in the study area and shows promising results to inform habitat management, there are a few limitations that need to be considered.<list list-type="simple">
<list-item>
<p>1. Transferability. This workflow has so far been developed and applied only in one study area, the Oostvaardersplassen nature reserve in the Netherlands, and with one ALS dataset (AHN4). Its transferability should be tested in other wetland areas with reedbeds, for different species of ungulates, in a variety of habitats (e.g., outside wetlands), and for ALS datasets from different time periods and with different characteristics. Certain parameter settings, such as the <inline-formula id="inf230">
<mml:math id="m249">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>g</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and the <inline-formula id="inf231">
<mml:math id="m250">
<mml:mrow>
<mml:mi>H</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>g</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>t</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, are likely to vary depending on the used LiDAR point cloud data and the type of vegetation. <inline-formula id="inf232">
<mml:math id="m251">
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>l</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>z</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> might also be related to the specific behaviour of the ungulate and its impact on vegetation structure. <inline-formula id="inf233">
<mml:math id="m252">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> should be related to the width of the trails to ensure the linearity of a trail point in its neighbourhood can be characterized. The parameters were optimized based on the manually created ground truth using the point clouds of the study area. Those parameters probably must be re-optimized when applying the presented workflow to other study areas or datasets.</p>
</list-item>
<list-item>
<p>2. Computational challenges. The process is computationally intensive, requiring substantial computing power and storage capacity to handle large point cloud datasets. For instance, the tiles from the raw AHN4 point clouds used in this study have a volume of 42.3&#xa0;GB. After clipping to the 36&#xa0;km<sup>2</sup> large marsh area, the point clouds have a volume of 16.3&#xa0;GB in LAZ format. To run the presented workflow, at least 32&#xa0;GB computer memory and 40&#xa0;GB storage for intermediate results and output are needed. The workflow requires specialized technical skills, including proficiency in coding (e.g., C/C&#x2b;&#x2b; programming, knowledge of data structures and algorithms) and knowledge of 3D LiDAR point cloud data processing. Users need to be familiar with spatial data manipulation and point cloud data processing techniques. However, it is also possible that the authors will make this workflow more accessible through converting the C&#x2b;&#x2b; source codes into Jupyter Notebooks using the Python programming language. This would be more friendly to users without C&#x2b;&#x2b; programming skills. An alternative solution would be containerization and embedding of the workflow in a virtual research environment (<xref ref-type="bibr" rid="B20">Kissling et al., 2024</xref>).</p>
</list-item>
<list-item>
<p>3. Data availability. Access to high-resolution 3D LiDAR point cloud data from ALS surveys can be a limiting factor, especially in regions where such data is unavailable or prohibitively expensive. This was not the case in our study area because all ALS point clouds of the Netherlands (including the AHN4 used here) are freely available. As an alternative, LiDAR data acquisition with Unmanned Aerial Vehicles (UAVs) is also increasingly becoming feasible, offering an additional source of spatially-explicit data for area-based conservation and land management (<xref ref-type="bibr" rid="B20">Kissling et al., 2024</xref>). However, the performance of the workflow to LiDAR point clouds obtained with sensors on other platforms (e.g., UAV) would then also need to be evaluated.</p>
</list-item>
</list>
</p>
<p>Addressing these limitations is essential for enhancing the robustness, transferability, and applicability of the presented workflow. Our trail extraction method could also be adapted to extract other linear features such as stone walls, hedges, and tree lines. This would make it a versatile tool for ecological applications and habitat management across diverse environments, using 3D point clouds from airborne laser scanning as an input.</p>
</sec>
</sec>
<sec sec-type="conclusion" id="s6">
<title>6 Conclusion</title>
<p>This work explored the application of country-wide airborne LiDAR point cloud data to identify and map red deer trails within reedbeds of a nature reserve in the Netherlands. The developed workflow can extract these trails from 3D point clouds with high accuracy through pre-processing, filtering near-terrain points, reconstructing DTMs and employing Laplacian smoothing for trail extraction refined by sparse 3D tensor voting. The workflow allows mapping the impacts of ungulates on wetland vegetation structure and thus supports habitat management and biodiversity conservation in the study area. We recommend extending the workflow application to other regions, ungulate species and laser scanning datasets. This would allow to test the transferability of the developed method and to identify the parameter settings under a variety of ecological and environmental conditions.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s7">
<title>Data availability statement</title>
<p>The original contributions presented in the study are publicly available. This data can be found here: <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.13889768">https://doi.org/10.5281/zenodo.13889768</ext-link>.</p>
</sec>
<sec sec-type="author-contributions" id="s8">
<title>Author contributions</title>
<p>JW: Formal Analysis, Visualization, Methodology, Validation, Software, Writing &#x2013; original draft, Data curation, Writing &#x2013; review and editing. PC: Writing &#x2013; original draft, Writing &#x2013; review and editing, Conceptualization. WDK: Investigation, Funding acquisition, Writing &#x2013; original draft, Project administration, Conceptualization, Supervision, Writing &#x2013; review and editing.</p>
</sec>
<sec sec-type="funding-information" id="s9">
<title>Funding</title>
<p>The author(s) declare that financial support was received for the research and/or publication of this article. This work was supported by the European Commission (MAMBO project grant number 101060639).</p>
</sec>
<ack>
<p>We acknowledge discussions with the WP4 members of the MAMBO project (<ext-link ext-link-type="uri" xlink:href="https://www.mambo-project.eu/">https://www.mambo-project.eu/</ext-link>) and with members of the Biogeography and Macroecology (BIOMAC) lab at the University of Amsterdam, The Netherlands (<ext-link ext-link-type="uri" xlink:href="https://www.biomac.org/)">https://www.biomac.org/</ext-link>).</p>
</ack>
<sec sec-type="COI-statement" id="s10">
<title>Conflict of interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="ai-statement" id="s11">
<title>Generative AI statement</title>
<p>The author(s) declare that no Generative AI was used in the creation of this manuscript.</p>
</sec>
<sec sec-type="disclaimer" id="s12">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<sec sec-type="supplementary-material" id="s13">
<title>Supplementary material</title>
<p>The Supplementary Material for this article can be found online at: <ext-link ext-link-type="uri" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.frontiersin.org/articles/10.3389/frsen.2025.1599128/full#supplementary-material">https://www.frontiersin.org/articles/10.3389/frsen.2025.1599128/full#supplementary-material</ext-link>
</p>
<supplementary-material xlink:href="Supplementaryfile1.docx" id="SM1" mimetype="application/docx" xmlns:xlink="http://www.w3.org/1999/xlink"/>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Al-Muqdadi</surname>
<given-names>S. W.</given-names>
</name>
<name>
<surname>Merkel</surname>
<given-names>B. J.</given-names>
</name>
</person-group> (<year>2011</year>). <article-title>Automated watershed evaluation of flat terrain</article-title>. <source>J. Water Resour. Prot.</source> <volume>3</volume> (<issue>12</issue>), <fpage>892</fpage>&#x2013;<lpage>903</lpage>. <pub-id pub-id-type="doi">10.4236/jwarp.2011.312099</pub-id>
</citation>
</ref>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Alshawabkeh</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Linear feature extraction from point cloud using color information</article-title>. <source>Herit. Sci.</source> <volume>8</volume> (<issue>1</issue>), <fpage>28</fpage>. <pub-id pub-id-type="doi">10.1186/s40494-020-00371-6</pub-id>
</citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Axelsson</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2000</year>). <article-title>DEM generation from laser scanner data using adaptive TIN models</article-title>. <source>Int. Archives Photogrammetry Remote Sens.</source> <volume>33</volume> (<issue>4</issue>), <fpage>110</fpage>&#x2013;<lpage>117</lpage>.</citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bakker</surname>
<given-names>E. S.</given-names>
</name>
<name>
<surname>Veen</surname>
<given-names>C. G. F.</given-names>
</name>
<name>
<surname>Ter Heerdt</surname>
<given-names>G. J. N.</given-names>
</name>
<name>
<surname>Huig</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Sarneel</surname>
<given-names>J. M.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>High grazing pressure of geese threatens conservation and restoration of reed belts</article-title>. <source>Front. Plant Sci.</source> <volume>9</volume>, <fpage>1649</fpage>. <pub-id pub-id-type="doi">10.3389/fpls.2018.01649</pub-id>
</citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bakx</surname>
<given-names>T. R.</given-names>
</name>
<name>
<surname>Koma</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Seijmonsbergen</surname>
<given-names>A. C.</given-names>
</name>
<name>
<surname>Kissling</surname>
<given-names>W. D.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Use and categorization of light detection and ranging vegetation metrics in avian diversity and species distribution research</article-title>. <source>Divers. Distributions</source> <volume>25</volume> (<issue>7</issue>), <fpage>1045</fpage>&#x2013;<lpage>1059</lpage>. <pub-id pub-id-type="doi">10.1111/ddi.12915</pub-id>
</citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>B&#xe4;ssler</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Stadler</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>M&#xfc;ller</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>F&#xf6;rster</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>G&#xf6;ttlein</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Brandl</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2011</year>). <article-title>LiDAR as a rapid tool to predict forest habitat types in Natura 2000 networks</article-title>. <source>Biodivers. Conservation</source> <volume>20</volume> (<issue>3</issue>), <fpage>465</fpage>&#x2013;<lpage>481</lpage>. <pub-id pub-id-type="doi">10.1007/s10531-010-9959-x</pub-id>
</citation>
</ref>
<ref id="B55">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Beemster</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Sikkema</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Attema</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Broedvogels in de moeraszone van de Oostvaardersplassen in 2019. A&#x0026;W rapport 3279</article-title>. <publisher-loc>Faenwalden, Netherlands</publisher-loc>: <publisher-name>Altenburgh &#x0026; Wymenga ecologisch onderzoek</publisher-name>.</citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Cao</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>X.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>An improved Res-UNet model for tree species classification using airborne high-resolution images</article-title>. <source>Remote Sens.</source> <volume>12</volume> (<issue>7</issue>), <fpage>1128</fpage>. <pub-id pub-id-type="doi">10.3390/rs12071128</pub-id>
</citation>
</ref>
<ref id="B8">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Chowdhary</surname>
<given-names>C. L.</given-names>
</name>
<name>
<surname>Acharjya</surname>
<given-names>D. P.</given-names>
</name>
</person-group> (<year>2020</year>). &#x201c;<article-title>Segmentation and feature extraction in medical imaging: a systematic review</article-title>,&#x201d; in <source>Procedia computer science</source> (<publisher-loc>Amsterdam, Netherlands</publisher-loc>: <publisher-name>Elsevier B.V.</publisher-name>), <fpage>26</fpage>&#x2013;<lpage>36</lpage>. <pub-id pub-id-type="doi">10.1016/j.procs.2020.03.179</pub-id>
</citation>
</ref>
<ref id="B9">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Cohen</surname>
<given-names>L. D.</given-names>
</name>
<name>
<surname>Deschamps</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2001</year>). &#x201c;<article-title>Grouping connected components using minimal path techniques. Application to reconstruction of vessels in 2D and 3D images</article-title>,&#x201d; in <conf-name>Proceedings of the 2001 IEEE computer society conference on computer vision and pattern recognition</conf-name>, <volume>2</volume>, <comment>Kauai, HI, 08-14 December, 2001</comment>. <publisher-name>IEEE</publisher-name>, <fpage>II</fpage>. <pub-id pub-id-type="doi">10.1109/CVPR.2001.990932</pub-id>
</citation>
</ref>
<ref id="B10">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Cornelissen</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Large herbivores as a driving force of woodland-grassland cycles: the mutual interactions between the population dynamics of large herbivores and vegetation development in a eutrophic wetland</article-title>. <comment>PhD, WU, Wageningen University</comment>. <publisher-name>Wageningen University</publisher-name>. <pub-id pub-id-type="doi">10.18174/396698</pub-id>
</citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Cornelissen</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Jan</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Sykora</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Berendse</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>Effects of large herbivores on wood pasture dynamics in a European wetland system</article-title>. <source>Basic Appl. Ecol.</source> <volume>15</volume> (<issue>5</issue>), <fpage>396</fpage>&#x2013;<lpage>406</lpage>. <pub-id pub-id-type="doi">10.1016/j.baae.2014.06.006</pub-id>
</citation>
</ref>
<ref id="B12">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Daniels</surname>
<given-names>J. I.</given-names>
</name>
<name>
<surname>Ha</surname>
<given-names>L. K.</given-names>
</name>
<name>
<surname>Ochotta</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Silva</surname>
<given-names>C. T.</given-names>
</name>
</person-group> (<year>2007</year>). &#x201c;<article-title>Robust smooth feature extraction from point clouds</article-title>,&#x201d; in <conf-name>IEEE international conference on shape modeling and applications 2007 (SMI&#x2019;07)</conf-name>, <fpage>123</fpage>&#x2013;<lpage>136</lpage>.</citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gonzalez</surname>
<given-names>S. R.</given-names>
</name>
<name>
<surname>Latifi</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Weinacker</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Dees</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Koch</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Heurich</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Integrating LiDAR and high-resolution imagery for object-based mapping of forest habitats in a heterogeneous temperate forest landscape</article-title>. <source>Int. J. Remote Sens.</source> <volume>39</volume> (<issue>23</issue>), <fpage>8859</fpage>&#x2013;<lpage>8884</lpage>. <pub-id pub-id-type="doi">10.1080/01431161.2018.1500071</pub-id>
</citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Guo</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Coops</surname>
<given-names>N. C.</given-names>
</name>
<name>
<surname>Tompalski</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Nielsen</surname>
<given-names>S. E.</given-names>
</name>
<name>
<surname>Bater</surname>
<given-names>C. W.</given-names>
</name>
<name>
<surname>Stadt</surname>
<given-names>J. J.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Regional mapping of vegetation structure for biodiversity monitoring using airborne LiDAR data</article-title>. <source>Ecol. Inf.</source> <volume>38</volume>, <fpage>50</fpage>&#x2013;<lpage>61</lpage>. <pub-id pub-id-type="doi">10.1016/j.ecoinf.2017.01.005</pub-id>
</citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>H&#xe4;ufel</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>B&#xf6;ge</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Bulatov</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>DTM correction in areas of steep slopes</article-title>. <source>Int. Archives Photogrammetry, Remote Sens. Spatial Inf. Sci.</source> <volume>43</volume>, <fpage>233</fpage>&#x2013;<lpage>240</lpage>. <pub-id pub-id-type="doi">10.5194/isprs-archives-XLIII-B2-2020-233-2020</pub-id>
</citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hu</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Ding</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Zhu</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Lin</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Du</surname>
<given-names>Z.</given-names>
</name>
<etal/>
</person-group> (<year>2014</year>). <article-title>An adaptive surface filter for airborne laser scanning point clouds by means of regularization and bending energy</article-title>. <source>ISPRS J. Photogrammetry Remote Sens.</source> <volume>92</volume>, <fpage>98</fpage>&#x2013;<lpage>111</lpage>. <pub-id pub-id-type="doi">10.1016/j.isprsjprs.2014.02.014</pub-id>
</citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hui</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Hu</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Jin</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Yevenyo</surname>
<given-names>Y. Z.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Road centerline extraction from airborne LiDAR point cloud based on hierarchical fusion and optimization</article-title>. <source>ISPRS J. Photogrammetry Remote Sens.</source> <volume>118</volume>, <fpage>22</fpage>&#x2013;<lpage>36</lpage>. <pub-id pub-id-type="doi">10.1016/j.isprsjprs.2016.04.003</pub-id>
</citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Humeau-Heurtier</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Texture feature extraction methods: a survey</article-title>. <source>IEEE Access</source> <volume>7</volume>, <fpage>8975</fpage>&#x2013;<lpage>9000</lpage>. <pub-id pub-id-type="doi">10.1109/ACCESS.2018.2890743</pub-id>
</citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>J&#xf6;rgens</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Moreno</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Tensor voting: current state, challenges and new trends in the context of medical image analysis</article-title>. <source>Math. Vis.</source>, <fpage>163</fpage>&#x2013;<lpage>187</lpage>. <pub-id pub-id-type="doi">10.1007/978-3-319-15090-1_9</pub-id>
</citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kissling</surname>
<given-names>W. D.</given-names>
</name>
<name>
<surname>Shi</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Walicka</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>George</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Moeslund</surname>
<given-names>J. E.</given-names>
</name>
<etal/>
</person-group> (<year>2024</year>). <article-title>Towards consistently measuring and monitoring habitat condition with airborne laser scanning and unmanned aerial vehicles</article-title>. <source>Ecol. Indic.</source> <volume>169</volume>, <fpage>112970</fpage>. <pub-id pub-id-type="doi">10.1016/j.ecolind.2024.112970</pub-id>
</citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Koma</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Seijmonsbergen</surname>
<given-names>A. C.</given-names>
</name>
<name>
<surname>Kissling</surname>
<given-names>W. D.</given-names>
</name>
</person-group> (<year>2021a</year>). <article-title>Classifying wetland-related land cover types and habitats using fine-scale LiDAR metrics derived from country-wide airborne laser scanning</article-title>. <source>Remote Sens. Ecol. Conservation</source> <volume>7</volume> (<issue>1</issue>), <fpage>80</fpage>&#x2013;<lpage>96</lpage>. <pub-id pub-id-type="doi">10.1002/rse2.170</pub-id>
</citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Koma</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Zlinszky</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Bek&#x151;</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Burai</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Seijmonsbergen</surname>
<given-names>A. C.</given-names>
</name>
<name>
<surname>Kissling</surname>
<given-names>W. D.</given-names>
</name>
</person-group> (<year>2021b</year>). <article-title>Quantifying 3D vegetation structure in wetlands using differently measured airborne laser scanning data</article-title>. <source>Ecol. Indic.</source> <volume>127</volume>, <fpage>107752</fpage>. <pub-id pub-id-type="doi">10.1016/j.ecolind.2021.107752</pub-id>
</citation>
</ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kumar</surname>
<given-names>G. N.</given-names>
</name>
<name>
<surname>Mallikarjun</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>An extension to winding number and point-in-polygon algorithm</article-title>. <source>IFAC-PapersOnLine</source> <volume>51</volume>, <fpage>548</fpage>&#x2013;<lpage>553</lpage>. <pub-id pub-id-type="doi">10.1016/j.ifacol.2018.05.092</pub-id>
</citation>
</ref>
<ref id="B24">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lai</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Lv</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Pan</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Fei</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Watershed delineation using hydrographic features and a DEM in plain river network region</article-title>. <source>Hydrol. Process.</source> <volume>30</volume>, <fpage>276</fpage>&#x2013;<lpage>288</lpage>. <pub-id pub-id-type="doi">10.1002/hyp.10612</pub-id>
</citation>
</ref>
<ref id="B25">
<citation citation-type="book">
<person-group person-group-type="editor">
<name>
<surname>Laidlaw</surname>
<given-names>D. H.</given-names>
</name>
<name>
<surname>Vilanova</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2012</year>). <source>New developments in the visualization and processing of tensor fields</source> (<publisher-loc>Berlin, Heidelberg</publisher-loc>: <publisher-name>Springer Science and Business Media</publisher-name>).</citation>
</ref>
<ref id="B26">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lari</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Habib</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>An adaptive approach for the segmentation and extraction of planar and linear/cylindrical features from laser scanning data</article-title>. <source>ISPRS J. Photogrammetry Remote Sens.</source> <volume>93</volume>, <fpage>192</fpage>&#x2013;<lpage>212</lpage>. <pub-id pub-id-type="doi">10.1016/j.isprsjprs.2013.12.001</pub-id>
</citation>
</ref>
<ref id="B27">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Lindenberger</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>1993</year>). <article-title>Laser-profilmessungen zur topographischen gelandeaufnahme</article-title>. <comment>Doctoral dissertation</comment>. <publisher-name>University of Stuttgart</publisher-name>.</citation>
</ref>
<ref id="B28">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Lindenmayer</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Fischer</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2013</year>). <source>Habitat fragmentation and landscape change: an ecological and conservation synthesis</source>. <publisher-loc>Washington</publisher-loc>: <publisher-name>Island Press</publisher-name>.</citation>
</ref>
<ref id="B29">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Peng</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2009</year>). <article-title>A method of linear feature extraction from high resolution aerial images</article-title>. <source>6th Int. Conf. Fuzzy Syst. Knowl. Discov. FSKD 2009</source> <volume>3</volume>, <fpage>369</fpage>&#x2013;<lpage>373</lpage>. <pub-id pub-id-type="doi">10.1109/FSKD.2009.394</pub-id>
</citation>
</ref>
<ref id="B30">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Pomerleau</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Colas</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Siegwart</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2012</year>). &#x201c;<article-title>Normal estimation for pointcloud using GPU based sparse tensor voting</article-title>,&#x201d; in <conf-name>2012 IEEE international conference on robotics and biomimetics (ROBIO)</conf-name> (<publisher-name>IEEE</publisher-name>), <comment>Guangzhou, China, 11-14 December, 2012</comment>, <fpage>91</fpage>&#x2013;<lpage>96</lpage>.</citation>
</ref>
<ref id="B31">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lucas</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Bouten</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Koma</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Kissling</surname>
<given-names>W. D.</given-names>
</name>
<name>
<surname>Seijmonsbergen</surname>
<given-names>A. C.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Identification of linear vegetation elements in a rural landscape using LiDAR point clouds</article-title>. <source>Remote Sens.</source> <volume>11</volume> (<issue>3</issue>), <fpage>292</fpage>. <pub-id pub-id-type="doi">10.3390/rs11030292</pub-id>
</citation>
</ref>
<ref id="B32">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Maguya</surname>
<given-names>A. S.</given-names>
</name>
<name>
<surname>Junttila</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Kauranne</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2013</year>). <article-title>Adaptive algorithm for large scale DTM interpolation from LiDAR data for forestry applications in steep forested terrain</article-title>. <source>ISPRS J. Photogrammetry Remote Sens.</source> <volume>85</volume>, <fpage>74</fpage>&#x2013;<lpage>83</lpage>. <pub-id pub-id-type="doi">10.1016/j.isprsjprs.2013.08.005</pub-id>
</citation>
</ref>
<ref id="B33">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Medioni</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Tang</surname>
<given-names>C. K.</given-names>
</name>
<name>
<surname>Lee</surname>
<given-names>M. S.</given-names>
</name>
</person-group> (<year>2000</year>). &#x201c;<article-title>Tensor voting: theory and applications</article-title>,&#x201d; in <source>Proceedings of RFIA</source>, <volume>2000</volume> <publisher-loc>Paris, France</publisher-loc>: <publisher-name>Hermes, Lavoisier</publisher-name>.</citation>
</ref>
<ref id="B34">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Mongus</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>&#x17d;alik</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>2008</year>). <article-title>Parameter-free ground filtering of LiDAR data for automatic DTM generation</article-title>. <source>ISPRS J. Photogrammetry Remote Sens.</source> <volume>63</volume> (<issue>1</issue>), <fpage>72</fpage>&#x2013;<lpage>84</lpage>. <pub-id pub-id-type="doi">10.1016/j.isprsjprs.2011.10.002</pub-id>
</citation>
</ref>
<ref id="B35">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Moreno</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Pizarro</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Burgeth</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Weickert</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Garcia</surname>
<given-names>M. A.</given-names>
</name>
<name>
<surname>Puig</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2012</year>). &#x201c;<article-title>Adaptation of tensor voting to image structure estimation</article-title>,&#x201d; in <source>New developments in the visualization and processing of tensor fields</source> (<publisher-name>Berlin Heidelberg</publisher-name>: <publisher-loc>Springer</publisher-loc>), <fpage>29</fpage>&#x2013;<lpage>50</lpage>.</citation>
</ref>
<ref id="B36">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>M&#xfc;ller</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Dahm</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Klith B&#xf8;cher</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Root-Bernstein</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Svenning</surname>
<given-names>J. C.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Large herbivores in novel ecosystems: habitat selection by red deer (<italic>Cervus elaphus</italic>) in a former brown-coal mining area</article-title>. <source>PLoS One</source> <volume>12</volume> (<issue>5</issue>), <fpage>0177431</fpage>. <pub-id pub-id-type="doi">10.1371/journal.pone.0177431</pub-id>
</citation>
</ref>
<ref id="B37">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Nealen</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Igarashi</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Sorkine</surname>
<given-names>O.</given-names>
</name>
<name>
<surname>Alexa</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2006</year>). &#x201c;<article-title>Laplacian mesh optimization</article-title>,&#x201d; in <conf-name>Proceedings of the 4th international conference on computer graphics and interactive techniques in Australasia and southeast Asia, GRAPHITE &#x2019;06</conf-name> (<publisher-loc>New York, NY, USA</publisher-loc>: <publisher-name>Association for Computing Machinery</publisher-name>), <fpage>381</fpage>&#x2013;<lpage>389</lpage>. <pub-id pub-id-type="doi">10.1145/1174429.1174494</pub-id>
</citation>
</ref>
<ref id="B39">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Rusu</surname>
<given-names>R. B.</given-names>
</name>
<name>
<surname>Marton</surname>
<given-names>Z. C.</given-names>
</name>
<name>
<surname>Blodow</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Dolha</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Beetz</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2008</year>). <article-title>Towards 3D point cloud-based object maps for household environments</article-title>. <source>Robotics Aut. Syst.</source> <volume>56</volume> (<issue>11</issue>), <fpage>927</fpage>&#x2013;<lpage>941</lpage>. <pub-id pub-id-type="doi">10.1016/j.robot.2008.08.005</pub-id>
</citation>
</ref>
<ref id="B40">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Seitsonen</surname>
<given-names>O.</given-names>
</name>
<name>
<surname>Ik&#xe4;heimo</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Detecting archaeological features with airborne laser scanning in the alpine tundra of S&#xe1;pmi, Northern Finland</article-title>. <source>Remote Sens.</source> <volume>13</volume> (<issue>8</issue>), <fpage>1599</fpage>. <pub-id pub-id-type="doi">10.3390/rs13081599</pub-id>
</citation>
</ref>
<ref id="B41">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sithole</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2001</year>). <article-title>Filtering of laser altimetry data using a slope adaptive filter</article-title>. <source>Int. Archives Photogrammetry, Remote Sens. Spatial Inf. Sci.</source> <volume>34</volume>, <fpage>203</fpage>&#x2013;<lpage>210</lpage>.</citation>
</ref>
<ref id="B42">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sithole</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>George</surname>
<given-names>V.</given-names>
</name>
</person-group> (<year>2004</year>). <article-title>Experimental comparison of filter algorithms for bare-earth extraction from airborne laser scanning point clouds</article-title>. <source>ISPRS J. Photogrammetry Remote Sens.</source> <volume>59</volume> (<issue>1&#x2013;2</issue>), <fpage>85</fpage>&#x2013;<lpage>101</lpage>. <pub-id pub-id-type="doi">10.1016/j.isprsjprs.2004.05.004</pub-id>
</citation>
</ref>
<ref id="B43">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sohn</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Downman</surname>
<given-names>I.</given-names>
</name>
</person-group> (<year>2002</year>). <article-title>Terrain surface reconstruction by the use of tetrahedron model with the MDL criterion</article-title>. <source>Int. Archives Photogrammetry, Remote Sens. Spatial Inf. Sci.</source> <volume>36</volume>, <fpage>336</fpage>&#x2013;<lpage>344</lpage>.</citation>
</ref>
<ref id="B44">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Soni</surname>
<given-names>P. K.</given-names>
</name>
<name>
<surname>Rajpal</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Mehta</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Road network extraction using multi-layered filtering and tensor voting from aerial images</article-title>. <source>Egypt. J. Remote Sens. Space Sci.</source> <volume>24</volume> (<issue>2</issue>), <fpage>211</fpage>&#x2013;<lpage>219</lpage>. <pub-id pub-id-type="doi">10.1016/j.ejrs.2021.01.004</pub-id>
</citation>
</ref>
<ref id="B45">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>&#x160;tular</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Kokalj</surname>
<given-names>&#x17d;.</given-names>
</name>
<name>
<surname>O&#x161;tir</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Nuninger</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2012</year>). <article-title>Visualization of lidar-derived relief models for detection of archaeological features</article-title>. <source>J. Archaeol. Sci.</source> <volume>39</volume> (<issue>11</issue>), <fpage>3354</fpage>&#x2013;<lpage>3360</lpage>. <pub-id pub-id-type="doi">10.1016/j.jas.2012.05.029</pub-id>
</citation>
</ref>
<ref id="B46">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Tarboton</surname>
<given-names>D. G.</given-names>
</name>
</person-group> (<year>1997</year>). <article-title>A new method for the determination of flow directions and upslope areas in grid digital elevation models</article-title>. <source>Water Resour. Res.</source> <volume>33</volume> (<issue>2</issue>), <fpage>309</fpage>&#x2013;<lpage>319</lpage>. <pub-id pub-id-type="doi">10.1029/96wr03137</pub-id>
</citation>
</ref>
<ref id="B47">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Thompson</surname>
<given-names>A. E.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Detecting classic Maya settlements with lidar-derived relief visualizations</article-title>. <source>Remote Sens.</source> <volume>12</volume> (<issue>17</issue>), <fpage>2838</fpage>. <pub-id pub-id-type="doi">10.3390/rs12172838</pub-id>
</citation>
</ref>
<ref id="B48">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Thuestad</surname>
<given-names>A. E.</given-names>
</name>
<name>
<surname>Risb&#x00F8;l</surname>
<given-names>O.</given-names>
</name>
<name>
<surname>Kleppe</surname>
<given-names>J. I.</given-names>
</name>
<name>
<surname>Barlindhaug</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Myrvoll</surname>
<given-names>E. R.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Archaeological surveying of subarctic and arctic landscapes: comparing the performance of airborne laser scanning and remote sensing image data</article-title>. <source>Sustain. Switz.</source> <volume>13</volume> (<issue>4</issue>), <fpage>1</fpage>&#x2013;<lpage>19</lpage>. <pub-id pub-id-type="doi">10.3390/su13041917</pub-id>
</citation>
</ref>
<ref id="B49">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Vosselman</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2000</year>). <article-title>Slope based filtering of laser altimetry data</article-title>. <source>Int. Archives Photogrammetry Remote Sens.</source> <volume>33</volume> (<issue>Part 3B</issue>), <fpage>935</fpage>&#x2013;<lpage>942</lpage>.</citation>
</ref>
<ref id="B50">
<citation citation-type="book">
<person-group person-group-type="editor">
<name>
<surname>Vosselman</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Maas</surname>
<given-names>H. G.</given-names>
</name>
</person-group> (<year>2010</year>). <source>Airborne and terrestrial laser scanning</source> (<publisher-loc>Boca Raton</publisher-loc>: <publisher-name>CRC Press Taylor and Francis</publisher-name>).</citation>
</ref>
<ref id="B51">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wan</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Skidmore</surname>
<given-names>A. K.</given-names>
</name>
<name>
<surname>Qi</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Jin</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Yan</surname>
<given-names>G.</given-names>
</name>
<etal/>
</person-group> (<year>2018</year>). <article-title>A simple terrain relief index for tuning slope-related parameters of LiDAR ground filtering algorithms</article-title>. <source>ISPRS J. Photogrammetry Remote Sens.</source> <volume>143</volume>, <fpage>181</fpage>&#x2013;<lpage>190</lpage>. <pub-id pub-id-type="doi">10.1016/j.isprsjprs.2018.03.020</pub-id>
</citation>
</ref>
<ref id="B52">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Weinmann</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Jutzi</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Hinz</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Mallet</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Semantic point cloud interpretation based on optimal neighborhoods, relevant features and efficient classifiers</article-title>. <source>ISPRS J. Photogrammetry Remote Sens.</source> <volume>105</volume>, <fpage>286</fpage>&#x2013;<lpage>304</lpage>. <pub-id pub-id-type="doi">10.1016/j.isprsjprs.2015.01.016</pub-id>
</citation>
</ref>
<ref id="B53">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Qi</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Wan</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Xie</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>X.</given-names>
</name>
<etal/>
</person-group> (<year>2016</year>). <article-title>An easy-to-use airborne LiDAR data filtering method based on cloth simulation</article-title>. <source>Remote Sens.</source> <volume>8</volume>, <fpage>501</fpage>. <pub-id pub-id-type="doi">10.3390/rs8060501</pub-id>
</citation>
</ref>
<ref id="B54">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Zhu</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Ren</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Watershed merging: a simple and effective algorithm for channel network identification and extraction</article-title>. <source>Water Resour. Res.</source> <volume>56</volume> (<issue>10</issue>), <fpage>e2020WR027242</fpage>. <pub-id pub-id-type="doi">10.1029/2019wr026943</pub-id>
</citation>
</ref>
</ref-list>
</back>
</article>