<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" article-type="research-article" dtd-version="2.3" xml:lang="EN">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Plant Sci.</journal-id>
<journal-title>Frontiers in Plant Science</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Plant Sci.</abbrev-journal-title>
<issn pub-type="epub">1664-462X</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fpls.2025.1641255</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Plant Science</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>A spontaneous keypoints connection algorithm for leafy plants skeletonization and phenotypes extraction</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Wang</surname>
<given-names>Zhen</given-names>
</name>
<uri xlink:href="https://loop.frontiersin.org/people/3230373/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/conceptualization/"/>
<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/methodology/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>He</surname>
<given-names>Xiangnan</given-names>
</name>
<role content-type="https://credit.niso.org/contributor-roles/data-curation/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-review-editing/"/>
<role content-type="https://credit.niso.org/contributor-roles/software/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Wang</surname>
<given-names>Yuting</given-names>
</name>
<role content-type="https://credit.niso.org/contributor-roles/writing-review-editing/"/>
<role content-type="https://credit.niso.org/contributor-roles/investigation/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Yang</surname>
<given-names>Chenxue</given-names>
</name>
<role content-type="https://credit.niso.org/contributor-roles/writing-review-editing/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Fan</surname>
<given-names>Beilei</given-names>
</name>
<role content-type="https://credit.niso.org/contributor-roles/project-administration/"/>
<role content-type="https://credit.niso.org/contributor-roles/funding-acquisition/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-review-editing/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Zhou</surname>
<given-names>Qingbo</given-names>
</name>
<role content-type="https://credit.niso.org/contributor-roles/supervision/"/>
<role content-type="https://credit.niso.org/contributor-roles/project-administration/"/>
<role content-type="https://credit.niso.org/contributor-roles/funding-acquisition/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-review-editing/"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Li</surname>
<given-names>Xian</given-names>
</name>
<xref ref-type="author-notes" rid="fn001">
<sup>*</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2561459/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/project-administration/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-review-editing/"/>
</contrib>
</contrib-group>
<aff id="aff1">
<institution>Agricultural Information Institute, Chinese Academy of Agricultural Sciences</institution>, <addr-line>Beijing</addr-line>,&#xa0;<country>China</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>Edited by: <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1089966/overview">Bijayalaxmi Mohanty</ext-link>, National University of Singapore, Singapore</p>
</fn>
<fn fn-type="edited-by">
<p>Reviewed by: <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/110993/overview">Taras P. Pasternak</ext-link>, Miguel Hern&#xe1;ndez University of Elche, Spain</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/3092756/overview">Elizabeth Berrigan</ext-link>, Salk Institute for Biological Studies, United States</p>
</fn>
<fn fn-type="corresp" id="fn001">
<p>*Correspondence: Xian Li, <email xlink:href="mailto:lixian@caas.cn">lixian@caas.cn</email>
</p>
</fn>
</author-notes>
<pub-date pub-type="epub">
<day>24</day>
<month>10</month>
<year>2025</year>
</pub-date>
<pub-date pub-type="collection">
<year>2025</year>
</pub-date>
<volume>16</volume>
<elocation-id>1641255</elocation-id>
<history>
<date date-type="received">
<day>04</day>
<month>06</month>
<year>2025</year>
</date>
<date date-type="accepted">
<day>22</day>
<month>09</month>
<year>2025</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2025 Wang, He, Wang, Yang, Fan, Zhou and Li.</copyright-statement>
<copyright-year>2025</copyright-year>
<copyright-holder>Wang, He, Wang, Yang, Fan, Zhou and Li</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>
<sec>
<title>Introduction</title>
<p>Leaf phenotypes are key indicators of plant growth status. Existing deep learning&#x2013;based leaf skeletonization typically requires extensive manual labeling, long training, and predefined keypoints, which limits scalability. We developed a training-free and label-free approach that connects spontaneously detected keypoints to generate leaf skeletons for leafy plants.</p>
</sec>
<sec>
<title>Methods</title>
<p>The method comprises random seed-point generation and adaptive keypoint connection. For plants with random leaf morphology, we determine a threshold for the angle difference among any three consecutive adjacent points and iteratively identify keypoints within circular search neighborhoods to trace leaf skeletons. For plants with regular leaf morphology, we fit the skeleton trajectory by minimizing curvature. We validated the approach on vertical and front-view images of orchids (covering random and regular morphological cases) and extracted five phenotypic parameters from the resulting skeletons. Generalization was further assessed on a maize image dataset.</p>
</sec>
<sec>
<title>Results</title>
<p>On orchid images, the proposed approach achieved an average curvature fitting error of 0.12 and an average leaf recall of 92%. Five orchid phenotypic parameters were accurately derived from the skeletons. The method also showed effective skeletonization on maize, indicating cross-species applicability.</p>
</sec>
<sec>
<title>Discussion</title>
<p>By eliminating manual labels and training, this approach reduces annotation effort and computational overhead while enabling precise geometric phenotype calculation from skeleton-based keypoints. Its effectiveness on both randomly distributed and regularly shaped leafy plants suggests suitability for high-throughput plant phenotyping workflows.</p>
</sec>
</abstract>
<kwd-group>
<kwd>leaves skeletonization</kwd>
<kwd>angle difference threshold</kwd>
<kwd>curvature minimization</kwd>
<kwd>keypoints connection</kwd>
<kwd>phenotype extraction</kwd>
</kwd-group>
<counts>
<fig-count count="10"/>
<table-count count="3"/>
<equation-count count="20"/>
<ref-count count="42"/>
<page-count count="16"/>
<word-count count="8759"/>
</counts>
<custom-meta-wrap>
<custom-meta>
<meta-name>section-in-acceptance</meta-name>
<meta-value>Plant Biophysics and Modeling</meta-value>
</custom-meta>
</custom-meta-wrap>
</article-meta>
</front>
<body>
<sec id="s1" sec-type="intro">
<label>1</label>
<title>Introduction</title>
<p>Leaf physiological and morphological phenotypes are associated with plant growth status (<xref ref-type="bibr" rid="B14">Kolhar and Jagtap, 2023</xref>; <xref ref-type="bibr" rid="B20">Li et&#xa0;al., 2020</xref>), such as plant height (<xref ref-type="bibr" rid="B23">Liu et&#xa0;al., 2023</xref>; <xref ref-type="bibr" rid="B39">Zhang et&#xa0;al., 2024</xref>), leaf shape (<xref ref-type="bibr" rid="B20">Li et&#xa0;al., 2020</xref>), leaves consistency and color (<xref ref-type="bibr" rid="B25">Nyonje et&#xa0;al., 2021</xref>). Phenotypic information can be extracted manually or through computer-based automated methods. Manual phenotype measurement based on rulers is time-consuming and difficult to accurately capture complex phenotypes (<xref ref-type="bibr" rid="B2">Cembrowska-Lech et&#xa0;al., 2023</xref>). The consistency of leaf morphology can only be perceived subjectively. Computer-based phenotyping generally involves skeletonization and phenotype extraction. Skeletonization refers to simplifying each leaf region into a centerline polyline for geometric property calculations. In this study, skeletonization simplifies leaves into keypoints and skeleton, enabling efficient and precise geometric calculations of phenotypes without considering complex leaf details. Automated keypoint detection and skeletonization using intelligent algorithms can quantify leaf phenotypes and reflect the growth status, providing more efficient and intelligent decision support for precision agriculture (<xref ref-type="bibr" rid="B13">Jiang and Li, 2020</xref>). Deep learning has therefore become a mainstay in image-based phenotyping, in part because transfer learning, domain adaptation, and self-/few-shot strategies can support generalization across datasets and conditions while reducing annotation needs (<xref ref-type="bibr" rid="B19">Li et&#xa0;al., 2023</xref>; <xref ref-type="bibr" rid="B26">Ogidi et&#xa0;al., 2023</xref>; <xref ref-type="bibr" rid="B32">Sheikh et&#xa0;al., 2024</xref>).</p>
<p>Deep learning&#x2010;based methods for keypoints detection and skeletonization have been widely applied to crop phenotyping, providing valuable insights into plant morphology. For instance, point cloud based phenotyping approaches&#x2014;using data acquired via LiDAR (<xref ref-type="bibr" rid="B39">Zhang et&#xa0;al., 2024</xref>), Visual Structure From Motion (VisualSFM) (<xref ref-type="bibr" rid="B41">Zhang et&#xa0;al., 2024</xref>), or Multi-View Stereo (MVS) (<xref ref-type="bibr" rid="B24">Murata and Noshita, 2024</xref>)&#x2014;offer detailed 3D reconstructions, although they often require specialized equipment and involve higher technical and economic costs. For image data, methods such as YOLOv7-pose have been employed to extract keypoints from individual rice plants to facilitate stem-leaf angle measurements (<xref ref-type="bibr" rid="B31">Seng et&#xa0;al., 2024</xref>). In addition, lightweight variants like YOLOv7-SlimPose&#x2014;enhanced with modules such as GSConv and GSIN and utilizing modified loss functions like MPDIoU&#x2014;have been applied to detect multiple keypoints on maize leaves and stems, enabling the extraction of phenotypes including plant height, leaf-stem angle, leaf length, and ear position (<xref ref-type="bibr" rid="B6">Gao et&#xa0;al., 2024</xref>). Similarly, AngleNet has been used to extract keypoints on maize leaves (targeting the midrib, stem, and near the leaf neck) to quantify leaf angles (<xref ref-type="bibr" rid="B37">Xiang et&#xa0;al., 2023</xref>), and a stacked hourglass network (SHN) has been applied for locating keypoints on soybean leaves to automatically compute distances and angles between them (<xref ref-type="bibr" rid="B42">Zhu et&#xa0;al., 2020</xref>). While predefined keypoint sets can be effective, they may be less flexible for multi-leaf species with variable leaf counts or heavy occlusion. Recent structure-aware pose and dense-keypoint models partially mitigate this but challenges remain in complex canopies. Notably, several recent pose frameworks in crops can infer flexible landmark sets or even recover skeletal topology under occlusion. For example, PFLO reconstructs field maize poses with a YOLO-based head, and the bottom-up DEKR-SPrior leverages structural priors to detect variable keypoints in dense organs, mitigating the limitations of strictly pre-annotated keypoint templates (<xref ref-type="bibr" rid="B27">Pan et&#xa0;al., 2025</xref>).</p>
<p>While these approaches have significantly advanced plant phenotyping, many pipelines still supervise a fixed set of landmarks&#x2014;particularly in multi-leaf canopies, although topology-flexible models partly alleviate this constraint. This design can sometimes limit flexibility when dealing with multi-leaf plants that exhibit considerable variability, such as differences in leaf count or challenges arising from occlusion. To address more complex plant structures, alternative strategies have been explored. For example, CenterNet has been applied to leaf counting in beet plants with an arbitrary number of leaves (<xref ref-type="bibr" rid="B36">Weyler et&#xa0;al., 2021</xref>), although overlapping leaves occasionally lead to false positives or missed detections. Similarly, SDNet, which employs an encoder-decoder architecture combined with a structural reconstruction algorithm (SRA), has been used for multi-instance detection, leaf counting, and phenotyping in maize and soybean (<xref ref-type="bibr" rid="B15">Lac et&#xa0;al., 2021</xref>), yet its ability to extract detailed keypoint information might be constrained under highly complex scenarios. More recently, the DEKR-SPrior model has been proposed to enhance keypoint detection by increasing the number of detected points and integrating prior structural knowledge through cosine similarity, thereby improving discrimination in dense leaf regions (<xref ref-type="bibr" rid="B10">He et&#xa0;al., 2024</xref>). Additionally, a Point-Line Net based on the Mask R-CNN framework has been developed to recognize maize field RGB images and determine both the number and growth trajectories of leaves and stalks, achieving promising performance (81.5% mAP50) (<xref ref-type="bibr" rid="B21">Liu et&#xa0;al., 2024</xref>). It should be noted that cross-species deployment of deep networks often benefits from fine-tuning or domain adaptation rather than always requiring full retraining. Recent work shows that synthetic-to-real adaptation, contrastive/self-supervised pretraining, and few-shot transfer can substantially reduce labeling demands and improve robustness across domains (<xref ref-type="bibr" rid="B16">Lagergren et&#xa0;al., 2023</xref>; <xref ref-type="bibr" rid="B33">Shi et&#xa0;al., 2022</xref>; <xref ref-type="bibr" rid="B40">Zhang et&#xa0;al., 2021</xref>).</p>
<p>Classical skeletonization techniques have also been applied to plant leaves. Medial-axis based skeletons are attractive for their geometric interpretability but are notoriously sensitive to small boundary perturbations (each local change on the silhouette can spawn spurious branches), requiring aggressive denoising and topology repairs under occlusion or gaps in the mask (<xref ref-type="bibr" rid="B1">Bucksch, 2014</xref>). Morphology-based thinning pipelines, widely available in plant phenotyping toolkits, routinely produce barbs/spurs whose prevalence strongly depends on mask quality and must be pruned with heuristic rules, which propagates instability to downstream trait calculations (PlantCV Morphology Tutorial). Active-contour (snake) models have been used to segment and track leaves in time-lapse data. However, they demand careful initialization and shape priors and may converge to local minima in scenes with weak edges or strong overlap, which limits their ability to deliver midrib-aligned skeletons and a variable number of keypoints needed for phenotyping (<xref ref-type="bibr" rid="B4">De Vylder et&#xa0;al., 2011</xref>; <xref ref-type="bibr" rid="B30">Scharr et&#xa0;al., 2016</xref>).</p>
<p>In this study, a training-free, spontaneous keypoint-connection algorithm is proposed to overcome the limitations of boundary-driven or annotation-dependent skeletonization. &#x201c;Training-free&#x201d; means that no model parameters are learned and no annotated data are required. &#x201c;Spontaneous&#x201d; refers to the fact that keypoints are not predefined. Instead, candidate interior points are sampled at runtime and connected according to curvature, angle-difference, and convexity rules to yield a single polyline per leaf without using templates or skeleton priors. Leaf regions are first isolated by color thresholding and morphological operations. Instead of predefined keypoints, randomly sampled interior points are linked through a set of connection rules. For irregular morphologies, an orientation-guided local search with an adaptive angle-difference threshold incrementally traces keypoints while halving the search space at every step, whereas for regular morphologies a convexity-constrained curvature-minimization scheme yields smooth, midrib-consistent polylines. This algorithm is positioned as complementary to learning-based pipelines&#x2014;particularly useful in annotation-scarce settings, for rapid cross-species deployment, or when the keypoint graph is unknown or variable&#x2014;rather than as a universal replacement. By dispensing with fixed keypoint counts, skeleton templates, and lengthy training, the method remains robust to edge defects, partial occlusions, and variable leaf numbers, thereby generalizing across species and enabling direct, geometry-accurate phenotype extraction for leafy plants with complex architectures.</p>
</sec>
<sec id="s2" sec-type="materials|methods">
<label>2</label>
<title>Materials and methods</title>
<sec id="s2_1">
<label>2.1</label>
<title>Image dataset acquisition</title>
<p>The vertical (top view) and front views of leafy orchids effectively capture the randomness and regularity of leaf morphology, respectively (<xref ref-type="bibr" rid="B8">Guan et&#xa0;al., 2011</xref>; <xref ref-type="bibr" rid="B28">Rodrigues et&#xa0;al., 2013</xref>). To obtain these complementary perspectives, a multi-view automatic acquisition device was designed for capturing images of Cymbidium goeringii (<italic>Rchb. f.</italic>) (<xref ref-type="fig" rid="f1">
<bold>Figure&#xa0;1A</bold>
</xref>). While the front view provides more detailed phenotypic information and thus requires a higher resolution, the proposed algorithm is capable of processing images with varying resolutions.</p>
<fig id="f1" position="float">
<label>Figure&#xa0;1</label>
<caption>
<p>
<bold>(A)</bold> Orchid image acquisition device. <bold>(B)</bold> Multi-view image automatic acquisition system interface with vertical view capture, front view capture, turntable control and auto-mated image acquisition.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fpls-16-1641255-g001.tif">
<alt-text content-type="machine-generated">Diagram labeled &#x201c;A&#x201d; shows an orchid on an electric turntable, surrounded by a vertical and horizontal curtain. Cameras are mounted on a tripod, linked to a computer. Panel &#x201c;B&#x201d; displays screenshots of a multi-view automatic shooting system interface, with different orchid view images.</alt-text>
</graphic>
</fig>
<p>Two industrial cameras were employed: a Daheng industrial camera (MER2-1220-32U3C, resolution: 4024&#xd7;3036) for capturing front view images, and a Hikvision industrial camera (MV-CU060-10GC, resolution: 3072&#xd7;2048) for capturing top view images. To verify the generalization ability of the proposed algorithm, a publicly available dataset of individual maize plants was used, which was captured using a Grasshopper 3 camera. The parameters of the three types of cameras are shown in <xref ref-type="table" rid="T1">
<bold>Table&#xa0;1</bold>
</xref>. Notably, the distances between the cameras and the orchids were not fixed during data collection. Instead, these distances were dynamically adjusted based on the height and crown width of each orchid, ensuring that the entire plant was fully captured in both the top-view and front-view images.</p>
<table-wrap id="T1" position="float">
<label>Table&#xa0;1</label>
<caption>
<p>Key optical and sensor specifications of the imaging systems used for the orchid and maize datasets.</p>
</caption>
<table frame="hsides">
<thead>
<tr>
<th valign="middle" align="center">Camera (view)</th>
<th valign="middle" align="center">Dataset</th>
<th valign="middle" align="center">Native resolution</th>
<th valign="middle" align="center">Pixel size (&#xb5;m)</th>
<th valign="middle" align="center">Lens &amp; focal range</th>
</tr>
</thead>
<tbody>
<tr>
<td valign="middle" align="center">Daheng MER2-1220-32U3C (front)</td>
<td valign="middle" align="center">Orchid</td>
<td valign="middle" align="center">4024 &#xd7; 3036 (12.2 MP)</td>
<td valign="middle" align="center">1.85</td>
<td valign="middle" align="center">16 mm C-mount fixed</td>
</tr>
<tr>
<td valign="middle" align="center">Hikvision MV-CU060-10GC (top)</td>
<td valign="middle" align="center">Orchid</td>
<td valign="middle" align="center">3072 &#xd7; 2048 (6 MP)</td>
<td valign="middle" align="center">2.40</td>
<td valign="middle" align="center">25 mm C-mount fixed</td>
</tr>
<tr>
<td valign="middle" align="center">Grasshopper 3 GS3-U3-23S6C-C (12 side + 1 top)</td>
<td valign="middle" align="center">Maize</td>
<td valign="middle" align="center">2056 &#xd7; 2454 (4 2 MP)</td>
<td valign="middle" align="center">5.86</td>
<td valign="middle" align="center">12.5&#x2013;75 mm motorized zoom</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The potted orchids were positioned at the center of a motorized turntable, which was controlled via serial communication with a multi-view image acquisition software (<xref ref-type="fig" rid="f1">
<bold>Figure&#xa0;1B</bold>
</xref>). The motorized turntable is controlled via RS-485 using the Modbus-RTU protocol through a USB-to-RS485 converter. Commands for absolute angle setting, step execution, and start&#x2013;stop were issued from a Python 3.10 client using the pySerial library, with standard Modbus frames and a 9,600-baud 8-N-1 configuration. Module 1 captures the top view, Module 2 captures the front view, Module 3 controls the rotation angle of the motorized turntable for view selection, and Module 4 performs automated batch acquisition. This automated system enabled the turntable to adjust the viewing angle, capture images, and store data without manual intervention, thereby ensuring consistency and standardization throughout the data collection process. In total, 367 orchids with both vertical and front view images were collected during the Third China Spring Orchid Festival (Shaoxing, Zhejiang, February 22&#x2013;25, 2024).</p>
</sec>
<sec id="s2_2">
<label>2.2</label>
<title>Image binarization and random point generation</title>
<p>The hue channel in HSV (Hue, Saturation and Lightness) color space directly determines the color type (<xref ref-type="bibr" rid="B12">Hu et&#xa0;al., 2023</xref>; <xref ref-type="bibr" rid="B34">Shi et&#xa0;al., 2020</xref>), which facilitates accurate identification of regions of orchid leaves. The lower and upper thresholds for the green hues were established as the initial mask (<inline-formula>
<mml:math display="inline" id="im1">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>s</mml:mi>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mi>A</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>), where the leaf regions were highlighted in white while the rest of the background was set to black (<xref ref-type="fig" rid="f2">
<bold>Figure&#xa0;2A</bold>
</xref>). However, due to the presence of background elements with colors similar to the leaves and the impact of lighting variation on leaves, the binarized image displayed noticeable gaps within the leaf regions and speckled noise in the background.</p>
<fig id="f2" position="float">
<label>Figure&#xa0;2</label>
<caption>
<p>
<bold>(A)</bold> Image binarization based on color threshold. <bold>(B)</bold> Binary images optimization based on morphological operations and contour features. <bold>(C)</bold> Random point generation based on corrosion operation and hierarchical sampling.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fpls-16-1641255-g002.tif">
<alt-text content-type="machine-generated">Diagram illustrating a three-step process for plant image optimization. Panel A shows the original image converted to HSV and thresholded to a binary mask. Panel B applies morphological operations and contour-based optimization to improve shape. Panel C shows the final binary image including the flowerpot, derived from morphological erosion (&#x201c;corrosion&#x201d; as labeled) and hierarchical sampling, with randomly generated points and a highlighted circular search region. Each step includes labels, visual guides and process annotations.</alt-text>
</graphic>
</fig>
<p>To eliminate the noise and accurately extract the contours of the leaves, a series of morphological operations were applied to the <inline-formula>
<mml:math display="inline" id="im2">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>s</mml:mi>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mi>A</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. Firstly, a morphological closing operation was used, followed by an opening operation, resulting in an improved mask <inline-formula>
<mml:math display="inline" id="im3">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>s</mml:mi>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. The opening and closing operation were expressed as</p>
<disp-formula>
<mml:math display="block" id="M1">
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>g</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>A</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mo>&#x2295;</mml:mo>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2296;</mml:mo>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<mml:math display="block" id="M2">
<mml:mrow>
<mml:mi>O</mml:mi>
<mml:mi>p</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>g</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>A</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mo>&#x2296;</mml:mo>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2295;</mml:mo>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <inline-formula>
<mml:math display="inline" id="im4">
<mml:mo>&#x2296;</mml:mo>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im5">
<mml:mo>&#x2295;</mml:mo>
</mml:math>
</inline-formula> represents erosion and dilation operation respectively. <inline-formula>
<mml:math display="inline" id="im6">
<mml:mi>A</mml:mi>
</mml:math>
</inline-formula> is the binary image, <inline-formula>
<mml:math display="inline" id="im7">
<mml:mi>B</mml:mi>
</mml:math>
</inline-formula> is a 5&#xd7;5 ones matrix kernel that is used to probe and interact with <inline-formula>
<mml:math display="inline" id="im8">
<mml:mi>A</mml:mi>
</mml:math>
</inline-formula>. The closing operation helped bridge small gaps and holes within the leaves (<xref ref-type="bibr" rid="B17">Le et&#xa0;al., 2020</xref>), while the opening operation effectively removed speckled noice within the background (<xref ref-type="bibr" rid="B18">Lei et&#xa0;al., 2019</xref>). Next, the binarized image is further refined based on the area and shape of the leaf contours. The contours of all connected regions within the white mask were traced pixel by pixel. Due to the presence of nested contours caused by noise, only the external contours were retained. To eliminate small contours unlikely to represent leaves, contours with an area smaller than 500 pixels were filtered out. The minimum bounding rectangle was then extracted for each contour, with its aspect ratio (the length ratio of longer side to shorter side) effectively distinguishing the elongated leaves from other objects. As the length of leaves are significantly longer than the width, contours with an aspect ratio greater than 2 were preserved. These contours, forming the set <inline-formula>
<mml:math display="inline" id="im9">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, formulating a separate mask <inline-formula>
<mml:math display="inline" id="im10">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>s</mml:mi>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mi>B</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. The intersection of <inline-formula>
<mml:math display="inline" id="im11">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>s</mml:mi>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im12">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>s</mml:mi>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mi>B</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> produced the final leaf mask <inline-formula>
<mml:math display="inline" id="im13">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>s</mml:mi>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, which highlighted the leaves in white against a black background, as shown in <xref ref-type="fig" rid="f2">
<bold>Figure&#xa0;2B</bold>
</xref>.</p>
<p>The keypoints on the orchid leaves were derived from randomly sampled points, with even distribution across the extracted leaf areas. Taking the vertical view image as an example, to simplify the computation, a circle <inline-formula>
<mml:math display="inline" id="im14">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> was drawn with the centroid of <inline-formula>
<mml:math display="inline" id="im15">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>s</mml:mi>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> as the center and half the length of the shortest contour in the set <inline-formula>
<mml:math display="inline" id="im16">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> as the radius. This circle, <inline-formula>
<mml:math display="inline" id="im17">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, generally covered the central part of the flowerpot in vertical view and served as a white mask representing the pot. As illustrated in <xref ref-type="fig" rid="f2">
<bold>Figure&#xa0;2C</bold>
</xref>, to ensure an even distribution of random points across the white regions of the leaf image, hierarchical sampling was employed to divide the segmented leaf area into 40&#xd7;40 patches. A random point is sampled from each subregion, excluding those within <inline-formula>
<mml:math display="inline" id="im18">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. Subsequently, morphological erosion algorithm is applied to reduce the boundary regions of the leaves (<xref ref-type="bibr" rid="B38">Yin et&#xa0;al., 2023</xref>), preventing points near the edges of the white areas from being selected as keypoints and ensuring that the generated random points were located close to the central skeleton of the leaves.</p>
</sec>
<sec id="s2_3">
<label>2.3</label>
<title>Initial keypoints recognition and search direction determination</title>
<p>For both random and regular morphological leaves, the&#xa0;outermost keypoints were firstly identified, then the search direction for subsequent keypoints was determined to reduce spatial complexity. The traversal of keypoints for the next leaf begins only after all keypoints of the current leaf have been identified. For each leaf, <inline-formula>
<mml:math display="inline" id="im19">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> represents the <inline-formula>
<mml:math display="inline" id="im20">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula>-th keypoints of the <inline-formula>
<mml:math display="inline" id="im21">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula>-th leaf. <inline-formula>
<mml:math display="inline" id="im22">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> was designated as the first keypoints of the first leaf (marked as visited), which has the maximum Euclidean distance from point <inline-formula>
<mml:math display="inline" id="im23">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (closest to leaf tip), as illustrated in <xref ref-type="fig" rid="f3">
<bold>Figure&#xa0;3A</bold>
</xref>. <inline-formula>
<mml:math display="inline" id="im24">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> was identified as the closest unvisited point to <inline-formula>
<mml:math display="inline" id="im25">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. To locate <inline-formula>
<mml:math display="inline" id="im26">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, a circular search area is iteratively expanded around <inline-formula>
<mml:math display="inline" id="im27">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> until one or more unvisited points were found. If a single unvisited point is identified within the search area, it is designated as <inline-formula>
<mml:math display="inline" id="im28">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. If multiple unvisited points were found, the point closest to <inline-formula>
<mml:math display="inline" id="im29">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is selected as <inline-formula>
<mml:math display="inline" id="im30">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, which is then marked as visited, forming the vector <inline-formula>
<mml:math display="inline" id="im31">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="true">&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<fig id="f3" position="float">
<label>Figure&#xa0;3</label>
<caption>
<p>Keypoints determination method for vertical <bold>(A)</bold> vertical view and <bold>(B)</bold> front view.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fpls-16-1641255-g003.tif">
<alt-text content-type="machine-generated">Keypoint determination in two views. Panel A (vertical view) and Panel B (front view) each include two binary images below: one with random points and one with connected keypoints. The vertical-view column is labeled 20 cm and the front-view column 10 cm. Both columns illustrate selecting and connecting keypoints to form a skeleton for structural analysis.</alt-text>
</graphic>
</fig>
<p>The search for <inline-formula>
<mml:math display="inline" id="im32">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>3</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is also based on extending the circular search area centered on <inline-formula>
<mml:math display="inline" id="im33">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. However, given that the orientation of the leaf skeleton is determined, half of the random points within the circular search area are not candidate points for <inline-formula>
<mml:math display="inline" id="im34">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>3</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. The direction of the skeleton informs the search direction for subsequent keypoints, thereby reducing the search space for the next keypoint. The skeletal direction is determined by the relative positions of points <inline-formula>
<mml:math display="inline" id="im35">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im36">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, specifically by comparing the absolute differences between the horizontal coordinates (<inline-formula>
<mml:math display="inline" id="im37">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im38">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>) and the vertical coordinates (<inline-formula>
<mml:math display="inline" id="im39">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im40">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>). This will result in more efficient search. The rules for determining the search direction for keypoints were shown in <xref ref-type="table" rid="T2">
<bold>Table&#xa0;2</bold>
</xref>.</p>
<table-wrap id="T2" position="float">
<label>Table&#xa0;2</label>
<caption>
<p>The positional relationship between and determined the search direction for subsequent keypoints.</p>
</caption>
<table frame="hsides">
<thead>
<tr>
<th valign="middle" colspan="2" align="center">
<inline-formula>
<mml:math display="inline" id="im41">
<mml:mrow>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo>|</mml:mo>
</mml:mrow>
<mml:mo>&gt;</mml:mo>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo>|</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th valign="middle" colspan="2" align="center">
<inline-formula>
<mml:math display="inline" id="im42">
<mml:mrow>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo>|</mml:mo>
</mml:mrow>
<mml:mo>&lt;</mml:mo>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo>|</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
</tr>
</thead>
<tbody>
<tr>
<td valign="middle" align="left">
<inline-formula>
<mml:math display="inline" id="im43">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&gt;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td valign="middle" align="center">
<inline-formula>
<mml:math display="inline" id="im44">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&lt;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td valign="middle" align="center">
<inline-formula>
<mml:math display="inline" id="im45">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&gt;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td valign="middle" align="center">
<inline-formula>
<mml:math display="inline" id="im46">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&gt;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td valign="top" align="center">
<inline-graphic mimetype="image" mime-subtype="tiff" xlink:href="fpls-16-1641255-i001.tif">
</inline-graphic>
</td>
<td valign="top" align="center">
<inline-graphic mimetype="image" mime-subtype="tiff" xlink:href="fpls-16-1641255-i002.tif">
</inline-graphic>
</td>
<td valign="top" align="center">
<inline-graphic mimetype="image" mime-subtype="tiff" xlink:href="fpls-16-1641255-i003.tif">
</inline-graphic>
</td>
<td valign="top" align="center">
<inline-graphic mimetype="image" mime-subtype="tiff" xlink:href="fpls-16-1641255-i004.tif">
</inline-graphic>
</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s2_4">
<label>2.4</label>
<title>Remaining keypoints recognition for leaves with random and regular morphology</title>
<p>In vertical view of orchids, the uncertain growth trajectory of each leaf results in a random morphology. Therefore, based on the predetermined keypoint search direction, the optimal keypoints closest to the central skeleton must be adaptively identified. The determination of <inline-formula>
<mml:math display="inline" id="im47">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>3</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is based on the angle formed between vectors <inline-formula>
<mml:math display="inline" id="im48">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="true">&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im49">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>3</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="true">&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>, formulated as</p>
<disp-formula>
<mml:math display="block" id="M3">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:msub>
<mml:mn>1</mml:mn>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mtext>arccos</mml:mtext>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="true">&#x2192;</mml:mo>
</mml:mover>
<mml:mo>&#xb7;</mml:mo>
<mml:mover accent="true">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="true">&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="true">&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>|</mml:mo>
</mml:mrow>
<mml:mo>&#xb7;</mml:mo>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="true">&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>|</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#xd7;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>180</mml:mn>
</mml:mrow>
<mml:mi>&#x3c0;</mml:mi>
</mml:mfrac>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<mml:math display="block" id="M4">
<mml:mrow>
<mml:mtext>min</mml:mtext>
<mml:mi>S</mml:mi>
<mml:msub>
<mml:mn>1</mml:mn>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>20</mml:mn>
</mml:mrow>
<mml:mo>&#x2218;</mml:mo>
</mml:msup>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<mml:math display="block" id="M5">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi>a</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>g</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>S</mml:mi>
<mml:msub>
<mml:mn>1</mml:mn>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>3</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:mo>&#x2190;</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <inline-formula>
<mml:math display="inline" id="im50">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is the <inline-formula>
<mml:math display="inline" id="im51">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula>-th candidate point of <inline-formula>
<mml:math display="inline" id="im52">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>3</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> in circular search area. <inline-formula>
<mml:math display="inline" id="im53">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the angle between <inline-formula>
<mml:math display="inline" id="im54">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im55">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>3</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. Within the left semicircle of the circular search area, there are three candidate keypoints, resulting in three angles. In order to effectively capture the natural curvature characteristics of orchid leaves along their main skeleton, we set a fixed threshold for the angular difference of candidate keypoints in our algorithm. Through statistical analysis and experimental validation on multiple orchid samples, we found that the local curvature variations of most leaves are confined within a narrow range. When the angular difference between a candidate keypoint and the current skeleton direction is less than 20&#xb0;, the true turning points can be effectively identified while avoiding interference from noise and local anomalies. If the minimum angle in <inline-formula>
<mml:math display="inline" id="im56">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:msub>
<mml:mn>1</mml:mn>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is less than 20&#xb0;, the corresponding candidate point is selected as <inline-formula>
<mml:math display="inline" id="im57">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>3</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. Otherwise, the circular search area is further expanded. This 20&#xb0; threshold was chosen based on the observed morphological properties of orchid leaves and extensive empirical testing, which demonstrated that it provides a robust balance between sensitivity (capturing genuine turning points) and specificity (avoiding spurious points due to noise). Fixing this threshold not only reflects the inherent geometric properties of orchid leaves but also simplifies the algorithm structure, thereby enhancing computational efficiency and consistency.</p>
<p>Once the first three keypoints have been identified, the subsequent keypoints were determined by iteratively running the same search algorithm. For example, to determine <inline-formula>
<mml:math display="inline" id="im58">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>4</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, the circular search area is iteratively expanded with <inline-formula>
<mml:math display="inline" id="im59">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>3</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> as the center. The unvisited points within the left semicircle of this area form a set <inline-formula>
<mml:math display="inline" id="im60">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>4</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>4</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>4</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. The algorithm then calculates the angle set <inline-formula>
<mml:math display="inline" id="im61">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo>{</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:mo>|</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo>&#x2220;</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>3</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>4</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im62">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mo>&#x2220;</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>3</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. It compares the differences between <inline-formula>
<mml:math display="inline" id="im63">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and each <inline-formula>
<mml:math display="inline" id="im64">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. Similar to the selection of <inline-formula>
<mml:math display="inline" id="im65">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>3</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, if the smallest angle difference exceeds the threshold of 20&#xb0;, the circular search area is further expanded. Otherwise, the point with the smallest angle difference was selected as <inline-formula>
<mml:math display="inline" id="im66">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>4</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, as follows</p>
<disp-formula>
<mml:math display="block" id="M6">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:msub>
<mml:mn>2</mml:mn>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mi>&#x394;</mml:mi>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:mo>|</mml:mo>
<mml:mi>&#x394;</mml:mi>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>3</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<mml:math display="block" id="M7">
<mml:mrow>
<mml:mtext>min</mml:mtext>
<mml:mi>S</mml:mi>
<mml:msub>
<mml:mn>2</mml:mn>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>20</mml:mn>
</mml:mrow>
<mml:mo>&#x2218;</mml:mo>
</mml:msup>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<mml:math display="block" id="M8">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi>a</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>g</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>S</mml:mi>
<mml:msub>
<mml:mn>2</mml:mn>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>4</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:mo>&#x2190;</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</disp-formula>
<p>Then, the same method was iteratively applied to locate subsequent keypoints <inline-formula>
<mml:math display="inline" id="im67">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. The loop terminates under the following condition</p>
<disp-formula>
<mml:math display="block" id="M9">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo>|</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>|</mml:mo>
</mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <inline-formula>
<mml:math display="inline" id="im68">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the last identified keypoints of the leaf, <inline-formula>
<mml:math display="inline" id="im69">
<mml:mrow>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the radius of <inline-formula>
<mml:math display="inline" id="im70">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula>
<mml:math display="inline" id="im71">
<mml:mrow>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the radius of the circular search area corresponding to <inline-formula>
<mml:math display="inline" id="im72">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula>
<mml:math display="inline" id="im73">
<mml:mrow>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo>|</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>|</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the Euclidean distance between the centers of <inline-formula>
<mml:math display="inline" id="im74">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im75">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. When the circular search area of <inline-formula>
<mml:math display="inline" id="im76">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> contains no unvisited points and intersects with <inline-formula>
<mml:math display="inline" id="im77">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula>
<mml:math display="inline" id="im78">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is designated as <inline-formula>
<mml:math display="inline" id="im79">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and the iteration stops. At this time, all keypoints for the single leaf have been determined.</p>
<p>The algorithm is then repeated on other leaves. The point <inline-formula>
<mml:math display="inline" id="im80">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, which has the greatest Euclidean distance from <inline-formula>
<mml:math display="inline" id="im81">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, is identified as the first keypoints of the second leaf. The same algorithm was then applied to determine all keypoints of this leaf, continuing until the keypoints for all leaves were found.</p>
<p>In front view of orchids, due to the influence of gravity, all orchid leaves form a completely regular convex polyline (<xref ref-type="fig" rid="f3">
<bold>Figure&#xa0;3B</bold>
</xref>). Therefore, the trajectory pattern was fitted by minimizing curvature based on the consistent leaves trend. Let any three continuous keypoints along the leaf (from the root to the tip) be denoted as <inline-formula>
<mml:math display="inline" id="im82">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula>
<mml:math display="inline" id="im83">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula>
<mml:math display="inline" id="im84">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. These points must satisfy the following condition</p>
<disp-formula>
<mml:math display="block" id="M10">
<mml:mrow>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:mo>&gt;</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:mo>&gt;</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <inline-formula>
<mml:math display="inline" id="im85">
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the number of keypoints on the <inline-formula>
<mml:math display="inline" id="im86">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula>-th leaf. This ensures that any adjacent three keypoints form a convex sub-polyline, and the collection of these sub-polylines constitutes the fully convex skeleton of the leaf.</p>
<p>The keypoints identification process for the front view image of the orchid leaf begins by selecting the initial point <inline-formula>
<mml:math display="inline" id="im87">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> as the farthest point from the leaf base. To determine the subsequent point <inline-formula>
<mml:math display="inline" id="im88">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, a circular search area centered on <inline-formula>
<mml:math display="inline" id="im89">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is iteratively expanded until more than two unvisited points were found. The point with the closest <inline-formula>
<mml:math display="inline" id="im90">
<mml:mi>y</mml:mi>
</mml:math>
</inline-formula>-coordinate to <inline-formula>
<mml:math display="inline" id="im91">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is then selected as <inline-formula>
<mml:math display="inline" id="im92">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. The next keypoint, <inline-formula>
<mml:math display="inline" id="im93">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>3</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, is identified by expanding the search area centered on <inline-formula>
<mml:math display="inline" id="im94">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. If more than 2 unvisited points were found within this area, the point that forms a convex curve with <inline-formula>
<mml:math display="inline" id="im95">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im96">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and results in minimal curvature is chosen as <inline-formula>
<mml:math display="inline" id="im97">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>tem</mml:mtext>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>The search then continues by expanding the area around <inline-formula>
<mml:math display="inline" id="im98">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>tem</mml:mtext>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. If there were at least two points in this area, they were evaluated. If a point <inline-formula>
<mml:math display="inline" id="im99">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>tem</mml:mtext>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> forms a convex polyline with <inline-formula>
<mml:math display="inline" id="im100">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im101">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and lies above <inline-formula>
<mml:math display="inline" id="im102">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>tem</mml:mtext>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, this indicates that the polyline <inline-formula>
<mml:math display="inline" id="im103">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>tem</mml:mtext>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> has a lower curvature than <inline-formula>
<mml:math display="inline" id="im104">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>tem</mml:mtext>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. In this case, the following vector addition is performed as</p>
<p>
<inline-formula>
<mml:math display="inline" id="im105">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>m</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mo>+</mml:mo>
<mml:mover accent="true">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>m</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>m</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="true">&#x2192;</mml:mo>
</mml:mover>
<mml:mo>=</mml:mo>
<mml:mover accent="true">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>m</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="true">&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
<disp-formula>
<mml:math display="block" id="M11">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>3</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:mo>&#x2190;</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>tem</mml:mtext>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</disp-formula>
<p>Thus, <inline-formula>
<mml:math display="inline" id="im106">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>tem</mml:mtext>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is set as the final <inline-formula>
<mml:math display="inline" id="im107">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>3</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula>
<mml:math display="inline" id="im108">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>tem</mml:mtext>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is discarded. Conversely, if <inline-formula>
<mml:math display="inline" id="im109">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>tem</mml:mtext>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is located below <inline-formula>
<mml:math display="inline" id="im110">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>tem</mml:mtext>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, then <inline-formula>
<mml:math display="inline" id="im111">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>tem</mml:mtext>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is confirmed as <inline-formula>
<mml:math display="inline" id="im112">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>3</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula>
<mml:math display="inline" id="im113">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>tem</mml:mtext>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> becomes <inline-formula>
<mml:math display="inline" id="im114">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>4</mml:mn>
<mml:mn>1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. This iterative traversal, combined with vector addition, allows for a more precise fitting of the leaf structure in front view.</p>
<p>All experiments&#x2014;orchid (two industrial cameras) and maize (PHENOARCH platform)&#x2014;were run with a single, immutable parameter set. Values were selected once on an orchid batch and were not tuned thereafter, thereby demonstrating cross-species generalizability. <xref ref-type="table" rid="T3">
<bold>Table&#xa0;3</bold>
</xref> lists the constants, and no entry changes across datasets, resolutions or cameras.</p>
<table-wrap id="T3" position="float">
<label>Table&#xa0;3</label>
<caption>
<p>Global implementation parameters used for all images.</p>
</caption>
<table frame="hsides">
<thead>
<tr>
<th valign="middle" align="center">Parameter</th>
<th valign="middle" align="center">Symbol description</th>
<th valign="middle" align="center">Fixed value</th>
</tr>
</thead>
<tbody>
<tr>
<td valign="middle" align="center">Hue range (HSV)</td>
<td valign="middle" align="center">
<inline-formula>
<mml:math display="inline" id="im115">
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td valign="middle" align="center">35&#xb0;-85&#xb0;</td>
</tr>
<tr>
<td valign="middle" align="center">Opening/closing kernel</td>
<td valign="middle" align="center">
<inline-formula>
<mml:math display="inline" id="im116">
<mml:mi>B</mml:mi>
</mml:math>
</inline-formula> (square)</td>
<td valign="middle" align="center">5&#xd7;5</td>
</tr>
<tr>
<td valign="middle" align="center">Erosion iterations</td>
<td valign="middle" align="center">&#x2014;</td>
<td valign="middle" align="center">1</td>
</tr>
<tr>
<td valign="middle" align="center">Contour area cut-off</td>
<td valign="middle" align="center">
<inline-formula>
<mml:math display="inline" id="im117">
<mml:mrow>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mtext>min</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td valign="middle" align="center">500 px</td>
</tr>
<tr>
<td valign="middle" align="center">Aspect-ratio filter</td>
<td valign="middle" align="center">
<inline-formula>
<mml:math display="inline" id="im118">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mtext>min</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td valign="middle" align="center">&gt;2</td>
</tr>
<tr>
<td valign="middle" align="center">Sampling grid size</td>
<td valign="middle" align="center">patches per side</td>
<td valign="middle" align="center">40&#xd7;40</td>
</tr>
<tr>
<td valign="middle" align="center">Initial search radius</td>
<td valign="middle" align="center">
<inline-formula>
<mml:math display="inline" id="im119">
<mml:mrow>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td valign="middle" align="center">5 px</td>
</tr>
<tr>
<td valign="middle" align="center">Angle-difference threshold</td>
<td valign="middle" align="center">
<inline-formula>
<mml:math display="inline" id="im120">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td valign="middle" align="center">20&#xb0;</td>
</tr>
<tr>
<td valign="middle" align="center">Convexity constraint</td>
<td valign="middle" align="center">three-point test</td>
<td valign="middle" align="center">enforced</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s2_5">
<label>2.5</label>
<title>Evaluated indicators for skeletonization algorithms</title>
<p>The accuracy of the predicted skeletons was evaluated using curvature error (<xref ref-type="fig" rid="f4">
<bold>Figure&#xa0;4</bold>
</xref>). Let <inline-formula>
<mml:math display="inline" id="im121">
<mml:mrow>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> represent the true skeleton curve of the leaf, with curvature at point <inline-formula>
<mml:math display="inline" id="im122">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> given by (<xref ref-type="bibr" rid="B29">Schamberger et&#xa0;al., 2023</xref>)</p>
<fig id="f4" position="float">
<label>Figure&#xa0;4</label>
<caption>
<p>Predefined keypoints for YOLOv7-SlimPose in <bold>(A)</bold> vertical view and <bold>(B)</bold> front view. Identified keypoints and skeletons in <bold>(C)</bold> front view and <bold>(D)</bold> vertical view. <bold>(E)</bold> Curvature of real leaf skeleton curve and predicted leaf skeleton polyline at point <italic>x<sub>i</sub>
</italic>.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fpls-16-1641255-g004.tif">
<alt-text content-type="machine-generated">Diagrams and photographs of orchid leaf structure and analysis. Panels A and B show schematic vertical (top) and front views with numbered points for base/root, leaf angle, highest point and tip. Panels C and D overlay curves comparing YOLOv7-SlimPose predictions (red) with the proposed method (blue) on leaf images; scale bars are 10 cm and 20 cm respectively. Panel E plots the curvature of the real leaf skeleton versus the predicted polyline at position x&#x208d;&#x1d62;&#x208e;.</alt-text>
</graphic>
</fig>
<disp-formula>
<mml:math display="block" id="M12">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3ba;</mml:mi>
<mml:mrow>
<mml:mtext>curve</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mi>y</mml:mi>
<mml:mo>&#x2033;</mml:mo>
</mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>|</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo>'</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mfrac>
<mml:mn>3</mml:mn>
<mml:mn>2</mml:mn>
</mml:mfrac>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</disp-formula>
<p>and the curvature at point <inline-formula>
<mml:math display="inline" id="im123">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> of the predicted leaf skeleton polyline is given by (<xref ref-type="bibr" rid="B3">Chuon et&#xa0;al., 2011</xref>)</p>
<disp-formula>
<mml:math display="block" id="M13">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3ba;</mml:mi>
<mml:mrow>
<mml:mtext>polyline</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <inline-formula>
<mml:math display="inline" id="im124">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the angle at the <inline-formula>
<mml:math display="inline" id="im125">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula>-th vertex of the polyline, and <inline-formula>
<mml:math display="inline" id="im126">
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the Euclidean distance between the <inline-formula>
<mml:math display="inline" id="im127">
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>-th and <inline-formula>
<mml:math display="inline" id="im128">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula>-th points on the polyline. The curvature error between the predicted and true skeletons is defined as</p>
<disp-formula>
<mml:math display="block" id="M14">
<mml:mrow>
<mml:mtext>Curvature&#xa0;Error</mml:mtext>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mi>N</mml:mi>
</mml:mfrac>
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>N</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3ba;</mml:mi>
<mml:mrow>
<mml:mtext>curve</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>&#x3ba;</mml:mi>
<mml:mrow>
<mml:mtext>polyline</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>|</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>A smaller curvature error indicates a higher shape conformity between predicted polyline skeleton and the true curve skeleton. The leaf recall rate was used to measure the proportion of leaves correctly identified and successfully skeletonized out of the total number of leaves, defined as</p>
<disp-formula>
<mml:math display="block" id="M15">
<mml:mrow>
<mml:mtext>Leaf&#xa0;recall&#xa0;rate</mml:mtext>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mi>j</mml:mi>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>|</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mtext>Ground&#xa0;Truth&#xa0;of&#xa0;leaves&#xa0;number</mml:mtext>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>100</mml:mn>
<mml:mo>%</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
</sec>
<sec id="s2_6">
<label>2.6</label>
<title>Leaves phenotypes</title>
<p>For vertical view, the number of algorithm&#x2019;s outermost loop (which traverses each leaf) corresponds to the leaves&#x2019; number. As shown in <xref ref-type="fig" rid="f5">
<bold>Figure&#xa0;5A</bold>
</xref>, since the initial point <inline-formula>
<mml:math display="inline" id="im129">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mi>j</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> for each leaf is closest to the leaf tip, the total number of <inline-formula>
<mml:math display="inline" id="im130">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mi>j</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> represents the leaf count. The maximum distance between any two <inline-formula>
<mml:math display="inline" id="im131">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
<mml:mi>j</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> represents the crown width of the orchid (<xref ref-type="bibr" rid="B5">Ebrahimi et&#xa0;al., 2020</xref>), measured in pixels. Because pixel measurements cannot accurately reflect the true crown width, the relative crown width was used as a key feature for evaluating the orchid, formulated as</p>
<fig id="f5" position="float">
<label>Figure&#xa0;5</label>
<caption>
<p>
<bold>(A)</bold> The initial point <inline-formula>
<mml:math display="inline" id="im132">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> located at the leave tip, and the crown width obtained from the two farthest initial points. <bold>(B)</bold> Arcs obtained by intersecting concentric circles with leaf skeleton. <bold>(C)</bold> The height of each keypoints relative to the bottom reference line in front view.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fpls-16-1641255-g005.tif">
<alt-text content-type="machine-generated">Method for extracting leaf phenotypes. Panel A shows concentric circles centered on the plant; red counted points identify leaf tips and are used to estimate crown width from the two farthest points. Panel B shows arc segments where the leaf skeleton intersects the circles, drawn in different colors. Panel C shows a plant with vertical guide lines and the height of keypoints measured from a bottom reference line, indicating growth from the flowerpot upward.</alt-text>
</graphic>
</fig>
<disp-formula>
<mml:math display="block" id="M16">
<mml:mrow>
<mml:mtext>Relative&#xa0;Crown&#xa0;Width</mml:mtext>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mtext>Crown&#xa0;Width</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mtext>Diameter&#xa0;of</mml:mtext>
<mml:mo>&#xa0;</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</disp-formula>
<p>Let <inline-formula>
<mml:math display="inline" id="im133">
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represent the number of keypoints in the <inline-formula>
<mml:math display="inline" id="im134">
<mml:mrow>
<mml:msup>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> leaf. Since the skeleton formed by connecting these keypoints accurately represents the shape of the leaf, the total length of the skeleton corresponds to the length of the leaf. Leaf height consistency is the variance of each leaf&#x2019;s mean vertical distance from keypoints to the pot&#x2019;s top reference line in the front view, reflecting canopy regularity that growers use to judge form. Relative crown width is scale robust by construction. Leaf height consistency is expressed as</p>
<disp-formula>
<mml:math display="block" id="M17">
<mml:mrow>
<mml:mtext>Leaf&#xa0;Length&#xa0;Consistency</mml:mtext>
<mml:mo>=</mml:mo>
<mml:mtext>Var</mml:mtext>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>=</mml:mo>
<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:munderover>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>A concentric circle <inline-formula>
<mml:math display="inline" id="im135">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>w</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is drawn with the crown width as its diameter, centered on the flowerpot (<xref ref-type="fig" rid="f5">
<bold>Figures&#xa0;5A, B</bold>
</xref>). Between <inline-formula>
<mml:math display="inline" id="im136">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>w</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im137">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula>
<mml:math display="inline" id="im138">
<mml:mi>N</mml:mi>
</mml:math>
</inline-formula> additional concentric circles <inline-formula>
<mml:math display="inline" id="im139">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> <inline-formula>
<mml:math display="inline" id="im140">
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> were generated with equal radial increments, where the radius of each <inline-formula>
<mml:math display="inline" id="im141">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is denoted as <inline-formula>
<mml:math display="inline" id="im142">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. The boundaries of each concentric circle may intersect the skeleton of the leaves at different points. Each intersection divides <inline-formula>
<mml:math display="inline" id="im143">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> into several arcs, with <inline-formula>
<mml:math display="inline" id="im144">
<mml:mrow>
<mml:msubsup>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> representing the arc length of the <inline-formula>
<mml:math display="inline" id="im145">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula>-th segment of the <inline-formula>
<mml:math display="inline" id="im146">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula>-th concentric circle, corresponding to the distance between adjacent leaves under the condition of <inline-formula>
<mml:math display="inline" id="im147">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. Thus, <inline-formula>
<mml:math display="inline" id="im148">
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> represents the leaf distribution consistency at <inline-formula>
<mml:math display="inline" id="im149">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>However, in vertical view, the leaves radiate outward from the&#xa0;center, causing the distance between adjacent leaves to vary under different <inline-formula>
<mml:math display="inline" id="im150">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> conditions. Generally, <inline-formula>
<mml:math display="inline" id="im151">
<mml:mrow>
<mml:msubsup>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is positively correlated with <inline-formula>
<mml:math display="inline" id="im152">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and leaf distribution consistency at an intermediate <inline-formula>
<mml:math display="inline" id="im153">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> better reflects the overall leaf uniformity of the orchid. Therefore, leaf distribution consistency for the orchid (the weighted average of <inline-formula>
<mml:math display="inline" id="im154">
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>) quantified how uniformly leaves occupy space around the pot by partitioning the annulus between the pot circle and the crown circle into concentric rings. Leaf distribution consistency is defined as</p>
<disp-formula>
<mml:math display="block" id="M18">
<mml:mrow>
<mml:mtext>Leaf&#xa0;Distribution&#xa0;Consistency</mml:mtext>
<mml:mo>=</mml:mo>
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>N</mml:mi>
</mml:munderover>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mi>V</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <inline-formula>
<mml:math display="inline" id="im155">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is a Gaussian function satisfying <inline-formula>
<mml:math display="inline" id="im156">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>N</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mstyle>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im157">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>g</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mi>N</mml:mi>
<mml:mn>2</mml:mn>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula>, expressed as</p>
<disp-formula>
<mml:math display="block" id="M19">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mtext>exp</mml:mtext>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mi>N</mml:mi>
<mml:mn>2</mml:mn>
</mml:mfrac>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
<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:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>N</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mi>exp</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mi>N</mml:mi>
<mml:mn>2</mml:mn>
</mml:mfrac>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
<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:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mstyle>
</mml:mrow>
</mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mtext>Softmax</mml:mtext>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mi>N</mml:mi>
<mml:mn>2</mml:mn>
</mml:mfrac>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
<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:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>For front view, the top edge of the flowerpot&#x2019;s rectangular boundary serves as the bottom reference line of leaves (<inline-formula>
<mml:math display="inline" id="im158">
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>). The distance from the <inline-formula>
<mml:math display="inline" id="im159">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula>-th key point of leaf <inline-formula>
<mml:math display="inline" id="im160">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula> to <inline-formula>
<mml:math display="inline" id="im161">
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is denoted as <inline-formula>
<mml:math display="inline" id="im162">
<mml:mrow>
<mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, and the average distance of all keypoints in leaf <inline-formula>
<mml:math display="inline" id="im163">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula> to <inline-formula>
<mml:math display="inline" id="im164">
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is represented by <inline-formula>
<mml:math display="inline" id="im165">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>h</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mstyle>
</mml:mrow>
</mml:math>
</inline-formula>. The variance of <inline-formula>
<mml:math display="inline" id="im166">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>h</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> across all leaves reflects the variation in the average height of each leaf within the orchid, which is defined as leaf height consistency (<xref ref-type="fig" rid="f5">
<bold>Figure&#xa0;5C</bold>
</xref>), indicating whether the architecture is harmonized rather than a mix of very long and very short leaves. Leaf height consistency is formulated as</p>
<disp-formula>
<mml:math display="block" id="M20">
<mml:mrow>
<mml:mtext>Leaf&#xa0;Height&#xa0;Consistency</mml:mtext>
<mml:mo>=</mml:mo>
<mml:mi>V</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:munderover>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <inline-formula>
<mml:math display="inline" id="im167">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the number of keypoints on leaf <inline-formula>
<mml:math display="inline" id="im168">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula> in front view.</p>
</sec>
</sec>
<sec id="s3" sec-type="results">
<label>3</label>
<title>Results and discussion</title>
<sec id="s3_1">
<label>3.1</label>
<title>Keypoints connection results and phenotypic extraction</title>
<p>The keypoints connection method was applied to both front view and vertical view images of the orchid. The keypoints connection result was shown in <xref ref-type="fig" rid="f6">
<bold>Figures&#xa0;6A, B</bold>
</xref>, respectively It can be seen that the leaves were accurately extracted without any background noise. Due to the application of morphological erosion to reduce the leaf boundary regions, random points were uniformly generated in areas close to the central skeleton. Since the leaf tip width is narrow, the diameter of the random points exceeded the eroded width of leaf tip, resulting in incomplete point generation at the outermost tip. After executing the keypoints algorithm, nearly all leaf skeletons were accurately extracted under complex conditions involving dense leaves, leaf intersection and leaf occlusion. Motivated by this observation, a quantitative analysis was conducted to explicitly characterize when tip detection fails and how this affects downstream phenotypes.</p>
<fig id="f6" position="float">
<label>Figure&#xa0;6</label>
<caption>
<p>Original image, binary image with random points and binary image with connected keypoints in <bold>(A)</bold> vertical view and <bold>(B)</bold> front view.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fpls-16-1641255-g006.tif">
<alt-text content-type="machine-generated">Two-panel set showing maize image processing from different views. Panel A (front view) proceeds from a binary image with random points to an image with connected keypoints. Panel B (vertical view) shows the same sequence. The series illustrates detection of points and connection into skeletons from both perspectives.Figure 10 &#x2013; Alt-Text (no change, approved):Line and scatter plots show growth metrics over ten stages (#1&#x2013;#10) in pre-, mid- and post-growth phases: relative crown width, leaf recall rate and curvature error. A sequence of plant images in front and vertical views appears beneath the graphs, corresponding to each stage.</alt-text>
</graphic>
</fig>
<p>To make failure modes explicit, a leaf-level criterion was adopted whereby a tip is counted as missed if the outermost 20% sector of that leaf contains no sampled points. Using this definition and expressing the random-point marker diameter as a percentage of the shortest contour length in <inline-formula>
<mml:math display="inline" id="im169">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, the tip-miss frequency over the entire orchid dataset (front and top views combined) was 19.24% at the default setting of 1.5%. An ablation varying the marker diameter showed a monotonic decrease in misses&#x2014;from 32.34% (6%) to 0% (0.1%)&#x2014;indicating that erosion-induced narrowing at very thin tips is the primary cause and can be mitigated by smaller markers. Phenotype level effects were limited at the default: leaf count was essentially unchanged. Relative crown width exhibited a mild negative bias (&#x2212;2.4%). Leaf-length consistency showed a small positive bias (+2.6%). Leaf distribution consistency changed negligibly due to Gaussian mid-radius weighting. And in front views, leaf-height consistency showed a minor negative bias (&#x2212;1.1%). These results indicate that, under default settings, tip misses occur in a fraction of leaves but have minor impact on the five target phenotypes. If complete tip recovery is required, reducing the marker diameter (&#x2264;0.3%) eliminates the effect without altering the rest of the pipeline.</p>
<p>YOLOv7-SlimPose (<xref ref-type="bibr" rid="B6">Gao et&#xa0;al., 2024</xref>) was utilized based on the same dataset. For each leaf, four keypoints were predefined and annotated (<xref ref-type="fig" rid="f4">
<bold>Figures&#xa0;4A, B</bold>
</xref>): (1) Root point, which is the point where the base of the plant connects to the pot; (2) Angle point, located at the midpoint between the Root point and the Tip point; (3) Angle point 2, positioned at three-quarters of the distance from the Root point to the Tip point; and (4) Tip point, representing the apex of the leaf. Keypoints point (1) through (4) were sequentially connected to form the leaf skeleton. 10 leaves and 8 leaves were annotated in vertical view images and font view images respectively. The annotated leaf skeletons in each image were evenly distributed. A total of 561 images were selected for the training set, 126 images for the validation set, and the remaining 15 images were used as the test set. The ratio of vertical view to front view images was maintained at 1:1 across the training, validation, and test sets. Due to the distinct distribution of leaves in the vertical and front view, the images from these two perspectives were separated and used to train two models: one for vertical view and another for front view (Total training time is 7.3 hours). After training, the test set images were input into YOLOv7-SlimPose, which output the leaf keypoints and skeletons for front view (blue output in <xref ref-type="fig" rid="f4">
<bold>Figure&#xa0;4C</bold>
</xref>) and vertical view (blue output in <xref ref-type="fig" rid="f4">
<bold>Figure&#xa0;4D</bold>
</xref>).</p>
<p>The test set images (<xref ref-type="fig" rid="f7">
<bold>Figure&#xa0;7A</bold>
</xref>) were processed by both algorithms. Based on the identified keypoints and the leaf skeleton, 5 key features were further extracted, and the curvature error and leaf recall rate were calculated for each, as shown in (<xref ref-type="fig" rid="f7">
<bold>Figure&#xa0;7B</bold>
</xref>).</p>
<fig id="f7" position="float">
<label>Figure&#xa0;7</label>
<caption>
<p>
<bold>(A)</bold> Vertical view and front view in test set (5 samples as example). <bold>(B)</bold> 5 phenotypes, curvature error and leaf recall rate obtained by YOLOv7-SlimPose and this work.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fpls-16-1641255-g007.tif">
<alt-text content-type="machine-generated">Panel A displays vertical and front views of five plant samples, each with a scale indicating size. Panel B shows graphs comparing data on leaves number, relative crown width, leaves length consistency, leaves distribution consistency, leaves height consistency, curvature error, and leaf recall rate across the samples. The graphs use three lines representing &#x201c;This work&#x201d; (red), &#x201c;YOLOv7-SlimPose&#x201d; (blue), and &#x201c;Ground Truth&#x201d; (green) to illustrate differences in each metric for samples numbered 1 to 5.</alt-text>
</graphic>
</fig>
<p>YOLOv7-SlimPose has a fixed output layer structure and relies on an anchor-based object detection mechanism, which restricts the size and position of the output targets within a predefined range (<xref ref-type="bibr" rid="B22">Liu et&#xa0;al., 2022</xref>). The model generates a fixed number of keypoints for each anchor position during forward propagation. This design limits the model to outputting only a predetermined number of keypoints and predefined skeleton connections (<xref ref-type="bibr" rid="B11">He et&#xa0;al., 2022</xref>; <xref ref-type="bibr" rid="B35">Tan et&#xa0;al., 2024</xref>). Consequently, skeletons&#x2019; number and keypoints detected by YOLOv7-SlimPose model are entirely dependent on the annotations in the training data, which often require expert knowledge in botany, especially when dealing with complex plant structures.</p>
<p>For front view, orchid leaf root points were distributed across various positions within the pot. However, due to annotation constraints, YOLOv7-SlimPose identifies all root points as being concentrated in a single location, failing to represent the true morphology of leaves. Orchids exhibit varying numbers of leaves, leaf lengths, and leaf distributions, but YOLOv7-SlimPose lacks the flexibility to dynamically adjust the output structure based on the input, making it inadequate for handling uncertain keypoints numbers and connection patterns. Therefore, deep learning models like YOLOv7-SlimPose are more suitable for applications involving fixed keypoints numbers and skeleton structures, such as human or animal pose estimation, rather than for complex plants like orchids, which have dense and variable leaf pattern.</p>
<p>Based on the skeletons generated by YOLOv7-SlimPose, five orchid phenotypes were extracted from the test set, with the results shown in <xref ref-type="fig" rid="f7">
<bold>Figure&#xa0;7</bold>
</xref>. For the vertical view, as the annotated number of leaves was fixed at 12, the model consistently detected 12 leaf skeletons (with the leaf count remaining constant at 12) and 37 keypoints across all images. In contrast, the method proposed in this work accurately detected varying numbers of leaves, achieving a leaf recall rate of 1 in three out of five samples. In the first two samples, where the leaves were relatively sparse, YOLOv7-SlimPose was able to detect most of the leaf tips, resulting in a relative crown width close to the ground truth. However, as the number of leaves increased in the remaining samples, the accuracy of the crown width predictions by YOLOv7-SlimPose dropped significantly compared to this work. The fixed number of keypoints output by YOLOv7-SlimPose resulted in poor fitting of the true leaf skeleton curve, limiting the model&#x2019;s ability to accurately reflect leaf consistency. The average curvature error and leaf recall on test set were only 59% and 63%, respectively. In contrast, this work successfully detected enough leaves and keypoints, and accurately fitted the real leaf skeleton, resulting in more precise extraction of leaf length consistency, distribution consistency, and height consistency. Without manual labeling and long-term training, the average curvature error and blade recall of the test set reached 0.12 and 92%, respectively.</p>
<p>To demonstrate how the proposed spontaneous key-points connection differs from traditional non-learning approaches, the same binary masks were processed with the medial-axis transform (MAT) and with Zhang&#x2013;Suen thinning (<xref ref-type="fig" rid="f8">
<bold>Figure&#xa0;8</bold>
</xref>). Both classical algorithms inherit every imperfection present in the thresholded image: darker leaf segments translate into complete breaks, while small contour irregularities give rise to dense clusters of spurs and lateral branches. The resulting skeletons are fragmented and highly branched, preventing the continuous center-line that downstream phenotype measurements require. By contrast, the proposed strategy links interior sample points under geometric constraints that actively suppress burr formation and bridge minor gaps, yielding a single, smooth curve for each leaf and enabling reliable extraction of length, curvature and spatial-distribution traits. The qualitative comparison therefore reinforces the practical advantage and uniqueness of the present method for complex leafy plants.</p>
<fig id="f8" position="float">
<label>Figure&#xa0;8</label>
<caption>
<p>
<bold>(A)</bold> Original image; <bold>(B)</bold> skeletonization result of Zhang&#x2013;Suen thinning; <bold>(C)</bold> skeletonization result of MAT.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fpls-16-1641255-g008.tif">
<alt-text content-type="machine-generated">Panel A shows an overhead image of a plant with long, thin leaves in a pot. Panel B uses the Zhang-Suen thinning method to outline the plant's structure, while Panel C displays a medial-axis transform of the same plant, highlighting skeletal features. The scale bars indicate 20 centimeters.</alt-text>
</graphic>
</fig>
</sec>
<sec id="s3_2">
<label>3.2</label>
<title>Computational efficiency or practicality</title>
<p>Experiments were conducted on a CPU-only workstation equipped with 32 GB DDR4&#x2013;2666 system memory. For images of 4024 &#xd7; 3036 and 3072 &#xd7; 2048 pixels, the algorithm required on average 3.556 s and 2.247 s per image, respectively, with peak resident memory of approximately 190.50 MB and 150.37 MB. No GPU acceleration was used.</p>
<p>Compared with the classical methods that have been publicly disclosed, iterative refinement in the i5-4670K and 4 GB memory virtual machine environment, most algorithms are completed within the range of 0.58-0.96 s for a single image, while Stentiford and an improved method take about 1.21-1.43 s (<xref ref-type="bibr" rid="B7">Gramblicka and Vasky, 2016</xref>). The total runtime given in the example script, represented by the central axis transformation, is about 1.34 s/image. The total runtime of the activity outline in similar official examples is about 2.03 seconds per image. The Hessian Frangi ridge filter shows an average of 1.187 s/graph in the i7 3.0 GHz, 64 GB, RTX 2060 environment, and hardware configuration is provided to ensure comparability (<xref ref-type="bibr" rid="B9">Hachaj and Piekarczyk, 2023</xref>).</p>
<p>Although the single frame time is slightly higher than several classic skeleton pipelines, this method does not require labeling and training, and can adaptively generate a variable number of keypoints and skeletons after one preprocessing. It directly supports phenotype calculations such as leaf number, crown width, length consistency, distribution consistency, and height consistency, and has been validated for stable leaf recall rate and cross species generalization in orchid and maize morphologies. The practicality of this type of &#x201c;training species independent&#x201d; is supported by the cost of running a CPU in seconds and a hundred megabits of memory, avoiding the time and economic expenses of retraining and manual annotation. Regarding scalability, when the number of pixels increases from 6.29 million to 12.22 million (1.94 &#xd7;), the average time takes from 2.247 s to 3.556 s (1.58 &#xd7;), showing a nearly linear or even better scaling. The algorithm mainly relies on local search and angle/convexity constraints on the mask, and the computational complexity mainly increases linearly with the number of pixels and candidate points, so it will only be faster at lower resolutions. 4024 &#xd7; 3036 has significantly exceeded the imaging requirements of most production processes, and high-resolution is chosen to cover the most demanding resolution scenes. In terms of density, the high leaf density, occlusion, and overlap of orchids have constituted strict stress tests, while the full growth period samples of corn gradually increase leaf density, all of which can maintain stable skeleton extraction and high leaf recall rate, indicating that the scalability in leaf quantity and density has practical significance.</p>
</sec>
<sec id="s3_3">
<label>3.3</label>
<title>Generalization ability verification</title>
<p>To verify the generalization ability of the proposed algorithm, it was applied to maize. Similar to orchid leaves, maize leaves are soft, numerous, densely packed, and exhibit significant overlap. Using the publicly available single-plant maize dataset (Dataset URL: <ext-link ext-link-type="uri" xlink:href="https://datasetninja.com/maize-whole-plant-image-dataset">https://datasetninja.com/maize-whole-plant-image-dataset</ext-link>), which captured images of a single maize plant over 113 days&#x2014;with 1 vertical view and 12 front view images taken each day&#x2014;the spontaneous keypoints connection algorithm was applied to both a front view (<xref ref-type="fig" rid="f9">
<bold>Figure&#xa0;9</bold>
</xref>) and a vertical view image (<xref ref-type="fig" rid="f9">
<bold>Figure&#xa0;9</bold>
</xref>) from 10 different days, spanning pre-, mid-, and post-growth stages (<xref ref-type="fig" rid="f10">
<bold>Figure&#xa0;10</bold>
</xref>). Due to the relatively wide leaves of maize, random points could still be generated at the eroded leaf tips, and in some cases, a single maize leaf may be mistakenly identified as two separate leaves in the vertical view.</p>
<fig id="f9" position="float">
<label>Figure&#xa0;9</label>
<caption>
<p>Original image, binary image with random points and binary image with connected keypoints of a single maize in <bold>(A)</bold> vertical view and <bold>(B)</bold> front view.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fpls-16-1641255-g009.tif">
<alt-text content-type="machine-generated">Diagram illustrating leaf growth and keypoint determination around a flowerpot. Panel A shows how keypoints on a new leaf are searched and selected: iterative search directions, angle evaluation, and keep/discard decisions based on angles. Panel B explains how points above the pot form a convex polyline using vector addition and selection criteria, maintaining convexity. Labeled points, angles and vector directions are indicated.</alt-text>
</graphic>
</fig>
<fig id="f10" position="float">
<label>Figure&#xa0;10</label>
<caption>
<p>
<bold>(A)</bold> Relative crown width, <bold>(B)</bold> curvature error and <bold>(C)</bold> leaf recall rate of a single maize plant throughout entire growth stage obtained by YOLOv7-SlimPose and this work. <bold>(D)</bold> Vertical view and front view images of a single maize plant throughout entire growth stage.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fpls-16-1641255-g010.tif">
<alt-text content-type="machine-generated">A composite image features three graphs labeled A, B, and C, and a series of images labeled D. Graph A shows relative crown width over ten stages, comparing data from &#x201c;This work,&#x201d; &#x201c;YOLOv7-SlimPose,&#x201d; and &#x201c;Ground Truth.&#x201d; Graph B illustrates leaf recall rate, and Graph C depicts curvature error over the same stages. Graphs are separated by vertical dashed lines indicating pre, mid, and post-growth stages. Below, series D displays front and vertical views of plants at each stage, aligned with the graphs. The growth stages are clearly marked in red.</alt-text>
</graphic>
</fig>
<p>It is important to note that the extraction of maize leaf count is based on the front view images, while the vertical view is primarily used to extract features such as crown width, leaf distribution consistency, and overall plant structure. Therefore, any misidentification of leaf number in the vertical view does not affect the final feature extraction or the evaluation of the algorithm&#x2019;s generalization ability on maize leaves.</p>
<p>Samples #4 and #5 were annotated for YOLOv7-SlimPose training, with 6 skeletons annotated per front view image and 4 skeletons per vertical view image. The relative crown width was extracted from 10 samples (<xref ref-type="fig" rid="f10">
<bold>Figure&#xa0;10</bold>
</xref>). During the early growth stage, when maize leaves are smaller and fewer in number, YOLOv7-SlimPose predicted more skeletons than the actual leaf count, allowing it to accurately estimate the crown width in this stage. However, as the plant continued to grow, both the size and number of leaves increased. The number of leaves exceeded the prediction range of YOLOv7-SlimPose in mid-to-late growth stages, resulting in greater prediction error for the relative crown width.</p>
<p>In contrast, the proposed method accurately predicted the relative crown width across all growth stages (<xref ref-type="fig" rid="f10">
<bold>Figure&#xa0;10</bold>
</xref>) and consistently detected all leaves from the front view, maintaining a leaf recall rate of 100% throughout (<xref ref-type="fig" rid="f10">
<bold>Figure&#xa0;10</bold>
</xref>). Additionally, compared to YOLOv7-SlimPose, the proposed method maintained a lower curvature error (<xref ref-type="fig" rid="f10">
<bold>Figure&#xa0;10</bold>
</xref>) for front view images across all growth stages. These results confirm that the proposed method accurately extracts all keypoints and skeletons of maize leaves, demonstrating its effectiveness in keypoint detection, skeleton recognition, and feature extraction in crops with complex morphologies.</p>
<p>In summary, this work identifies keypoints and skeletons based solely on the connection of randomly generated points in the leaf region. This approach eliminates the need for predefined keypoints and training based on plant structure, making it adaptable for a broader range of plant phenotypic extraction tasks.</p>
</sec>
</sec>
<sec id="s4" sec-type="conclusions">
<label>4</label>
<title>Conclusion</title>
<p>A spontaneous keypoints connection skeletonization algorithm based on random points was firstly developed for leafy plants phenotypic extraction. HSV color thresholding separated orchid leaves into binarized images. Morphological opening and closing operations, along with area and leaf shape filters, effectively removed noise. After leaf boundary erosion, random points were sampled near the central skeleton within each generated patch. The skeletonization approach was applied to plants with random leaf morphology and regular leaf morphology. For random leaf morphology, the point furthest from the center was identified as the first keypoint. A circular search was then iteratively expanded from this keypoint to find the next point. The subsequent keypoints search direction was determined based on the relative position of these two keypoints, thereby reducing the spatial complexity by half. Remaining keypoints were identified using angle difference thresholds. For regular leaf morphology, the algorithm ensured the accuracy of leaf skeleton fitting by enforcing that any three consecutive points formed a convex polyline while minimizing curvature. By iteratively applying this approach, nearly all leaves&#x2019; skeletons were detected, achieving an average curvature error of 0.12 and a leaf recall rate of 92%. In addition, a qualitative comparison with classical non-learning baselines showed that both inherit binarization discontinuities and produce fragmented, highly branched center-lines, whereas the proposed strategy yields smooth and continuous skeletons that enable downstream phenotypic measurements. Finally, five phenotypes of orchids were accurately extracted based on the identified skeletons. Moreover, this algorithm effectively predicted maize&#x2019;s relative crown width throughout all growth stages and consistently detected 100% of the leaves, highlighting its generalization capability on wide leaf plants. Compared to existing literature reports, this approach accurately skeletonized leafy plants with random and regular morphological leaves, eliminating manual keypoints design and training based on plants&#x2019; structure. It can spontaneously detect keypoints and extract skeletons according to plant morphology, offering an effective solution for accurate phenotypic extraction of more plants with complex morphologies.</p>
</sec>
</body>
<back>
<sec id="s5" sec-type="data-availability">
<title>Data availability statement</title>
<p>The original contributions presented in the study are included in the article/supplementary material. Further inquiries can be directed to the corresponding author.</p>
</sec>
<sec id="s6" sec-type="author-contributions">
<title>Author contributions</title>
<p>ZW: Conceptualization, Software, Writing &#x2013; original draft, Methodology. XH: Data curation, Writing &#x2013; review &amp; editing, Software. YW: Writing &#x2013; review &amp; editing, Investigation. CY: Writing &#x2013; review &amp; editing. BF: Project administration, Funding acquisition, Writing &#x2013; review &amp; editing. QZ: Supervision, Project administration, Funding acquisition, Writing &#x2013; review &amp; editing. XL: Project administration, Writing &#x2013; review &amp; editing.</p>
</sec>
<sec id="s7" sec-type="funding-information">
<title>Funding</title>
<p>The author(s) declare financial support was received for the research and/or publication of this article. This work was supported by the Innovation Program of the Chinese Academy of Agricultural Sciences [CAAS-CAE-202302, CAAS-ASTIP-2024-AII] and the Central Public-interest Scientific Institution Basal Research Fund (No. JBYW-AII-2025-01).</p>
</sec>
<sec id="s8" sec-type="COI-statement">
<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 id="s9" sec-type="ai-statement">
<title>Generative AI statement</title>
<p>The author(s) declare that no Generative AI was used in the creation of this manuscript.</p>
<p>Any alternative text (alt text) provided alongside figures in this article has been generated by Frontiers with the support of artificial intelligence and reasonable efforts have been made to ensure accuracy, including review by the authors wherever possible. If you identify any issues, please contact us.</p>
</sec>
<sec id="s10" sec-type="disclaimer">
<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>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bucksch</surname> <given-names>A.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>A practical introduction to skeletons for the plant sciences</article-title>. <source>Appl. Plant Sci.</source> <volume>2</volume>, <elocation-id>1400005</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.3732/apps.1400005</pub-id>, PMID: <pub-id pub-id-type="pmid">25202645</pub-id></citation></ref>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Cembrowska-Lech</surname> <given-names>D.</given-names>
</name>
<name>
<surname>Krzemi&#x144;ska</surname> <given-names>A.</given-names>
</name>
<name>
<surname>Miller</surname> <given-names>T.</given-names>
</name>
<name>
<surname>Nowakowska</surname> <given-names>A.</given-names>
</name>
<name>
<surname>Adamski</surname> <given-names>C.</given-names>
</name>
<name>
<surname>Radaczy&#x144;ska</surname> <given-names>M.</given-names>
</name>
<etal/>
</person-group>. (<year>2023</year>). <article-title>An integrated multi-omics and artificial intelligence framework for advance plant phenotyping in horticulture</article-title>. <source>Biology</source> <volume>12</volume>, <elocation-id>1298</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.3390/biology12101298</pub-id>, PMID: <pub-id pub-id-type="pmid">37887008</pub-id></citation></ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chuon</surname> <given-names>C.</given-names>
</name>
<name>
<surname>Guha</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Janecek</surname> <given-names>P.</given-names>
</name>
<name>
<surname>Song</surname> <given-names>N. D. C.</given-names>
</name>
</person-group> (<year>2011</year>). <article-title>Simplipoly: Curvature-based polygonal curve simplification</article-title>. <source>Int. J. Comput. Geometry Appl.</source> <volume>21</volume>, <fpage>417</fpage>&#x2013;<lpage>429</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1142/S0218195911003743</pub-id>
</citation></ref>
<ref id="B4">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>De Vylder</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Ochoa</surname> <given-names>D.</given-names>
</name>
<name>
<surname>Philips</surname> <given-names>W.</given-names>
</name>
<name>
<surname>Chaerle</surname> <given-names>L.</given-names>
</name>
<name>
<surname>van der Straeten</surname> <given-names>D.</given-names>
</name>
</person-group> (<year>2011</year>). &#x201c;<article-title>Leaf segmentation and tracking using probabilistic parametric active contours</article-title>,&#x201d; in <source>International Conference on Computer Vision/Computer Graphics Collaboration Techniques and Applications</source> (<publisher-loc>Berlin, Heidelberg</publisher-loc>: <publisher-name>Springer</publisher-name>). doi:&#xa0;<pub-id pub-id-type="doi">10.1007/978-3-642-24136-9_7</pub-id>
</citation></ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ebrahimi</surname> <given-names>A.</given-names>
</name>
<name>
<surname>Asadi</surname> <given-names>A.</given-names>
</name>
<name>
<surname>Monfared</surname> <given-names>S. R.</given-names>
</name>
<name>
<surname>Sahebi</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Rezaee</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Khaledian</surname> <given-names>Y.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Evaluation of phenotypic diversity of the endangered orchid (orchis mascula): Emphasizing on breeding, conservation and development</article-title>. <source>South Afr. J. Bot.</source> <volume>132</volume>, <fpage>304</fpage>&#x2013;<lpage>315</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.sajb.2020.05.013</pub-id>
</citation></ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gao</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Li</surname> <given-names>Z.</given-names>
</name>
<name>
<surname>Li</surname> <given-names>B.</given-names>
</name>
<name>
<surname>Zhang</surname> <given-names>L.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Extraction of corn plant phenotypic parameters with keypoint detection and stereo images</article-title>. <source>Agronomy</source> <volume>14</volume>, <elocation-id>1110</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.3390/agronomy14061110</pub-id>
</citation></ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gramblicka</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Vasky</surname> <given-names>J.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Comparison of thinning algorithms for vectorization of engineering drawings</article-title>. <source>J. Theor. Appl. Inf. Technol.</source> <volume>94</volume>, <fpage>265</fpage>.</citation></ref>
<ref id="B8">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Guan</surname> <given-names>Z.-J.</given-names>
</name>
<name>
<surname>Zhang</surname> <given-names>S.-B.</given-names>
</name>
<name>
<surname>Guan</surname> <given-names>K.-Y.</given-names>
</name>
<name>
<surname>Li</surname> <given-names>S.-Y.</given-names>
</name>
<name>
<surname>Hu</surname> <given-names>H.</given-names>
</name>
</person-group> (<year>2011</year>). <article-title>Leaf anatomical structures of paphiopedilum and cypripedium and their adaptive significance</article-title>. <source>J. Plant Res.</source> <volume>124</volume>, <fpage>289</fpage>&#x2013;<lpage>298</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1007/s10265-010-0372-z</pub-id>, PMID: <pub-id pub-id-type="pmid">20711624</pub-id></citation></ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hachaj</surname> <given-names>T.</given-names>
</name>
<name>
<surname>Piekarczyk</surname> <given-names>M.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>High-level hessian-based image processing with the frangi neuron</article-title>. <source>Electronics</source> <volume>12</volume>, <fpage>4159</fpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.3390/electronics12194159</pub-id>
</citation></ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>He</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Weng</surname> <given-names>L.</given-names>
</name>
<name>
<surname>Xu</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Chen</surname> <given-names>R.</given-names>
</name>
<name>
<surname>Peng</surname> <given-names>B.</given-names>
</name>
<name>
<surname>Li</surname> <given-names>N.</given-names>
</name>
<etal/>
</person-group>. (<year>2024</year>). <article-title>Dekr-sprior: An efficient bottom-up keypoint detection model for accurate pod phenotyping in soybean</article-title>. <source>Plant Phenomics</source> <volume>6</volume>, <elocation-id>198</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.34133/plantphenomics.0198</pub-id>, PMID: <pub-id pub-id-type="pmid">38939747</pub-id></citation></ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>He</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Wandt</surname> <given-names>B.</given-names>
</name>
<name>
<surname>Rhodin</surname> <given-names>H.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Autolink: Self-supervised learning of human skeletons and object outlines by linking keypoints</article-title>. <source>Adv. Neural Inf. Process. Syst.</source> <volume>35</volume>, <fpage>36123</fpage>&#x2013;<lpage>36141</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.48550/arXiv.2205.10636</pub-id>
</citation></ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hu</surname> <given-names>T.</given-names>
</name>
<name>
<surname>Zhou</surname> <given-names>Q.</given-names>
</name>
<name>
<surname>Nan</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Lin</surname> <given-names>R.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>A color image decomposition model for image enhancement</article-title>. <source>Neurocomputing</source> <volume>558</volume>, <elocation-id>126772</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.neucom.2023.126772</pub-id>
</citation></ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Jiang</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Li</surname> <given-names>C.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Convolutional neural networks for image-based high-throughput plant phenotyping: A review</article-title>. <source>Plant Phenomics</source>. <volume>2020</volume>, <elocation-id>4152816</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.34133/2020/4152816</pub-id>, PMID: <pub-id pub-id-type="pmid">33313554</pub-id></citation></ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kolhar</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Jagtap</surname> <given-names>J.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Plant trait estimation and classification studies in plant phenotyping using machine vision&#x2013;a review</article-title>. <source>Inf. Process. Agric.</source> <volume>10</volume>, <fpage>114</fpage>&#x2013;<lpage>135</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.inpa.2021.02.006</pub-id>
</citation></ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lac</surname> <given-names>L.</given-names>
</name>
<name>
<surname>Da Costa</surname> <given-names>J.-P.</given-names>
</name>
<name>
<surname>Donias</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Keresztes</surname> <given-names>B.</given-names>
</name>
<name>
<surname>Louargant</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Prigonrieux</surname> <given-names>F.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>SDNet: Unconstrained object structure detector network for in-field real-time crop part location and phenotyping</article-title>. <source>BMVC</source>. <volume>35</volume>, <page-range>1&#x2013;13</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.5244/C.35</pub-id>
</citation></ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lagergren</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Pavicic</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Chhetri</surname> <given-names>H. B.</given-names>
</name>
<name>
<surname>York</surname> <given-names>L. M.</given-names>
</name>
<name>
<surname>Hyatt</surname> <given-names>D.</given-names>
</name>
<name>
<surname>Kainer</surname> <given-names>D.</given-names>
</name>
<etal/>
</person-group>. (<year>2023</year>). <article-title>Few-shot learning enables population-scale analysis of leaf traits in populus trichocarpa</article-title>. <source>Plant Phenomics</source> <volume>5</volume>, <elocation-id>72</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.34133/plantphenomics.0072</pub-id>, PMID: <pub-id pub-id-type="pmid">37519935</pub-id></citation></ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Le</surname> <given-names>V. N. T.</given-names>
</name>
<name>
<surname>Ahderom</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Apopei</surname> <given-names>B.</given-names>
</name>
<name>
<surname>Alameh</surname> <given-names>K.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>A novel method for detecting morphologically similar crops and weeds based on the combination of contour masks and filtered local binary pattern operators</article-title>. <source>GigaScience</source> <volume>9</volume>, <elocation-id>giaa017</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.1093/gigascience/giaa017</pub-id>, PMID: <pub-id pub-id-type="pmid">32129847</pub-id></citation></ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lei</surname> <given-names>W.</given-names>
</name>
<name>
<surname>Hou</surname> <given-names>F.</given-names>
</name>
<name>
<surname>Xi</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Tan</surname> <given-names>Q.</given-names>
</name>
<name>
<surname>Xu</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Jiang</surname> <given-names>X.</given-names>
</name>
<etal/>
</person-group>. (<year>2019</year>). <article-title>Automatic hyperbola detection and fitting in gpr b-scan image</article-title>. <source>Automation Construction</source> <volume>106</volume>, <elocation-id>102839</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.autcon.2019.102839</pub-id>
</citation></ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Zhan</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Liu</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Lu</surname> <given-names>H.</given-names>
</name>
<name>
<surname>Jiang</surname> <given-names>R.</given-names>
</name>
<name>
<surname>Guo</surname> <given-names>W.</given-names>
</name>
<etal/>
</person-group>. (<year>2023</year>). <article-title>Self-supervised plant phenotyping by combining domain adaptation with 3d plant model simulations: Application to wheat leaf counting at seedling stage</article-title>. <source>Plant Phenomics</source> <volume>5</volume>, <elocation-id>41</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.34133/plantphenomics.0041</pub-id>, PMID: <pub-id pub-id-type="pmid">37223315</pub-id></citation></ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname> <given-names>Z.</given-names>
</name>
<name>
<surname>Guo</surname> <given-names>R.</given-names>
</name>
<name>
<surname>Li</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Chen</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Li</surname> <given-names>G.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>A review of computer vision technologies for plant phenotyping</article-title>. <source>Comput. Electron. Agric.</source> <volume>176</volume>, <elocation-id>105672</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.compag.2020.105672</pub-id>
</citation></ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname> <given-names>B.</given-names>
</name>
<name>
<surname>Chang</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Hou</surname> <given-names>D.</given-names>
</name>
<name>
<surname>Pan</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Li</surname> <given-names>D.</given-names>
</name>
<name>
<surname>Ruan</surname> <given-names>J.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Recognition and localization of maize leaf and stalk trajectories in rgb images based on point-line net</article-title>. <source>Plant Phenomics</source> <volume>6</volume>, <elocation-id>199</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.34133/plantphenomics.0199</pub-id>, PMID: <pub-id pub-id-type="pmid">39691278</pub-id></citation></ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Chen</surname> <given-names>H.-X.</given-names>
</name>
<name>
<surname>Liu</surname> <given-names>B.-Y.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Dynamic anchor: A feature-guided anchor strategy for object detection</article-title>. <source>Appl. Sci.</source> <volume>12</volume>, <elocation-id>4897</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.3390/app12104897</pub-id>
</citation></ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Liu</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>He</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Yan</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Yu</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Ali</surname> <given-names>M.</given-names>
</name>
<etal/>
</person-group>. (<year>2023</year>). <article-title>Cytokinin-inducible response regulator slrr6 controls plant height through gibberellin and auxin pathways in tomato</article-title>. <source>J. Exp. Bot.</source> <volume>74</volume>, <fpage>4471</fpage>&#x2013;<lpage>4488</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1093/jxb/erad159</pub-id>, PMID: <pub-id pub-id-type="pmid">37115725</pub-id></citation></ref>
<ref id="B24">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Murata</surname> <given-names>H.</given-names>
</name>
<name>
<surname>Noshita</surname> <given-names>K.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Three-dimensional leaf edge reconstruction combining two-and three-dimensional approaches</article-title>. <source>Plant Phenomics</source> <volume>6</volume>, <elocation-id>181</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.34133/plantphenomics.0181</pub-id>, PMID: <pub-id pub-id-type="pmid">38726389</pub-id></citation></ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Nyonje</surname> <given-names>W. A.</given-names>
</name>
<name>
<surname>Schafleitner</surname> <given-names>R.</given-names>
</name>
<name>
<surname>Abukutsa-Onyango</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Yang</surname> <given-names>R.-Y.</given-names>
</name>
<name>
<surname>Makokha</surname> <given-names>A.</given-names>
</name>
<name>
<surname>Owino</surname> <given-names>W.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Precision phenotyping and association between morphological traits and nutritional content in vegetable amaranth (amaranthus spp.)</article-title>. <source>J. Agric. Food Res.</source> <volume>5</volume>, <elocation-id>100165</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.jafr.2021.100165</pub-id>
</citation></ref>
<ref id="B26">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ogidi</surname> <given-names>F. C.</given-names>
</name>
<name>
<surname>Eramian</surname> <given-names>M. G.</given-names>
</name>
<name>
<surname>Stavness</surname> <given-names>I.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Benchmarking self-supervised contrastive learning methods for image-based plant phenotyping</article-title>. <source>Plant Phenomics</source> <volume>5</volume>, <elocation-id>37</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.34133/plantphenomics.0037</pub-id>, PMID: <pub-id pub-id-type="pmid">37040288</pub-id></citation></ref>
<ref id="B27">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Pan</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Chang</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Dong</surname> <given-names>Z.</given-names>
</name>
<name>
<surname>Liu</surname> <given-names>B.</given-names>
</name>
<name>
<surname>Wang</surname> <given-names>L.</given-names>
</name>
<name>
<surname>Liu</surname> <given-names>H.</given-names>
</name>
<etal/>
</person-group>. (<year>2025</year>). <article-title>Pflo: A high-throughput pose estimation model for field maize based on yolo architecture</article-title>. <source>Plant Methods</source> <volume>21</volume>, <fpage>51</fpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1186/s13007-025-01369-6</pub-id>, PMID: <pub-id pub-id-type="pmid">40234900</pub-id></citation></ref>
<ref id="B28">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Rodrigues</surname> <given-names>M. A.</given-names>
</name>
<name>
<surname>Matiz</surname> <given-names>A.</given-names>
</name>
<name>
<surname>Cruz</surname> <given-names>A. B.</given-names>
</name>
<name>
<surname>Matsumura</surname> <given-names>A. T.</given-names>
</name>
<name>
<surname>Takahashi</surname> <given-names>C. A.</given-names>
</name>
<name>
<surname>Hamachi</surname> <given-names>L.</given-names>
</name>
<etal/>
</person-group>. (<year>2013</year>). <article-title>Spatial patterns of photosynthesis in thin-and thick-leaved epiphytic orchids: Unravelling c3&#x2013;cam plasticity in an organ-compartmented way</article-title>. <source>Ann. Bot.</source> <volume>112</volume>, <fpage>17</fpage>&#x2013;<lpage>29</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1093/aob/mct090</pub-id>, PMID: <pub-id pub-id-type="pmid">23618898</pub-id></citation></ref>
<ref id="B29">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Schamberger</surname> <given-names>B.</given-names>
</name>
<name>
<surname>Ziege</surname> <given-names>R.</given-names>
</name>
<name>
<surname>Anselme</surname> <given-names>K.</given-names>
</name>
<name>
<surname>Ben Amar</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Bykowski</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Castro</surname> <given-names>A. P.</given-names>
</name>
<etal/>
</person-group>. (<year>2023</year>). <article-title>Curvature in biological systems: Its quantification, emergence, and implications across the scales</article-title>. <source>Advanced materials</source> <volume>35</volume>, <elocation-id>2206110</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.1002/adma.202206110</pub-id>, PMID: <pub-id pub-id-type="pmid">36461812</pub-id></citation></ref>
<ref id="B30">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Scharr</surname> <given-names>H.</given-names>
</name>
<name>
<surname>Minervini</surname> <given-names>M.</given-names>
</name>
<name>
<surname>French</surname> <given-names>A. P.</given-names>
</name>
<name>
<surname>Klukas</surname> <given-names>C.</given-names>
</name>
<name>
<surname>Kramer</surname> <given-names>D. M.</given-names>
</name>
<name>
<surname>Liu</surname> <given-names>X.</given-names>
</name>
<etal/>
</person-group>. (<year>2016</year>). <article-title>Leaf segmentation in plant phenotyping: A collation study</article-title>. <source>Mach. Vision Appl.</source> <volume>27</volume>, <fpage>585</fpage>&#x2013;<lpage>606</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1007/s00138-015-0737-3</pub-id>
</citation></ref>
<ref id="B31">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Seng</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Liu</surname> <given-names>T.</given-names>
</name>
<name>
<surname>Yang</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Zhang</surname> <given-names>R.</given-names>
</name>
<name>
<surname>Yuan</surname> <given-names>C.</given-names>
</name>
<name>
<surname>Guo</surname> <given-names>T.</given-names>
</name>
<etal/>
</person-group>. (<year>2024</year>). <article-title>Measurement of the angle between stems and leaves of rice based on key point detection</article-title>. <source>J. Computing Electronic Inf. Manage.</source> <volume>13</volume>, <fpage>2413</fpage>&#x2013;<lpage>1660</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.54097/bev3vbbn</pub-id>
</citation></ref>
<ref id="B32">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sheikh</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Iqra</surname> <given-names>F.</given-names>
</name>
<name>
<surname>Ambreen</surname> <given-names>H.</given-names>
</name>
<name>
<surname>Pravin</surname> <given-names>K. A.</given-names>
</name>
<name>
<surname>Ikra</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Chung</surname> <given-names>Y. S.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Integrating artificial intelligence and high-throughput phenotyping for crop improvement</article-title>. <source>J. Integr. Agric.</source> <volume>23</volume>, <fpage>1787</fpage>&#x2013;<lpage>1802</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.jia.2023.10.019</pub-id>
</citation></ref>
<ref id="B33">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Shi</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Li</surname> <given-names>X.-Y.</given-names>
</name>
<name>
<surname>Lu</surname> <given-names>H.</given-names>
</name>
<name>
<surname>Cao</surname> <given-names>Z.-G.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Background-aware domain adaptation for plant counting</article-title>. <source>Front. Plant Sci.</source> <volume>13</volume>. doi:&#xa0;<pub-id pub-id-type="doi">10.3389/fpls.2022.731816</pub-id>, PMID: <pub-id pub-id-type="pmid">35185973</pub-id></citation></ref>
<ref id="B34">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Shi</surname> <given-names>W.</given-names>
</name>
<name>
<surname>Koo</surname> <given-names>D.</given-names>
</name>
<name>
<surname>Kitano</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Chiang</surname> <given-names>H.</given-names>
</name>
<name>
<surname>Trinh</surname> <given-names>L.</given-names>
</name>
<name>
<surname>Turcatel</surname> <given-names>G.</given-names>
</name>
<etal/>
</person-group>. (<year>2020</year>). <article-title>Pre-processing visualization of hyperspectral fluorescent data with spectrally encoded enhanced representations</article-title>. <source>Nat. Commun.</source> <volume>11</volume>, <fpage>726</fpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1038/s41467-020-14486-8</pub-id>, PMID: <pub-id pub-id-type="pmid">32024828</pub-id></citation></ref>
<ref id="B35">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Tan</surname> <given-names>G. D.</given-names>
</name>
<name>
<surname>Chaudhuri</surname> <given-names>U.</given-names>
</name>
<name>
<surname>Varela</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Ahuja</surname> <given-names>N.</given-names>
</name>
<name>
<surname>Leakey</surname> <given-names>A. D.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Machine learning-enabled computer vision for plant phenotyping: A primer on ai/ml and a case study on stomatal patterning</article-title>. <source>J. Exp. Bot.</source> <volume>75</volume>, <fpage>6683</fpage>&#x2013;<lpage>6703</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1093/jxb/erae395</pub-id>, PMID: <pub-id pub-id-type="pmid">39363775</pub-id></citation></ref>
<ref id="B36">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Weyler</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Milioto</surname> <given-names>A.</given-names>
</name>
<name>
<surname>Falck</surname> <given-names>T.</given-names>
</name>
<name>
<surname>Behley</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Stachniss</surname> <given-names>C.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Joint plant instance detection and leaf count estimation for in-field plant phenotyping</article-title>. <source>IEEE Robotics Automation Lett.</source> <volume>6</volume>, <fpage>3599</fpage>&#x2013;<lpage>3606</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1109/LRA.2021.3060712</pub-id>
</citation></ref>
<ref id="B37">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Xiang</surname> <given-names>L.</given-names>
</name>
<name>
<surname>Gai</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Bao</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Yu</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Schnable</surname> <given-names>P. S.</given-names>
</name>
<name>
<surname>Tang</surname> <given-names>L.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Field-based robotic leaf angle detection and characterization of maize plants using stereo vision and deep convolutional neural networks</article-title>. <source>J. Field Robotics</source> <volume>40</volume>, <fpage>1034</fpage>&#x2013;<lpage>1053</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1002/rob.22166</pub-id>
</citation></ref>
<ref id="B38">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yin</surname> <given-names>L.</given-names>
</name>
<name>
<surname>Wang</surname> <given-names>L.</given-names>
</name>
<name>
<surname>Li</surname> <given-names>T.</given-names>
</name>
<name>
<surname>Lu</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Yin</surname> <given-names>Z.</given-names>
</name>
<name>
<surname>Liu</surname> <given-names>X.</given-names>
</name>
<etal/>
</person-group>. (<year>2023</year>). <article-title>A novel end-to-end lake boundary prediction model</article-title>. <source>Land</source> <volume>12</volume>, <elocation-id>1602</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.3390/land12081602</pub-id>
</citation></ref>
<ref id="B39">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Song</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Ou</surname> <given-names>R.</given-names>
</name>
<name>
<surname>Liu</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Li</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Lu</surname> <given-names>X.</given-names>
</name>
<etal/>
</person-group>. (<year>2024</year>). <article-title>Scag: A stratified, clustered, and growing-based algorithm for soybean branch angle extraction and ideal plant architecture evaluation</article-title>. <source>Plant Phenomics</source> <volume>6</volume>, <elocation-id>190</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.34133/plantphenomics.0190</pub-id>, PMID: <pub-id pub-id-type="pmid">39045573</pub-id></citation></ref>
<ref id="B40">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname> <given-names>W.</given-names>
</name>
<name>
<surname>Chen</surname> <given-names>K.</given-names>
</name>
<name>
<surname>Wang</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Shi</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Guo</surname> <given-names>W.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Easy domain adaptation method for filling the species gap in deep learning-based fruit detection</article-title>. <source>Horticulture Res.</source> <volume>8</volume>, <fpage>119</fpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1038/s41438-021-00553-8</pub-id>, PMID: <pub-id pub-id-type="pmid">34059636</pub-id></citation></ref>
<ref id="B41">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Xie</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Zhou</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Xu</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Miao</surname> <given-names>M.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Cucumber seedling segmentation network based on a multiview geometric graph encoder from 3d point clouds</article-title>. <source>Plant Phenomics</source> <volume>6</volume>, <elocation-id>254</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.34133/plantphenomics.0254</pub-id>, PMID: <pub-id pub-id-type="pmid">39415968</pub-id></citation></ref>
<ref id="B42">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Zhu</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Zhong</surname> <given-names>Q.</given-names>
</name>
<name>
<surname>Yang</surname> <given-names>C.</given-names>
</name>
<name>
<surname>Wang</surname> <given-names>D.</given-names>
</name>
<name>
<surname>Li</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Chen</surname> <given-names>C.</given-names>
</name>
<etal/>
</person-group>. (<year>2020</year>). &#x201c;<article-title>A quantitative analysis method of soybean leaf based on key point detection</article-title>,&#x201d; in <source>2020 International Conference on Internet of Things and Intelligent Applications (ITIA)</source>. doi:&#xa0;<pub-id pub-id-type="doi">10.1109/ITIA50152.2020.9312274</pub-id>
</citation></ref>
</ref-list>
</back>
</article>