Skip to content
LexDataLexData
PlatformIndustriesCustomers
DocsThe Field GuideBlogWhy models drift
AboutCareersSecurityContact
Log inStart now
← All posts

Industries · 7 min read

Plant height measurement with a camera and a stake of known height

Plant and stake as two classes, pixels to centimetres through the stake, a growth curve per plot from a question, and wind and a nudged mount absorbed by it.

Summary

This post describes measuring plant height on a trial plot from a fixed camera with two classes, the plant and a painted stake of known height beside it, and converting the plant's box to centimetres through the stake on every frame. It concludes that the stake absorbs most of what goes wrong, wind and a shifted mount included, and that a growth curve per plot is a question rather than a model. It is for breeders, trial managers and agronomy teams.

Finn Ellingwood · Engineer · Sep 30, 2026

Orchard edge from a customer tractor camera, tree rows and the drivable path boxed

Every Monday morning a technician walks the trial field with a ruler and a card. Twenty-four plots, six plants measured in each, the height written in pencil against the plot number, and the card typed into a spreadsheet in the afternoon. Between Mondays nothing is measured. The plants in row 7 put on most of their week's growth on Wednesday after the rain, and nobody knows that, because Wednesday is not on the card.

A camera on a post at the end of the rows sees row 7 every day. It cannot read a ruler, but it can read a stake.

Object detection with two classes, plant and stake

The model is trained to find two things. The plant, boxed from the soil line to the highest leaf. And the stake beside it, a length of timber driven into the ground at the plot's edge, painted with bands, whose height above the soil the technician measured once with the same ruler. Object detection on those two classes is the entire model, and the stake is the part that makes the plant's box mean anything.

You type "plant" and "stake" once, Lexi puts a box on each in every frame, and a person checks the boxes before anything trains. The person's attention goes to the bottom edge of the plant box, since the soil line is where a labeler's boxes drift most. The top edge of the stake matters as much, and it has to sit on the painted top band and not on the shadow above it.

The agriculture work behind our numbers, 80k+ image annotations in production, was built on frames like these: crops on the grower's own cameras, at the light and the angles the field actually has, checked by people who have walked it.

Pixels become centimetres through the stake's known height

A plant box on its own is a height in pixels, and pixels mean nothing without a scale. The stake supplies it on every frame. The stake's box is some number of pixels tall, the stake is a known number of centimetres tall, and the ratio is the scale for that frame. The plant's box height, through the same ratio, is the plant's height in centimetres.

The stake has to be near the plant and in the same plane, since a camera at the end of the row sees things nearer to it as larger. A stake at the front of row 7 gives the scale for the front of row 7, and a plant at the back of the plot is a little further from the lens and reads a little short. My own view is that a trial needs one stake per plot, not one per field, and that the cost of twenty-four lengths of painted timber is the best money in the whole project.

The technician still paints the plot number on each stake by hand at the start of the season. The camera reads the stake for scale. The number is for the technician.

The labeling rule is the top leaf and the soil line

The height of a plant in row 7 is only as consistent as its box. The rule is written down and kept. The top edge of the box sits on the highest point of the plant's foliage in that frame, not on a flower stem or a stray leaf tip. The bottom edge sits on the soil line where the stem enters the ground, not on the mulch. Every label follows that, and the person checking looks at nothing else.

Where the rule is vague, the model is vague. A set of labels where some boxes stop at the canopy and others reach to the tallest leaf tip trains a model whose heights jump depending on which it decided to do on a given frame. The growth curve from that model has steps in it that the plants never made.

A growth curve per plot is a question, not a model

With a height per plant per frame, the trial has something it never had: a curve. Asked in LexInsight, "what did the height of row 7 do this month", the answer is a curve with the frames behind it, and the Wednesday after the rain is visible as a step. The same question for row 12, which had a different treatment, is a different curve, and the difference between the two is what the trial was run to find out.

The question reads. It changes nothing in the model.

The Monday ruler stays. The technician's card is the check the camera is measured against, and when the camera's Monday height and the ruler's part for a plot in a consistent direction, that plot's stake is the first thing to look at.

The crop health and disease detection use case asks which blocks are under stress and whether it is spreading. A plot whose curve flattens while its neighbours climb is under stress before any lesion shows, and the height curve is the earliest version of that answer.

Wind and a shifted mount are the errors the stake absorbs

Two things go wrong with the camera over row 7, and the stake covers most of both.

Wind moves the plant. On a gusty afternoon the top leaf sways and the box height jumps between frames by more than a day's growth. The stake does not sway, so the scale holds. The fix is to read the height across the calm hours rather than trusting a single frame, since a plant's height cannot change between one sample and the next and a value that does is wind.

The mount shifts. A strimmer clips the post, or the post settles after the rain, and the camera now sits lower and closer than on the day the trial began. Every plant in the field reads taller on the same day. The drift catalog files this as a camera moved: someone nudged a lens and the model has been looking slightly past the thing ever since. On a height camera the stake absorbs the plain shift, because the stake's box grows by the same fraction as the plant's and the ratio is unchanged.

What it does not absorb is a tilt, which stretches the far plots more than the near ones, and a tilt shows up as the far plots' heights jumping on a day the near plots' did not. The fix is to re-verify the stakes across the field and relabel a short window of frames from the new framing.

Weeds and shadows are the frames that come back

LexData takes the height model through its whole life. You type what to look for, Lexi puts a box on every plant and every stake in every frame, and a person checks each label before anything trains on it. The model then watches the camera at the end of the rows, in the cloud, on your servers, or on a runner beside the recorder. Frames it is unsure of come back to a person, the corrections retrain it, and the new version replaces the old one with no downtime.

The frames that come back are a weed grown taller than the plant beside it, the shadow of the stake across the plant at 8 am, a plant lodged flat after a storm, and the technician's back on Monday mornings. Each is a box corrected by a person, and when the corrections cross the project's threshold a new version trains on the field's own footage. The ruler goes out on Monday regardless, and the card is still in pencil.

See it on your own footage.

Start with your footage

More in Industries

Industries · 6 min read

Perimeter security with fixed cameras, object detection and a drone sent to look

A frame every two seconds is enough to catch a person at the fence, a CPU is enough to run it, and the drone is the second look rather than the detector.

Andreas Ohrvall · Sep 30, 2026

Industries · 7 min read

Food service QA with a camera over the tray packing line

Every component on the tray gets a box, the missing one is flagged before the sealer, and the alert count is read against the line's own history.

Ayman Quadir · Sep 30, 2026

Industries · 7 min read

Railway safety with trackside cameras, zones and a signaller who can live with the alerts

People and vehicles boxed, the track bed and crossing drawn as zones, the frame sent to the control room, and a false alarm rate a signaller will keep reading.

Rajiya Sultana · Sep 30, 2026

LexData
LexData

Product

  • Platform
  • Industries
  • Use cases

Resources

  • Docs
  • The Field Guide
  • Blog
  • Why models drift

Industries

  • Energy & utilities
  • Oil & gas
  • Agriculture
  • Manufacturing
  • Insurance
  • Retail
  • Robotics

Company

  • About
  • Customers
  • Careers
  • Contact

Trust

  • Security
  • Privacy
  • Terms

Stay updated

What we learn running vision models in production.

See everything.
Miss nothing.

Stay updated

What we learn running vision models in production.

Terms of use & Privacy policy

© 2026 LexData Labs · All rights reserved