
OpenDroneMap – Simple Images into 3D - punnerud
https://github.com/OpenDroneMap/ODM/blob/master/README.md
======
fsloth
It would be nice to know how this compares with other open source and
commercial photogrammetric offerings.

Free:

\- AliceVision
[https://alicevision.github.io/](https://alicevision.github.io/)

\- Colmap [https://colmap.github.io/](https://colmap.github.io/)

\- etc.

Commercial:

\- Agisoft Metashape (formerly Photoscan)
[https://www.agisoft.com/](https://www.agisoft.com/)

\- Zephyr 3D [https://www.3dflow.net/3df-zephyr-pro-3d-models-from-
photos/](https://www.3dflow.net/3df-zephyr-pro-3d-models-from-photos/)

\- Drone deploy [https://www.dronedeploy.com/](https://www.dronedeploy.com/)
\- etc etc etc

See also:

[https://en.wikipedia.org/wiki/Photogrammetry](https://en.wikipedia.org/wiki/Photogrammetry)

[https://en.wikipedia.org/wiki/Structure_from_motion](https://en.wikipedia.org/wiki/Structure_from_motion)

~~~
mohaine
We are using ODM for generating orthomosaic photos and it produced better
results than the commercial offerings we have seen (In some cases MUCH
better). Note this did require us to tweak the settings some but overall it
was pretty easy process.

Things of Note: 1) ODM didn't quite scale as well to very large number of
photos. (I think this may have been fixed now). 2) Our use case was pretty
brutal. ~1 cm resolution photos of a mostly uniform row crop fields. Some of
the other tools were really bad at not rotating the rows 90 deg in parts of
the field. 3) I was in on the POC and selection process but not the production
runs so I'm not sure how things have changed over the last year. 4) Some of
the comparisons where with different photos (Looking at a custom full path) 5)
We didn't look at 3d much at all, but it was pretty cool to be able to see 3d
tractor tire marks across and freshly planted field. The 3d quality would
really fall off at the edges when there was less overlap. I think it was only
good in relative hight as well but our tests were very flat.

~~~
plausibilities
One of its dependencies, OpenSfM, does a lot of the heavy lifting with regard
to generating things like HOG descriptors (since SIFT = $IFT)

That project used to have a bug with their multithreading implementation where
if your photo sets got too big children threads would terminate but fail to
get reaped and your heap size would just continue to grow until things
kaboomed at the SfM phase.

Not entirely their fault though as it stemmed from a deeper issue with Python
stdlib's pool implementation.

Back then, with certain photosets I would literally run OOM on my homelab
which was equipped with 128 GB DDR4

Should be fixed by now though.

You wouldn't happen to work for a small MPLS based startup would you?

------
linsomniac
This morning I was watching a "video editing" youtube video where he made a 3D
terrain object to load into Davinci Resolve (commercial but free for personal
use), and track to the palm of his hand so it looked like the terrain was
floating above his palm.

He used [http://terrain.party/](http://terrain.party/) to get height
information as an image (lighter colors are high, darker are low), then a
script scrape together images from Google Maps, which he transformed using the
height information.

At that point he was using a GUI to view the resulting 3D object and
manipulate the camera and lighting. Blew my mind.

I followed it part of the way, but got stuck with getting the google images.
He was doing a valley close to an object recognizable from space close to the
coast, I was trying to find the cabin we stayed at last weekend in rural
Colorado.

Pretty mindblowing what you can do with free video editing software today.

[https://www.youtube.com/watch?v=qP6wVajeI_M](https://www.youtube.com/watch?v=qP6wVajeI_M)

~~~
SahAssar
That's a really roundabout way to do that though... He's basically taking free
height data, converting it to a raster image, and then approximating it in the
editor (which tries to convert the raster heightmap back to a proper map). The
actual satellite imagery might be harder to (legally) get (and he basically
suggests removing the copyright notices in the video).

It's cool that it works, but it's also the "wrong" way to go about it
considering all the tools around to work with open, free GIS data.

~~~
linsomniac
Indeed. I was stuck at getting the correct images for the area I had the
height map for. My plan was to use the NAIP images, which I have sitting here
on one of my computers, processed, and is free.

But, I ran into some weirdness with Davinci Resolve where it was getting
"Media Unavailable" for some frames of the video. Once I went down that rabbit
hole, I was just tired of that video and wanted it done. So I didn't add a
spinning 3D map of the area, just added some titles and music and called it a
day.

Agree that it's not cool to remove copyright.

------
wongarsu
Interesting point: while the software is free, the web interface (webodm)
seems to have a paid service integrated to process the images in the cloud
(webodm lighning [1]). Since resource demands seem quite high (lots of RAM for
larger image sets) this looks attractive and seems like a good way to finance
an open source project.

1: [https://webodm.net/](https://webodm.net/)

------
yeldarb
I assume this uses GPS data to help with stitching the photos together.

Do drones capture orientation data beyond GPS position (for example, pitch,
yaw, gimbal direction)?

I have tried adding motion graphics to some of my drone videos in After
Effects but as far as I can tell it discards all of the metadata and infers
the camera position based solely on the video frames. This is really slow and
imprecise; I’ve been wondering if there’s a plug-in that will use the recorded
telemetry from the drone to set the camera orientation.

~~~
ViktorV
I don't think it uses GPS for that. You can match two partially overlapping
images. From the movement of the feature points in the overlapping areas you
can calculate your camera orientation, and thus the 3d point cloud of feature
points ( or something close to this ). I think it is called structure from
movement, the readme links a paper, maybe it's worth reading for you.

~~~
yeldarb
Interesting, is there a technical reason for not using that extra data to help
with the process?

For example, another commenter mentioned

> Some materials don't really contain any surface details that the algorithms
> could use to attach feature points to, so they will be blank. Large white
> walls and large windows are especially difficult.

Seems like you might be able to position some of these with orientation data
from the camera.

~~~
Fission
The GPS data is probably being used as a prior. The GPS metadata is accurate
but imprecise, while SFM more precise. GPS is likely used for pose
initialization, while SFM is then used to refine the pose.

------
jcims
Are there editors that allow you to manipulate point clouds or ‘digital
surface models’? (Not sure what those are) I’d like to use something like this
to digitize my property and model changes to it (building, landscaping, etc).

~~~
pierotofy
[https://www.danielgm.net/cc/](https://www.danielgm.net/cc/)

~~~
jcims
Nice! Thanks!

------
jcvhaarst
What kind of image quality would one need to get something useful out of this.
Useful : Create a 3d model of a house with surrounding trees, so I can see the
effect of those trees on a planned solar installation. Or create a 3d model of
a garden to see where the sun and shadow are over the course of the year.

~~~
fsloth
The better the photograph, the better the output quality. Photogrammetric
output will always have noise. Some materials don't really contain any surface
details that the algorithms could use to attach feature points to, so they
will be blank. Large white walls and large windows are especially difficult.

Don't crop the photos. Prefer slight underexposition. For each detail you want
to capture, have it visible at least in three photos. Capture photos from
different position (ie. rather move yourself than just turn the camera) with
at least 30% - 50% overlap between photos.

You can find lots of tutorial in the internet. Search term that hits gold is
'photogrammetry tutorial'. For example:

[https://medium.com/realities-io/getting-started-with-
photogr...](https://medium.com/realities-io/getting-started-with-
photogrammetry-d0a6ee40cb72)

If you just want to try out the technique, I suggest you download the free
test version of Zephyr 3D. You can just give it a bunch of photos and it does
a fairly sane ops with the default options.

[https://www.3dflow.net/3df-zephyr-pro-3d-models-from-
photos/](https://www.3dflow.net/3df-zephyr-pro-3d-models-from-photos/)

If you like it, you can start experimenting with free and commercial tools
including the one in the topic of this thread (see my other post in this
thread for some other photogrammetric tools).

If you have a large set of photos you will start to need a fairly beefy
computer with tens of gigs of RAM the least. But, you can get pretty nice
results for e.g. just a single house with just a regular modern desktop PC.

------
truesy
Used this pretty extensively, and followed their dev branches. FWIW if you
want quality results the best option is Agisoft, on a GPU machine w/ some
custom python to automate.

~~~
mohaine
FWIW, ODM was slightly better quality than Photoscan in our tests. We only
tested orthomosaics but ODM had less error to our ground control points (note
we didn't feed the givens into these tests) and less aberrations.

------
dwiel
Does anyone have any experience with the ZED camera? They claim they can
generate 3d maps down to 1cm resolution without LIDAR using these kinds of
methods.

~~~
Fission
The ZED camera works by using two high-resolution RGB camera, finding matching
points between the two, and using that to calculate depth. Because they are
using high-resolution RGB cameras, they can generate very high resolution
depth maps. However, this is also their main drawback; with just RGB images,
depth map calculation will fail on texture-poor surfaces, such as plain white
walls, because it's very difficult to match points.

They are fundamentally performing photogrammetry with two cameras at a fixed
distance.

~~~
punnerud
You can solve this edge case using a light source, with a method called
“structured light”: [https://en.m.wikipedia.org/wiki/Structured-
light_3D_scanner](https://en.m.wikipedia.org/wiki/Structured-light_3D_scanner)

------
wensheng
this might be off-topic, but anyone know a good software for indoor use? i.e
turning indoor images into indoor 3D models.

