An open source command line toolkit for processing aerial drone imagery
 
 
 
 
 
 
Go to file
Dakota Benjamin 7392a64058 Merge pull request #236 from OpenDroneMap/ccd-changes
Ccd changes

Former-commit-id: 3fcc58da7a
2016-01-25 09:12:42 -05:00
hooks Modify ccd_defs_check.py to work with the pre-commit hook, delete perl version 2015-11-13 18:35:10 +01:00
img update odm logo 2015-03-17 21:41:15 -04:00
licenses add libext & libx11 2015-03-01 14:23:59 -05:00
odm_extract_utm Add Python files and update installation script 2015-08-20 19:16:25 +00:00
odm_georef Fix to gcp reading order 2015-11-29 21:52:32 -05:00
odm_meshing Remove all backup(~) files 2015-01-22 18:15:33 -07:00
odm_orthophoto Make compiled OpenCV default for other functions 2015-10-29 14:12:50 +00:00
odm_texturing Make compiled OpenCV default for other functions 2015-10-29 14:12:50 +00:00
patched_files/src/graclus Revert "Revert "Upgrade Bundler + add support for Ceres solver"" 2015-08-21 14:13:42 -04:00
src Delete ceres-solver submodule residuals 2015-09-10 11:07:38 +02:00
.dockerignore Added Dockerfile 2015-08-09 13:28:53 +02:00
.gitignore Make compiled OpenCV default for other functions 2015-10-29 14:12:50 +00:00
.gitmodules Remove ceres-solver submodule 2015-09-05 01:09:30 +02:00
Dockerfile update ENTRYPOINT run.pl -> run.py 2015-11-23 22:58:54 +01:00
PoissonRecon.zip add downloads to repo 2014-05-20 13:41:39 -04:00
README.md Update README.md 2016-01-04 11:53:12 -05:00
ccd_defs.json Merge branch 'gh-pages' of https://github.com/ZoranPavlovic/OpenDroneMap into ccd-changes 2016-01-25 09:07:39 -05:00
ccd_defs_check.py Modify ccd_defs_check.py to work with the pre-commit hook, delete perl version 2015-11-13 18:35:10 +01:00
clapack.tgz.REMOVED.git-id rename downloads + remove cmvs from extract 2014-05-23 13:31:11 +00:00
cmvs.tar.gz.part-aa.REMOVED.git-id add cmvs.tar.gz parts 2014-09-26 13:20:40 +00:00
cmvs.tar.gz.part-ab.REMOVED.git-id add cmvs.tar.gz parts 2014-09-26 13:20:40 +00:00
cmvs.tar.gz.part-ac.REMOVED.git-id add cmvs.tar.gz parts 2014-09-26 13:20:40 +00:00
cmvs.tar.gz.part-ad.REMOVED.git-id add cmvs.tar.gz parts 2014-09-26 13:20:40 +00:00
cmvs.tar.gz.part-ae.REMOVED.git-id add cmvs.tar.gz parts 2014-09-26 13:20:40 +00:00
code_of_conduct.md Update Code of Conduct to Contributor Covenant 1.1.0 2015-06-19 10:33:12 -06:00
convert_vlsift_to_lowesift.pl big update 2011-11-01 20:32:58 +01:00
graclus.tar.gz rename downloads + remove cmvs from extract 2014-05-23 13:31:11 +00:00
install.sh Added "script finished" before exit cmd 2015-11-19 19:21:14 +01:00
knnMatch_exif.py Add Python files and update installation script 2015-08-20 19:16:25 +00:00
run.py Merge pull request #216 from lupus78/gh-pages 2015-12-11 09:43:35 -05:00
vlfeat.tar.gz.REMOVED.git-id rename downloads + remove cmvs from extract 2014-05-23 13:31:11 +00:00

README.md

What is it?

OpenDroneMap is an open source toolkit for processing aerial drone imagery. Typical drones use simple point-and-shoot cameras, so the images from drones, while from a different perspective, are similar to any pictures taken from point-and-shoot cameras, i.e. non-metric imagery. OpenDroneMap turns those simple images into three dimensional geographic data that can be used in combination with other geographic datasets.

In a word, OpenDroneMap is a toolchain for processing raw civilian UAS imagery to other useful products. What kind of products?

  1. Point Clouds
  2. Digital Surface Models
  3. Textured Digital Surface Models
  4. Orthorectified Imagery
  5. Classified Point Clouds
  6. Digital Elevation Models
  7. etc.

So far, it does Point Clouds, Digital Surface Models, Textured Digital Surface Models, and Orthorectified Imagery.

Users' mailing list: http://lists.osgeo.org/cgi-bin/mailman/listinfo/opendronemap-users

Developer's mailing list: http://lists.osgeo.org/cgi-bin/mailman/listinfo/opendronemap-dev

Overview video: https://www.youtube.com/watch?v=0UctfoeNB_Y

Developers

Help improve our software!

Join the chat at https://gitter.im/OpenDroneMap/OpenDroneMap

  1. Try to keep commits clean and simple
  2. Submit a pull request with detailed changes and test results

Steps to get OpenDroneMap running:

(Requires Ubuntu 14.04 or later, see https://github.com/OpenDroneMap/odm_vagrant for running on Windows in a VM)

Support for Ubuntu 12.04 is currently BROKEN with the addition of OpenSfM and Ceres-Solver. We are working hard to get it working again in the future.

Run install.sh to build.

./install.sh

From a directory full of your images, run

./run.py

An overview of installing and running OpenDroneMap on Ubuntu can be found here: https://www.youtube.com/watch?v=e2qp3o8caPs

Here are some other videos:

Now that texturing is in the code base, you can access the full textured meshes using MeshLab. Open MeshLab, choose File:Import Mesh and choose your textured mesh from a location similar to the following: reconstruction-with-image-size-1200-results\odm_texturing\odm_textured_model.obj

For Ubuntu 15.10 users, this will help you get running:

sudo apt-get install python-xmltodict
sudo ln -s /usr/lib/x86_64-linux-gnu/libproj.so.9 /usr/lib/libproj.so

Alternatively, you can also run OpenDroneMap in a Docker container:

export IMAGES=/absolute/path/to/your/images
docker build -t opendronemap:latest .
docker run -v $IMAGES:/images opendronemap:latest

To pass in custom parameters to the run.py script, simply pass it as arguments to the docker run command.


Example data can be found at https://github.com/OpenDroneMap/odm_data


Long term, the aim is for the toolchain to also be able to optionally push to a variety of online data repositories, pushing hi-resolution aerials to OpenAerialMap, point clouds to OpenTopography, and pushing digital elevation models to an emerging global repository (yet to be named...). That leaves only digital surface model meshes and UV textured meshes with no global repository home.


Documentation:

For documentation, please take a look at our wiki.

Troubleshooting:

Make sure you have enough RAM and CPU. Only lowercase file extension supported now.

If you run ODM with your own camera, it is possible you will see something like this:

  - configuration:
    --cmvs-maxImages: 500
    --end-with: pmvs
    --match-size: 200
    --matcher-ratio: 0.6
    --matcher-threshold: 2
    --pmvs-csize: 2
    --pmvs-level: 1
    --pmvs-minImageNum: 3
    --pmvs-threshold: 0.7
    --pmvs-wsize: 7
    --resize-to: 1200
    --start-with: resize


  - source files - Fri Sep 19 13:47:42 UTC 2014


    no CCD width or focal length found for DSC05391.JPG - camera: "SONY DSC-HX5V"
    no CCD width or focal length found for DSC05392.JPG - camera: "SONY DSC-HX5V"
    no CCD width or focal length found for DSC05393.JPG - camera: "SONY DSC-HX5V"
    no CCD width or focal length found for DSC05394.JPG - camera: "SONY DSC-HX5V"
    no CCD width or focal length found for DSC05395.JPG - camera: "SONY DSC-HX5V"
    no CCD width or focal length found for DSC05396.JPG - camera: "SONY DSC-HX5V"
    no CCD width or focal length found for DSC05397.JPG - camera: "SONY DSC-HX5V"
    no CCD width or focal length found for DSC05398.JPG - camera: "SONY DSC-HX5V"
    no CCD width or focal length found for DSC05399.JPG - camera: "SONY DSC-HX5V"

    found no usable images - quitting
Died at ../../OpenDroneMap/./run.pl line 364.


This means that your camera is not in the database, https://github.com/OpenDroneMap/OpenDroneMap/blob/gh-pages/ccd_defs.json

This problem is easily remedied. We need to know CCD size in the camera. We'll get these for our Sony Cyber-shot DSC-HX5 from dpreview: http://www.dpreview.com/products/sony/compacts/sony_dschx5/specifications

So, we'll add the following line to our ccd_defs.json:

 "SONY DSC-HX5V": 6.104,

To check that ccd_defs.json compiles, run ccd_defs_check.py If it prints the message 'CCD_DEFS compiles OK', then you can commit your changes.

And so others can use it, we'll do a pull request to add it to our array for everyone else.


Maintainers can run the ccd_defs.json compilation test automatically by creating a symbolic link in .git/hooks to hooks/pre-commit

 cd .git/hooks
 ln -s ../../hooks/pre-commit

If ccd_defs.json does not compile, then the pre-commit hook will abort the commit.