Agriculture Mapping Workflow

Lukashelmke

Hi everyone,
I’m working with agricultural drone mapping at very high resolution, usually around 1–4 mm/px GSD.

My main goal is not a full 3D reconstruction. I mostly need the images to be aligned and georeferenced so I can determine coordinates of objects such as individual plants. I don’t need a point cloud, DSM, mesh, or even necessarily a full orthomosaic — individual georeferenced TIFFs would be enough.

I fly with terrain following, so the GSD stays quite constant. I’m looking for a fast workflow in WebODM/ODM that focuses only on image alignment and georeferencing. Ideally, this could allow flights with much lower overlap, possibly below 35%, since I don’t need full 3D reconstruction.

Has anyone worked on a similar workflow or knows which settings would be best for this?

8 Replies

DowAJS

Hi Lukas,

I'm a researcher in this field myself, species identification at around 1.5mm GSD. The lower overlap is definitely an active research question, but due to how structure from motion works, it's not as simple as not needing a full 3D reconstruction.

From my literature review and personal work over the past three years, 60% frontal overlap is perfectly fine for this use case. Unlike a lot of other use cases, the tracks tend to be heavily sequential from image to image, rather than a good amount coming from side overlap as well. That said, you do still need side overlap to connect everything together.

Even with a 2D reconstruction, the overlap is needed as the georeferencing relies heavily on finding the same point across multiple images. Even though traditional 2D registration is used for feature extraction and track creation, the registration in terms of georeferencing is mostly done via point cloud registration.

I have a paper related to this that I'm closing out and should be out for review over the Summer, and plan to integrate into WebODM (if it's of interest the project of course) once complete. But I'm happy to help with any questions you have, just know I'm on Annual Leave currently so replies will be slow 😂

DowAJS

That said, you can get roughly georeferenced TIFFs if:

  1. You have a good camera where you know the metadata stores the GNSS position as the centre of the lens or gives you the offset.
  1. You can correct for the lens distortion.
  1. Your camera is correctly gimballed at nadir.
  1. RTK/PPK positioning.

You can then roughly estimate the lat, lon, alt per pixel of a mostly flat plane with some code. The issue you run into then is that you will be counting the same species multiple times as you haven't orthomosaic'd your images.

Lukashelmke OP

One additional point: I’ve already tested a similar approach using the QGIS Vertical Photo Placer workflow.

With around 30% frontal and 30% side overlap, I was able to get surprisingly good results already. The remaining absolute deviation is roughly 50–70 cm.

I’m flying with a DJI Mavic 3M RTK, so I assume the camera positions are not the main problem. Since I also use terrain following and a DSM-based projection, my current assumption is that the largest remaining error comes from heading/yaw inaccuracies rather than from position or altitude.

My target accuracy is only around 10–20 cm, not survey-grade cm accuracy. So I’m wondering whether it would be realistic to improve the existing workflow with a lightweight refinement step that mainly estimates heading/yaw corrections from overlapping neighbouring images.

For example:

  • first project/place the images using RTK position, altitude, DSM and camera metadata,
  • then use 2D matching between neighbouring images,
  • estimate a heading/yaw correction, possibly also a small translation correction,
  • and finally write out individual georeferenced TIFFs.

Since I already get about 50–70 cm error with 30/30 overlap, I’m curious whether this kind of constrained 2D refinement could bring it closer to 10–20 cm without needing a full dense reconstruction, DSM, point cloud or orthomosaic.

DowAJS

Is there any reason the heading/yaw data in your metadata would be so wrong?

You're using an RTK drone but are you using an RTK receiver with corrections (like from an NTRIP) subscription with it? 50-70 cm just screams convergence mode on a DRTK to me.

DowAJS

Also, if you're able to share, what kind of agriculture are you looking at? I'm curious if, like in the case of vineyards you can see a fair bit of soil around the plants, compared to pasture where there's no/very little soil. The soil is a surprisingly powerful feature for matching.

Lukashelmke OP

I’m flying with RTK fixed, and I also evaluated the RTK status from the EXIF metadata. The actual image positions seem to be quite accurate. The main issue appears to be the image orientation/heading from the metadata, which is not accurate enough for this use case.

So I don’t think the 50–70 cm deviation is mainly caused by RTK float or convergence. The placement of the image centers is good, but the projected footprints are slightly misaligned/rotated. My impression is that the Mavic 3M’s orientation/heading metadata is simply not precise enough for this kind of direct DSM-based image placement.

I’m happy to share my current QGIS workflow as well. At the moment I’m using the Vertical Photo Placer plugin:

https://github.com/verticalphotoplacer/VerticalPhotoPlacer

In my workflow, this is only used to place/project the images onto a DSM. There is no image alignment or refinement step yet. That’s exactly the missing part I’m looking for: after the DSM-based placement, I would like to refine the image orientation/alignment using overlapping neighbouring images, ideally without doing a full dense reconstruction, point cloud, DSM or orthomosaic.

DowAJS

The Mavic 3M definitely has accurate enough heading, we use one and have never had issues.

We also have a similar workflow to that QGIS plugin in Python, but we use the output of a WebODM process to overlay segmentation masks of the related images (see the end of this paper for visuals 2512.08888v2.pdf https://share.google/4DZFYrHKVDCH18uiR) this was done with a P1 and M300 but we've achieved similar using an M3M.

If you simply want image registration, and with a 10 cm error, is there any reason you're not just applying SIFT + FLANN and using homography to apply the corrections?

That said, if there is error between the images, that error is going to compound between the images and you could start seeing heavy distortion as you move further away from the original image. If your homography requires a 5 degree rotation to align the images, then that's going to grow with every image.

This is part of the reason we use point clouds in Structure from Motion. OpenSfM starts with the point clouds of two images, and grows the reconstruction from there, correcting erroneous points as it adds the points from more images (something that is much less practical when working on images directly). We then texture the point cloud with the original images, limiting (but not completely eliminating) artifacts and distortion.

Avios Media

Once you have your final images you might find Avenza Maps an interesting tool which allows you to make items on a geotiff and then it will guide you to that location once you are in the field. Check out this video for how to do that: https://www.youtube.com/watch?v=sXq5jbeuQlY

Need more help?

This discussion happened in the WebODM community Discord. Join and ask your own question.

Join View Original Thread

This page mirrors a public discussion from the WebODM Discord. How to request a removal.