Photogrammetry services

Photogrammetry, run as a service.

The technique is old and well understood. What is annoying about it is the machinery: a desktop licence, a GPU, and a workstation you cannot use for the rest of the day. Send us the overlapping photographs instead and take back the solved poses, the point cloud, the mesh, the orthomosaic and the surface model in standard formats.

Live in production No desktop licence, no GPU COLMAP poses returned Measured against a published reference
What it actually is

Measuring real things from photographs.

If the same point on the ground appears in several photographs taken from different positions, where that point sits in three dimensions can be solved geometrically. Do it for millions of points and a folder of pictures becomes geometry. Everything below is derived from pixels your camera recorded, and nothing else.

Fly the site and keep the overlap

You fly it, or your pilot does. The pipeline needs overlapping frames: each photograph has to share most of its view with the next one. JPEG or TIFF straight off the drone. DJI payload pairs, the _T and _W frames, are matched automatically.

Drag the folder into a browser

Nothing to install, no GPU of your own, no desktop licence. The upload is resumable, so a dropped connection does not cost you the flight. The server checks each file rather than guessing in the page.

Accept the fixed quote

The price appears before a single photograph is processed. Ignore it and nothing happens and nothing is charged.

The pipeline solves the cameras, then the geometry

It works out where every camera stood and where it was pointing, from the pictures alone, then matches detail across frames into millions of 3D points and finally a continuous textured surface. Every stage reports live with its own timing.

Open the results and take the files

The scene opens in the same browser. Measure in the viewer, or download all eight outputs and work in the tools you already run. A share link puts the job in front of a client with no login, for 7, 30 or 90 days.

What comes out

Eight files, in standard formats.

One flight produces one job, and one job produces every file below. The camera poses are in there deliberately: if you want to take the solve and continue in your own pipeline, you can, without re-solving anything.

OutputFormatWhat it is forMeasurable
Dense point cloudPLY / LAZMillions of 3D points. Distances, areas and volumes are taken on this.yes
Textured meshOBJ / GLB / PLYA continuous surface with the photographs on it, for measurement, CAD and viewers.yes
OrthomosaicGeoTIFFThe whole site flattened into one straight-down image, ready to drop into a GIS.yes
Digital surface modelGeoTIFFHeight at every pixel. Contours, slopes, cut and fill.yes
Gaussian splatPLY / KSPLATThe scene you fly through in a browser. Photoreal, and never measurable.no
Camera posesCOLMAPWhere every photograph was taken from. Reprocess in your own tools whenever you want.
Run logJSONEvery stage the pipeline ran, its timing and its settings.
ReportPDFThe run, the numbers and the accuracy statement in one document you can hand over.

Measurable means you can take readings on that output. Scale is relative unless ground control is used. Georeferenced outputs carry a real coordinate system, taken from the flight's own coordinates and written into the file.

Measured, not promised

We publish the number, and what it is not.

We have no logo wall to show you, so here is a measurement instead. Thirty-two camera views were held out of training, the finished model was asked to render those exact viewpoints, and each render was compared against the photograph it had never seen.

25.389 dBmean PSNR across 32 held-out views, our production pipeline
24.25 dBpublished 3DGS reference, same scene
21.594 dBworst single held-out view
27.341 dBbest single held-out view

Scene: Truck, from the public Tanks and Temples benchmark, run through our production splat pipeline at 30,000 iterations. Reference: Kerbl et al. 2023, same scene. PSNR is image fidelity, how close a render sits to the photograph. It is not a survey accuracy, and nothing on a splat is measurable. Truck is a ground-level public benchmark, not one of our aerial jobs: it shows the pipeline is sound against a published reference on identical input, and it does not predict what any one site will score.

1,657 / 1,657camera positions solved on one of our aerial flights
840,206gaussians in that scene
4,301,711gaussians in the largest scene built so far
6,932,543dense points on a separate 297-photograph flight
What it costs

You see the price before anything runs.

Four mechanics, and they do not change from job to job.

01

A fixed quote first

The quote appears before a single photograph is processed. You accept it or you do not. Nothing starts on its own.

02

Charged on delivery

The job is billed when the files are delivered and verified. Not on upload, not on start, not on the attempt.

03

A failed run costs nothing

If the pipeline does not deliver, there is nothing to pay. The risk of a bad run sits with us.

04

No subscription

No monthly plan, no seat licence, no lock-in. You pay per job, and only for jobs that deliver.

The public price list is still being finalised, so per-job pricing is quoted by email in the meantime. Tell us the site, the drone and roughly how many photographs, and a fixed quote comes back. We would rather say that plainly than publish a number we intend to change.

The honest part

What this does not claim.

  • Scale is relative unless ground control is used. Without control points on the ground the reconstruction is proportionally correct, but it is not tied to real-world units and the sizes are unproven. If you need a number you can defend to a third party, tell us before you fly and we will tell you what that takes.
  • A Gaussian splat is a picture, not a surface. Nothing on a splat is measurable. It is there to fly through and to show people. Every measurement comes off the mesh, the point cloud or the surface model, the outputs with real geometry behind them.
  • There is no AI enhancement anywhere in the pipeline. Ask which pixels the camera saw and which a model imagined, and the answer is none of them. Every output is reconstructed from your photographs and nothing else. Where there were no photographs, the reconstruction shows nothing rather than inventing something.
  • Photogrammetry cannot reconstruct what the camera did not see. Undersides, overhangs, the inside of a void and the far face of anything flown from one direction will not be there. This is a property of the technique, not a limitation of our implementation, and no amount of processing recovers it. It is a flight-planning problem, so it is worth raising before you fly.
Questions

Asked before you ask.

What is photogrammetry?

Photogrammetry is measuring real things from photographs. If the same point on the ground appears in several pictures taken from different positions, its position in three dimensions can be solved geometrically. Do that for millions of points and a folder of overlapping photographs becomes a dense point cloud, then a continuous textured surface, then a straight-down orthomosaic and a height model. Nothing is imagined: every output is derived from the pixels your camera recorded.

How much overlap do the photographs need?

Enough that every point on the ground appears in several frames from meaningfully different positions. Frames that barely touch at the edges will not solve, and a single orbit at one altitude gives weak geometry on vertical faces. If you are unsure, send the flight plan or a sample of the frames before you commit to the full run and we will tell you whether it will solve.

What file formats do you accept and return?

In: JPEG or TIFF straight off the drone, from a single flight, uploaded in the browser and resumable if the connection drops. DJI payload pairs, the _T and _W frames, are matched automatically. Out: point cloud as PLY or LAZ, mesh as OBJ, GLB or PLY, orthomosaic and digital surface model as GeoTIFF, Gaussian splat as PLY or KSPLAT, camera poses in COLMAP format, a JSON run log and a PDF report. All standard, all yours to keep, none of it locked inside a viewer you pay for again.

Can I reprocess the results in my own software?

Yes, and the camera poses are there specifically so you can. They are delivered in COLMAP format, so the solved positions can go straight back into your own pipeline without re-solving them. The point cloud, mesh and GeoTIFFs open in the tools you already run.

How good is the reconstruction, measured rather than claimed?

On a published benchmark scene we hold out camera views from training, ask the finished model to render those exact viewpoints, and compare each render against the photograph it never saw. Across 32 held-out views the mean PSNR was 25.389 dB, with the worst view at 21.594 dB and the best at 27.341 dB. The published reference for the same scene is 24.25 dB. That is an image-fidelity figure, not a survey accuracy, and we will not present it as one.

Is any of it AI generated or AI enhanced?

No. There is no AI enhancement anywhere in the pipeline. Ask which pixels the camera saw and which a model imagined and the answer is none of them. Where the reconstruction had no photographs to work from it shows nothing at all rather than inventing something plausible.

How large a dataset can you process?

Current capacity is about 1,200 photographs for the camera-pose and geometry lane and about 300 per Gaussian splat. On one aerial run the pipeline solved 1,657 of 1,657 camera positions, and the largest scene built so far holds 4,301,711 gaussians. Beyond that a flight is better split into more than one job.

Next

Send us a dataset and we will send back a quote.

Tell us the site, the camera and roughly how many photographs. A fixed quote comes back before anything runs.

Email us

info@eyonasoftware.co.za · Eyona Software Development (Pty) Ltd, Cape Town · Helios runs at helios.eyonasoftware.co.za