Code Monkey home page Code Monkey logo

odm's Introduction

ODM Logo

An open source command line toolkit for processing aerial drone imagery. ODM turns simple 2D images into:

  • Classified Point Clouds
  • 3D Textured Models
  • Georeferenced Orthorectified Imagery
  • Georeferenced Digital Elevation Models

images-diag

The application is available for Windows, Mac and Linux and it works from the command line, making it ideal for power users, scripts and for integration with other software.

If you would rather not type commands in a shell and are looking for a friendly user interface, check out WebODM.

Quickstart

The easiest way to run ODM on is via docker. To install docker, see docs.docker.com. Once you have docker installed and working, you can run ODM by placing some images (JPEGs or TIFFs) in a folder named “images” (for example C:\Users\youruser\datasets\project\images or /home/youruser/datasets/project/images) and simply run from a Command Prompt / Terminal:

# Windows
docker run -ti --rm -v c:/Users/youruser/datasets:/datasets opendronemap/odm --project-path /datasets project

# Mac/Linux
docker run -ti --rm -v /home/youruser/datasets:/datasets opendronemap/odm --project-path /datasets project

You can pass additional parameters by appending them to the command:

docker run -ti --rm -v /datasets:/datasets opendronemap/odm --project-path /datasets project [--additional --parameters --here]

For example, to generate a DSM (--dsm) and increase the orthophoto resolution (--orthophoto-resolution 2) :

docker run -ti --rm -v /datasets:/datasets opendronemap/odm --project-path /datasets project --dsm --orthophoto-resolution 2

Viewing Results

When the process finishes, the results will be organized as follows:

|-- images/
    |-- img-1234.jpg
    |-- ...
|-- opensfm/
    |-- see mapillary/opensfm repository for more info
|-- odm_meshing/
    |-- odm_mesh.ply                    # A 3D mesh
|-- odm_texturing/
    |-- odm_textured_model.obj          # Textured mesh
    |-- odm_textured_model_geo.obj      # Georeferenced textured mesh
|-- odm_georeferencing/
    |-- odm_georeferenced_model.laz     # LAZ format point cloud
|-- odm_orthophoto/
    |-- odm_orthophoto.tif              # Orthophoto GeoTiff

You can use the following free and open source software to open the files generated in ODM:

  • .tif (GeoTIFF): QGIS
  • .laz (Compressed LAS): CloudCompare
  • .obj (Wavefront OBJ), .ply (Stanford Triangle Format): MeshLab

Note! Opening the .tif files generated by ODM in programs such as Photoshop or GIMP might not work (they are GeoTIFFs, not plain TIFFs). Use QGIS instead.

API

ODM can be made accessible from a network via NodeODM.

Documentation

See http://docs.opendronemap.org for tutorials and more guides.

Forum

We have a vibrant community forum. You can search it for issues you might be having with ODM and you can post questions there. We encourage users of ODM to participate in the forum and to engage with fellow drone mapping users.

Windows Setup

ODM can be installed natively on Windows. Just download the latest setup from the releases page. After opening the ODM Console you can process datasets by typing:

run C:\Users\youruser\datasets\project  [--additional --parameters --here]

GPU Acceleration

ODM has support for doing SIFT feature extraction on a GPU, which is about 2x faster than the CPU on a typical consumer laptop. To use this feature, you need to use the opendronemap/odm:gpu docker image instead of opendronemap/odm and you need to pass the --gpus all flag:

docker run -ti --rm -v c:/Users/youruser/datasets:/datasets --gpus all opendronemap/odm:gpu --project-path /datasets project

When you run ODM, if the GPU is recognized, in the first few lines of output you should see:

[INFO]    Writing exif overrides
[INFO]    Maximum photo dimensions: 4000px
[INFO]    Found GPU device: Intel(R) OpenCL HD Graphics
[INFO]    Using GPU for extracting SIFT features

The SIFT GPU implementation is CUDA-based, so should work with most NVIDIA graphics cards of the GTX 9xx Generation or newer.

If you have an NVIDIA card, you can test that docker is recognizing the GPU by running:

docker run --rm --gpus all nvidia/cuda:10.0-base nvidia-smi

If you see an output that looks like this:

Fri Jul 24 18:51:55 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.82       Driver Version: 440.82       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |

You're in good shape!

See https://github.com/NVIDIA/nvidia-docker and https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker for information on docker/NVIDIA setup.

Native Install (Ubuntu 21.04)

You can run ODM natively on Ubuntu 21.04 (although we don't recommend it):

git clone https://github.com/OpenDroneMap/ODM
cd ODM
bash configure.sh install

You can then process datasets with ./run.sh /datasets/odm_data_aukerman

Native Install (MacOS)

You can run ODM natively on Intel/ARM MacOS.

First install:

  • Xcode 13 (not 14, there's currently a bug)
  • Homebrew

Then Run:

git clone https://github.com/OpenDroneMap/ODM
cd ODM
bash configure_macos.sh install

You can then process datasets with ./run.sh /datasets/odm_data_aukerman

This could be improved in the future. Helps us create a Homebrew formula.

Updating a native installation

When updating to a newer version of native ODM, it is recommended that you run:

bash configure.sh reinstall

to ensure all the dependent packages and modules get updated.

Build Docker Images From Source

If you want to rebuild your own docker image (if you have changed the source code, for example), from the ODM folder you can type:

docker build -t my_odm_image --no-cache .

When building your own Docker image, if image size is of importance to you, you should use the --squash flag, like so:

docker build --squash -t my_odm_image .

This will clean up intermediate steps in the Docker build process, resulting in a significantly smaller image (about half the size).

Experimental flags need to be enabled in Docker to use the --squash flag. To enable this, insert the following into the file /etc/docker/daemon.json:

{
   "experimental": true
}

After this, you must restart docker.

Video Support

Starting from version 3.0.4, ODM can automatically extract images from video files (.mp4, .mov, .lrv, .ts). Just place one or more video files into the images folder and run the program as usual. Subtitles files (.srt) with GPS information are also supported. Place .srt files in the images folder, making sure that the filenames match. For example, my_video.mp4 ==> my_video.srt (case-sensitive).

Developers

Help improve our software! We welcome contributions from everyone, whether to add new features, improve speed, fix existing bugs or add support for more cameras. Check our code of conduct, the contributing guidelines and how decisions are made.

Installation and first run

For Linux users, the easiest way to modify the software is to make sure docker is installed, clone the repository and then run from a shell:

$ DATA=/path/to/datasets ./start-dev-env.sh

Where /path/to/datasets is a directory where you can place test datasets (it can also point to an empty directory if you don't have test datasets).

Run configure to set up the required third party libraries:

(odmdev) [user:/code] master+* ± bash configure.sh reinstall

You can now make changes to the ODM source. When you are ready to test the changes you can simply invoke:

(odmdev) [user:/code] master+* ± ./run.sh --project-path /datasets mydataset

Stop dev container

 docker  stop odmdev

To come back to dev environement

change your_username to your username

docker start odmdev
docker exec -ti odmdev bash
su your_username

If you have questions, join the developer's chat at https://community.opendronemap.org/c/developers-chat/21

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

Troubleshooting

The dev environment makes use of opendronemap/nodeodm by default. You may want to run docker pull opendronemap/nodeodm before running ./start-dev-env.sh to avoid using an old cached version.

In order to make a clean build, remove ~/.odm-dev-home and ODM/.setupdevenv.

Credits

ODM makes use of several libraries and other awesome open source projects to perform its tasks. Among them we'd like to highlight:

Citation

OpenDroneMap Authors ODM - A command line toolkit to generate maps, point clouds, 3D models and DEMs from drone, balloon or kite images. OpenDroneMap/ODM GitHub Page 2020; https://github.com/OpenDroneMap/ODM

Trademark

See Trademark Guidelines

odm's People

Contributors

adrien-ludwig avatar dakotabenjamin avatar danbjoseph avatar dbaldwin avatar dbrgn avatar deltafactory avatar dependabot[bot] avatar edgarriba avatar fi156 avatar fredlllll avatar hedo88th avatar hetlelid avatar indiajohnson-cm avatar kikislater avatar lupus78 avatar merkato avatar mojodna avatar mordka avatar nchamo avatar originlake avatar paulinus avatar pepperlk avatar petrasovaa avatar pierotofy avatar saijin-naib avatar sbonaime avatar smathermather avatar usplm avatar xxfelixxx avatar yjmenezes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

odm's Issues

Can't locate JSON.pm

I'm seeing the following error when running "run.pl" against a project after installing.

Can't locate JSON.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at /home/vagrant/OpenDroneMap/run.pl line 16. BEGIN failed--compilation aborted at /home/vagrant/OpenDroneMap/run.pl line 16.

I'm seeing this both on the standard vagrant VM and on other 12.04 VMs.

locate JSON
gives me the following

/usr/share/perl/5.14.2/JSON/PP
/usr/share/perl/5.14.2/JSON/PP.pm
/usr/share/perl/5.14.2/JSON/PP/Boolean.pm

Georeferencing Error

All,
When running OpenDroneMap I get an abort error thrown during the georeferencing step. What does this error code mean? See the below for output. I am running a 64bit Ubuntu system.

  • running georeferencing -

quitting cause:
"/home/scoriolinux/Desktop/VTImages/Left/../../OpenDroneMap/bin/odm_georef" -bundleFile /home/scoriolinux/Desktop/VTImages/Left/reconstruction-with-image-size-1200/pmvs/bundle.rd.out -gcpFile /home/scoriolinux/Desktop/VTImages/Left/gcp_list.txt -imagesPath /home/scoriolinux/Desktop/VTImages/Left/ -imagesListPath /home/scoriolinux/Desktop/VTImages/Left/reconstruction-with-image-size-1200/pmvs/list.rd.txt -bundleResizedTo 1200 -inputFile /home/scoriolinux/Desktop/VTImages/Left/reconstruction-with-image-size-1200-results/odm_texturing/odm_textured_model.obj -outputFile /home/scoriolinux/Desktop/VTImages/Left/reconstruction-with-image-size-1200-results/odm_texturing/odm_textured_model_geo.obj -logFile /home/scoriolinux/Desktop/VTImages/Left/reconstruction-with-image-size-1200/odm_georeferencing/odm_georeferencing_log.txt

Error cmaking odm_texturing

When trying to install the orthophoto branch I get the following related to cmaking odm_texturing:

CMake Error at CMakeLists.txt:14 (find_package):
By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "OpenCV", but
CMake did not find one.

Could not find a package configuration file provided by "OpenCV" with any
of the following names:

OpenCVConfig.cmake
opencv-config.cmake

Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
"OpenCV_DIR" to a directory containing one of the above files. If "OpenCV"
provides a separate development package or SDK, be sure it has been
installed.

-- Configuring incomplete, errors occurred!
See also "/home/ubuntu/OpenDroneMap/src/odm_texturing/CMakeFiles/CMakeOutput.log".

I've been trying to get to the bottom of this but haven't had much luck. Any insight would be much appreciated.

Add ability to optimize image feature matching using known geography

Pairwise comparison for feature matching all images is a very expensive part of the processing chain. In the case where the EXIF data in the image contain information about GPS location and orientation, it would be beneficial to use an indexed 2 or 3D analysis to a priori calculate related images to bypass the pairwise comparisons of all images.

Error in OdmTexturing:

Im using the test files to do a test of this app, so far I like what I see but when I run it on my VM Ubuntu 64bit I get the same issue no matter which data folder I run it in. Here are the lines leading up the error

---- Total: 0 secs ----


  - running meshing - 


  - running texturing - 
Error in OdmTexturing:
Error in OdmTexturing:
Failed to read image:
'/home/jamison/Desktop/copr//IMG_0028.jpg'

For more detailed information, see log file.


quitting cause: 
    "/home/jamison/Desktop/copr/../odm/bin/odm_texturing" -bundleFile /home/jamison/Desktop/copr/reconstruction-with-image-size-1200/pmvs/bundle.rd.out -imagesPath /home/jamison/Desktop/copr/ -imagesListPath /home/jamison/Desktop/copr/reconstruction-with-image-size-1200/pmvs/list.rd.txt -inputModelPath /home/jamison/Desktop/copr/reconstruction-with-image-size-1200-results/odm_mesh-0000.ply -outputFolder /home/jamison/Desktop/copr/reconstruction-with-image-size-1200-results/odm_texturing/ -textureResolution 4096 -bundleResizedTo 1200 -textureWithSize 3600 -logFile /home/jamison/Desktop/copr/reconstruction-with-image-size-1200/odm_texturing/odm_texturing_log.txt
returned with code 256
jamison@jamison-VirtualBox:~/Desktop/copr$

my guess is that it has something to do the fact that its not finding the images

Failed to read image:
'/home/jamison/Desktop/copr//IMG_0028.jpg'

Need to figue out how to take out that extra '/' in the file address

Missing libvl.so?

Hi there,

Having an issue with getting ODM to run - I get the following error after the images resize:

1/109 - /home/ubuntu/opendronemap 2/../OpenDroneMap/bin/vlsift: error while loading shared libraries: libvl.so: cannot open shared object file: No such file or directory
parallel: Starting no more jobs. Waiting for 1 jobs to finish. This job failed:
echo -n "1/109 - " && convert -format pgm "/home/ubuntu/opendronemap 2/reconstruction-with-image-size-2400/G0026730_lens_geotag.jpg" "/home/ubuntu/opendronemap 2/reconstruction-with-image-size-2400/G0026730_lens_geotag.pgm" && "/home/ubuntu/opendronemap 2/../OpenDroneMap/bin/vlsift" "/home/ubuntu/opendronemap 2/reconstruction-with-image-size-2400/G0026730_lens_geotag.pgm" -o "/home/ubuntu/opendronemap 2/reconstruction-with-image-size-2400/G0026730_lens_geotag.key.sift" > /dev/null && perl "/home/ubuntu/opendronemap 2/../OpenDroneMap/bin/../convert_vlsift_to_lowesift.pl" "/home/ubuntu/opendronemap 2/reconstruction-with-image-size-2400/G0026730_lens_geotag" && gzip -f "/home/ubuntu/opendronemap 2/reconstruction-with-image-size-2400/G0026730_lens_geotag.key" && rm -f "/home/ubuntu/opendronemap 2/reconstruction-with-image-size-2400/G0026730_lens_geotag.pgm" && rm -f "/home/ubuntu/opendronemap 2/reconstruction-with-image-size-2400/G0026730_lens_geotag.key.sift"


quitting cause: 
        "/home/ubuntu/opendronemap 2/../OpenDroneMap/bin/parallel" --halt-on-error 1 -j+0 < "/home/ubuntu/opendronemap 2/reconstruction-with-image-size-2400/_vlsift.templist.txt"
returned with code 32512

I'm trying to run this in an Amazon EC2 instance so I'm not hogging my desktop machine - I managed to get it to work in a Ubuntu 12.04 VM locally, but have tried the same install on both 12.04 and 14.04 on Amazon with the same results.

Any advice?

Messing with PATH...

Trying to install and not impressed...

root@6e4ca79fb3e1:/# rm
rm: missing operand
Try `rm --help' for more information.
root@6e4ca79fb3e1:/# git clone https://github.com/OpenDroneMap/OpenDroneMap.git /OpenDroneMap
Cloning into '/OpenDroneMap'...
remote: Counting objects: 1047, done.
remote: Total 1047 (delta 0), reused 0 (delta 0), pack-reused 1047
Receiving objects: 100% (1047/1047), 480.63 MiB | 22.79 MiB/s, done.
Resolving deltas: 100% (403/403), done.
root@6e4ca79fb3e1:/# rm
rm: missing operand
Try `rm --help' for more information.
root@6e4ca79fb3e1:/# rm
rm: missing operand
Try `rm --help' for more information.
root@6e4ca79fb3e1:/# /OpenDroneMap/install.sh

     created by Daniel Schwarz/[email protected]
     released under Creative Commons/CC-BY
     Attribution

     if the script doesn't finish properly
     (i.e. it doesn't print "script finished" at the end)
     please email me the content of the logs folder


  - script started - Wed Mar 11 19:22:19 UTC 2015
sudo: rm: command not found
root@6e4ca79fb3e1:/# rm
bash: /bin/rm: No such file or directory
root@6e4ca79fb3e1:/#

Installation on EC2

When I try to install this on Amazons EC2 ubuntu server, the installation halts at

cmvs/pmvs
- cleaning cmvs
- building cmvs

then goes no further

Wiki Page

Should we start to document the wiki page to explain the workflow and approach to this project?

OpenDroneMapMosaic Production

Is OpenDroneMap capable of producing mosaics? I have processed several sets of images and have not seen anything like this in the output files. If it does not, perhaps add this to a feature request.
Thanks.

Create a mailing list

Seems that the Issue tracker might get full of posts that aren't necessarily bugs. Things like discussing tuning parameters, or troubleshooting failed installations (not code errors). In my example, I actually wanted to post about a failure to build the Kermit data set correctly (output image is distorted). This isn't necessarily a bug yet.

I'd recommend getting an OSGeo hosted mailing list. Simply requires a request to the OSGeo System Administration Committee. I could file the request if thats what's wanted.
http://wiki.osgeo.org/wiki/SAC:Mailing_Lists#Requesting_a_new_list

Google groups is another option, but is a pain for non-google users.

Add digital surface model output

Current outputs from ODM include point cloud, mesh, textured mesh, georeferenced textured mesh, and orthophoto. It'd be just dandy if the mesh could also be output as a digital surface model, as a simple raster.

odm_meshing problem

I've was testing ODM with some photos sets. Workflow passed CMVS/PMVS stage correctly, generating option-0000.ply, that's very good quality. But on odm_meshing it throws "Segmentation fault (Core Dumped)" error. When I've tried to start odm_meshing from terminal, that what I've get.

odm_meshing_log.txt
Vertex count was manually set to: 0
Reading point cloud at: /home/en76-008/dev/boruszyn/reconstruction-with-image-size-1200-results/option-0000.ply
Successfully loaded 149118 points with corresponding normals from file.
Octree depth used for reconstruction is: 8
Estimated initial vertex count: 65536

Reconstruction complete:
Vertex count: 52569
Triangle count: 104955

Vertex count not specified, decimation cancelled.
Saving mesh to file.
Error in OdmMeshing:
Error when saving mesh to file:

How to eventually find the problem?
With regards, Tomasz

Parallel does not build

I was following the instructions, and the build stopped at "building parallel".

$ cat logs/parallel_2_build.log 
make  all-recursive
make[1]: Entering directory `/home/miquel/opt/OpenDroneMap/src/parallel'
Making all in src
make[2]: Entering directory `/home/miquel/opt/OpenDroneMap/src/parallel/src'
pod2man --release='20100922' --center='parallel' \
        --section=1 ./parallel > ./parallel.1
pod2man --release='20100922' --center='parallel' \
        --section=1 ./sem.pod > ./sem.1
pod2man --release='20100922' --center='parallel' \
        --section=1 ./sql > ./sql.1
pod2html ./parallel > ./parallel.html
pod2html ./sem.pod > ./sem.html
pod2html ./sql > ./sql.html
rm -f ./pod2htm*
rm -f ./pod2htm*
./parallel around line 334: Expected text after =item, not a number
./parallel around line 340: Expected text after =item, not a number
rm -f ./pod2htm*
./parallel around line 1510: Expected text after =item, not a number
./parallel around line 1514: Expected text after =item, not a number
POD document had syntax errors at /usr/bin/pod2man line 71.
make[2]: *** [parallel.1] Error 255
make[2]: Leaving directory `/home/miquel/opt/OpenDroneMap/src/parallel/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/miquel/opt/OpenDroneMap/src/parallel'
make: *** [all] Error 2

As suggested in the fix for a similar problem, the solution is to put "Z<>" in the "=item" argument string.

example how to use the parameters are needed

If for example I want to run two parameters should the parameters be used in the following format
./run.pl —odm_meshing-maxVertexCount=150000 —odm_meshing-octreeDepth=11

or

./run.pl —odm_meshing-maxVertexCount 150000 —odm_meshing-octreeDepth 11

what is the correct syntax for this?

CMVS / PMVS Build fails when out of RAM

See #62

Tried building ODM on Amazon's t2.micro instance (1 CPU, 1GB of ram), and the build fails.

Worth noting that by default the Amazon AMI image isn't configured to use a swap file, so that 1GB was a hard limit in my case.

Help with odm_texturing

@smathermather I could use a little help understanding the odm_texturing process. Everything runs fine, but the results look a bit scattered. Or maybe I don't understand what to do next with the various textured outputs. I'd like to put together a YouTube video giving an overview of this feature if you can help me understand. Here is the output:

https://www.dropbox.com/sh/2pvvgtwacn2ifrf/AACSkzEzezGC-mQJQSdTraDFa?dl=0

Also, keep in mind this is the same dataset I ran in a previous video and the textured mesh turned out great. Any insight would be much appreciated.

Segmentation fault (core dumped)

Hello, I am getting the error Segmentation fault (core dumped) in running 4 images as a test. Can you give me a reason this is happening? The setup is Ubuntu 12.04 running in VirtualBox on a Mac.

Segmentation fault (core dumped)


quitting cause: 
    "/home/chris/process/corrected/../../OpenDroneMap/bin/bundler" "/home/chris/process/corrected/reconstruction-with-image-size-2400/list.txt" --options_file "/home/chris/process/corrected/reconstruction-with-image-size-2400/options.txt" > bundle/out
returned with code 35584

cannot stat ‘parallel-20141022’: No such file or directory

Guys,

I'm excited about this project. Nice vision for what you're doing. Something like this needs to exist in our community. I have a YouTube channel where I cover many different aspects of UAV mapping. You can see it here:

https://www.youtube.com/user/dennisbaldwin

I plan on covering OpenDroneMap as soon as I get more familiar with it. So I just tried installing on a Amazon EC2 instance running Ubuntu 14.04.1 and received the following error:

ubuntu@ip-172-31-8-243:~/OpenDroneMap$ ./install.sh

 created by Daniel Schwarz/[email protected]
 released under Creative Commons/CC-BY
 Attribution

 if the script doesn't finish properly
 (i.e. it doesn't print "script finished" at the end)
 please email me the content of the logs folder
  • script started - Wed Nov 26 20:28:38 UTC 2014

    installing required packages

- updating
- installing

< done - Wed Nov 26 20:31:01 UTC 2014

getting the sources
- already downloaded http://ftp.gnu.org/gnu/parallel/parallel-20141022.tar.bz2
- already downloaded http://www.netlib.org/clapack/clapack-3.2.1-CMAKE.tgz
- already downloaded http://phototour.cs.washington.edu/bundler/distr/bundler-v0.4-source.zip
- already downloaded http://www.cs.jhu.edu/~misha/Code/PoissonRecon/Version2/PoissonRecon.zip
- already downloaded http://www.vlfeat.org/download/vlfeat-0.9.13-bin.tar.gz
- already downloaded http://www.di.ens.fr/cmvs/cmvs-fix2.tar.gz
- already downloaded http://smathermather.github.io/BundlerTools/patched_files/src/graclus/graclus1.2.tar.gz
< done - Wed Nov 26 20:31:01 UTC 2014

  • unzipping sources
    mv: cannot stat ‘parallel-20141022’: No such file or directory

Perhaps I should email Daniel Schwarz but I wanted to open an issue here. I believe the problem is when parallel-20141022.tar.bz2 was unzipped it created the following directory:

parallel-20100922

or at least that's the directory that exists on my system. To get around this I changed the install script from:

mv -f parallel-20141022 "$PARALLEL_PATH"

to:

mv -f parallel-20100922 "$PARALLEL_PATH"

but it looks like that didn't do the trick. After running install.sh again the script stopped here:

parallel
- configuring parallel
- building paralel

With no output like "script finished". I'm continuing to look into the issue and this is my first install so perhaps I'm doing something wrong.

Thanks for getting this project going. I'm hoping to become more familiar with these tools and ultimately help contribute.

All the best,
Dennis Baldwin
[email protected]

UtmExtractor fails to read the EXIF data

I see that there is an option --odm_georeferencing-useGcp that can be set to false to skip reading from the GCP file.

/OpenDroneMap/run.pl --odm_georeferencing-useGcp "false" this command sould skip reading GCP and use the EXIF to generate the cordList.txt for georefrencing.

However the UtmExtractor is not working correctly for me. It fails to find the Latitude and throws exception despite my images having all the data. This is the output when i rung jhead on the image file.

File name : DJI02089.jpg
File size : 11324087 bytes
File date : 2015:03:08 10:58:31
Camera make : DJI
Camera model : PHANTOM VISION FC200
Date/Time : 2015:02:05 10:51:17
Resolution : 4608 x 3456
Focal length : 5.0mm
Exposure time: 0.0006 s (1/1667)
Aperture : f/2.8
ISO equiv. : 100
Whitebalance : Auto
Metering Mode: center weight
Exposure : program (auto)
Jpeg process : Progressive
GPS Latitude : N 27d 43m 33.94s
GPS Longitude: E 85d 20m 33.11s
GPS Altitude : 1352.30m
JPEG Quality : 100

You can see that there is Latitude Longitude and Altitude but still the UtmExtractor exist with log entry

Error in OdmExtractUtm:
Image is missing GPS Latitude data

My data can be found at https://github.com/nirabpudasaini/mission01/tree/master/LensCorrection

Add blending and/or histogram matching to texturing of mesh

Current texturing approach does no blending or balancing of adjacent images to smooth the output mesh and orthophoto:

seneca_screen

odm_orthphoto

It would be better if some histogram matching and blending were added, ideally with automatic extraction of seams to minimize the blurring affect of blending by using natural scene seams as breaks between adjacent photo meshing.

Feedback on Bundler

Would it be possible to enable some feedback on bundler, When it runs there is nothing to indicate it is running or halted.

Checking CPU Utilisation shows only 2-3% use on the current dataset I am running on a EC2 instance c4.8xlarge and it has not shown an indication of life in the last 2 hrs!

georeference also the point cloud

So far only the textured mesh is georeferenced. It would be great to have georeferenced also the point cloud, to be able to import it into GIS and create a raster surface.

Install Stops With No Status Messages

I am new to the Linux, so if I'm completely dumb in what I'm asking, just let me know. You won't hurt my feelings. I'm running Ubuntu 14.04 LTS on an Oracle VirtualBox (setup just for this).

When I run the update I get this:


todd@todd-VirtualBox:~/Documents/OpenDroneMap$ sudo ./install.sh

 created by Daniel Schwarz/[email protected]
 released under Creative Commons/CC-BY
 Attribution

 if the script doesn't finish properly
 (i.e. it doesn't print "script finished" at the end)
 please email me the content of the logs folder
  • script started - Wed Mar 18 16:18:44 CDT 2015

    installing required packages

- updating

todd@todd-VirtualBox:~/Documents/OpenDroneMap$


And nothing seems to happen. If I try and run a set of the sample images or the set that Dennis Baldwin has in his videos I get this:


sh: 1: jhead: not found
sh: 1: jhead: not found
sh: 1: jhead: not found
sh: 1: jhead: not found
sh: 1: jhead: not found

no CCD width or focal length found for img_4851.jpg - camera: " "sh: 1: jhead: not found

sh: 1: jhead: not found
sh: 1: jhead: not found
sh: 1: jhead: not found
sh: 1: jhead: not found


Any help would be appreciated!

-Todd

Error code 35072

I've been trying to run the latest commits with a previous image set that I've run through ODM. I'm hoping to test the latest orthophoto work, but am getting an error early on in the process. You can see the "quitting cause" below. I've dug around as much as I can and can't seem to find the issue. I'm willing to do the work if you can point me in the right direction. Like I said, this wasn't a problem before when I used this imagery to generate a point cloud and mesh.

A dump of the output is below...

  • finding keypoints - Sat Dec 27 00:00:04 UTC 2014

When using programs that use GNU Parallel to process data for publication please cite:

O. Tange (2011): GNU Parallel - The Command-Line Power Tool,
;login: The USENIX Magazine, February 2011:42-47.

This helps funding further development; and it won't cost you a cent.
Or you can get GNU Parallel without this requirement by paying 10000 EUR.

To silence this citation notice run 'parallel --bibtex' once or use '--no-notice'.

2/87 - Killed
parallel: Starting no more jobs. Waiting for 8 jobs to finish. This job failed:
echo -n " 2/87 - " && convert -format pgm "/home/ubuntu/caliterra_101914/reconstruction-with-image-size-3000/IMG_9347.jpg" "/home/ubuntu/caliterra_101914/reconstruction-with-image-size-3000/IMG_9347.pgm" && "/home/ubuntu/caliterra_101914/../OpenDroneMap/bin/vlsift" "/home/ubuntu/caliterra_101914/reconstruction-with-image-size-3000/IMG_9347.pgm" -o "/home/ubuntu/caliterra_101914/reconstruction-with-image-size-3000/IMG_9347.key.sift" > /dev/null && perl "/home/ubuntu/caliterra_101914/../OpenDroneMap/bin/../convert_vlsift_to_lowesift.pl" "/home/ubuntu/caliterra_101914/reconstruction-with-image-size-3000/IMG_9347" && gzip -f "/home/ubuntu/caliterra_101914/reconstruction-with-image-size-3000/IMG_9347.key" && rm -f "/home/ubuntu/caliterra_101914/reconstruction-with-image-size-3000/IMG_9347.pgm" && rm -f "/home/ubuntu/caliterra_101914/reconstruction-with-image-size-3000/IMG_9347.key.sift"
8/87 - 89718 4/87 - 84429 7/87 - 85585 6/87 - 91910 5/87 - 101615 3/87 - 98304 1/87 - 120826

quitting cause:
"/home/ubuntu/caliterra_101914/../OpenDroneMap/bin/parallel" --halt-on-error 1 -j+0 < "/home/ubuntu/caliterra_101914/reconstruction-with-image-size-3000/_vlsift.templist.txt"
returned with code 35072

Can't locate Switch.pm in @INC

I received this error when executing run.pl:

Can't locate Switch.pm in @inc

I had to install the package:

sudo apt-get install libswitch-perl

and now it looks like run.pl works properly. This was with a base Ubuntu install from Amazon EC2:

ubuntu@ip-172-31-8-243:~/OpenDroneMap$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"

Just wanted to share this bit of info.

software does not recognize my camera go pro?

Hello,
I would ask how to solve this problem:

no CCD width or focal length found for G0035260.JPG - camera: " "sh: 1: jhead: not found
sh: 1: jhead: not found
sh: 1: jhead: not found
sh: 1: jhead: not found
sh: 1: jhead: not found

no CCD width or focal length found for G0035261.JPG - camera: " "

found no usable images - quitting

Died at /home/pc1/OpenDroneMap/run.pl line 426.
I tried to insert the value of the camera, as advertised:
.........
So, we'll add the following line to our ccd_defs.pl:

"SONY DSC-HX5V" => 6.104, # 1/2.4"

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

my ccd:
"GOPRO BLACK Edition" => 6.17,# 1/2.3"
but it did not work, any idea that does not recognize the information loaded?

regards

texturing_orthophoto_spotscale_additions branch odm_texturing issue

I'm getting the following error when running the texturing branch against a data set at the "running texturing" stage. Is there a recommended virtual environment for development/testing? I'm testing on an Ubuntu 12.04.5 x32 machine on Digital Ocean's cloud. Log output here

Images attached
screen shot 2015-01-08 at 22 43 11

  - running texturing - 
OpenCV Error: Assertion failed (ssize.area() > 0) in resize, file /build/buildd/opencv-2.3.1/modules/imgproc/src/imgwarp.cpp, line 1428
Error in OdmTexturing:
/build/buildd/opencv-2.3.1/modules/imgproc/src/imgwarp.cpp:1428: error: (-215) ssize.area() > 0 in function resize

For more detailed information, see log file.


quitting cause: 
"/root/db/../OpenDroneMap/bin/odm_texturing" -bundleFile /root/db/reconstruction-with-image-size-1200/pmvs/bundle.rd.out -imagesPath /root/db/ -imagesListPath /root/db/reconstruction-with-image-size-1200/pmvs/list.rd.txt -inputModelPath /root/db/reconstruction-with-image-size-1200-results/odm_mesh-0000.ply -outputFolder /root/db/reconstruction-with-image-size-1200-results/odm_texturing/ -textureResolution 4096 -bundleResizedTo 1200 -textureWithSize 3600 -logFile /root/db/reconstruction-with-image-size-1200/odm_texturing/odm_texturing_log.txt
returned with code 256

Additional --start-with flags

run.pl --resize-to 3000 --start-with pmvs is useful to save some time on the rerun if you want to add GCPs. This will re-run everything from the dense point cloud generation onward.

It would be useful to add some flags for even later steps, like

--start-with mesh
--start-with texture
--start-with georef
--start-with ortho

Error code 32512

I tested ODM on two different machines running ubuntu 64 trusty
and got the same errors. After the ODM finishes resizing all the images
and moves on to its next step it brings up the following error in terminal:

  • finding keypoints - Mon Mar 2 22:17:59 UTC 2015

sh: 1: /home/vagrant/klatt/../OpenDroneMap/bin/parallel: not found

quitting cause:
"/home/vagrant/klatt/../OpenDroneMap/bin/parallel" --halt-on-error 1 -j+0 < "/home/vagrant/klatt/reconstruction-with-image-size-2400/_vlsift.templist.txt"
returned with code 32512

_Contents of _vlsift.templist.txt (last line)_
convert_vlsift_to_lowesift.pl" "/vagrant/klatt/reconstruction-with-image-size-2400/3882_klatt-park" && gzip -f "/vagrant/klatt/reconstruction-with-image-size-2400/3882_klatt-park.key" && rm -f "/vagrant/klatt/reconstruction-with-image-size-2400/3882_klatt-park.pgm" && rm -f "/vagrant/klatt/reconstruction-with-image-size-2400/3882_klatt-park.key.sift"

I checked the bin for parallel directory and it exists.
Any ideas? thx

Error in OdmTexturing

Hi All,
I received an ... Error in OdmTexturing...
had tried the odm_boruszyn_kap dataset...

tail from odm_texturing_log.txt:
/build/buildd/opencv-2.4.8+dfsg1/modules/core/src/matrix.cpp:323: error: (-215) 0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows in function Mat

had no errors when I tried the seneca dataset a week ago...

I've got Ubuntu 14.04 64, install finished ok... with the version of opendronemap I cloned on 28.02

Has anyone an idea what i did wrong?

Many thx
Robert Wagner

ODM_Texturing: Image not found

I have problem like this:

Bundle path was set to: /home/mechanik/dev/SfM/reconstruction-with-image-size-1200/pmvs/bundle.rd.out
Images path was set to: /home/mechanik/dev/SfM/
Images list path was set to: /home/mechanik/dev/SfM/reconstruction-with-image-size-1200/pmvs/list.rd.txt
Input model path was set to: /home/mechanik/dev/SfM/reconstruction-with-image-size-1200-results/odm_mesh-0000.ply
Output folder path was set to: /home/mechanik/dev/SfM/reconstruction-with-image-size-1200-results/odm_texturing/
The texture resolution was set to: 4096
The resized resolution used in bundler was set to: 1200
The resolution to texture with was set to: 3600
Log file path was set to: /home/mechanik/dev/SfM/reconstruction-with-image-size-1200/odm_texturing/odm_texturing_log.txt
Successfully loaded 135621 polygons from file.
Successfully read the bundle file.
Successfully read the image list file.
Error in OdmTexturing:
Error in OdmTexturing:
Failed to read image:
'/home/mechanik/dev/SfM//_MG_7067.jpg'

Texturing: failed to read image (JPG vs jpg)

My image files have upper case extension .JPG and texturing failed because of that:

- running texturing - 
Error in OdmTexturing:
Error in OdmTexturing:
Failed to read image:
'/vagrant_data/uav/uav_small//DSC00016.jpg'

Changing file extension to .jpg helped, but it would be nice support JPG as well.

Integrate OpenSfM into toolchain

This is an open question, but perhaps now that we have texturing and orthophoto, we ditch bundler and friends for OpenSfM at the front end of the toolchain. Not sure feasibility, what this gains, etc.

Add full 3D support

Current meshing is 2.5D. Full 3D meshing would allow for better addressing of building edges allowing for overhangs and true vertical support for walls and similar vertical structures

ODM Texturing fails for images with all caps extension

The Texturing step is failing because it is trying to read the image "DJI02051.jpg" in OdmTexturing::loadCameras() but i have "DJI02051.JPG" as my source image.

The code fails to read my file because of the case of the extension which is the default that i get from the Camera of DJI drone. The file is read after changing the "JPG" to "jpg".

Which dynamic libraries should be used for bundler?

On a fresh Ubuntu 12.04.5 LTS VM, I took two paths to using bundler unsuccessfully.

  1. using the packages from the apt-repository results in a Seg Fault in bundler
...
  Adding match 72100 ==> 71069 [15001]
 tri.error[15008] = 1.894
[SifterApp::DumpOutputFile] Wrote file in 0.090s
initial motstr-SBA error 5799.19 [0.193281]

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff6d7e018 in dscal_ () from /usr/lib/libblas.so.3gf
(gdb) bt
#0  0x00007ffff6d7e018 in dscal_ () from /usr/lib/libblas.so.3gf
#1  0x00007ffff73cc1a3 in dsytf2_ () from /usr/lib/liblapack.so.3gf
#2  0x00007ffff73cebf4 in dsytrf_ () from /usr/lib/liblapack.so.3gf
#3  0x00000000004b0620 in sba_symat_invert_BK ()
#4  0x00000000004a8362 in sba_motstr_levmar_x ()
#5  0x00000000004a3d89 in sba_motstr_levmar ()
#6  0x00000000004a1db5 in run_sfm ()
#7  0x00000000004187fe in BundlerApp::RunSFM(int, int, int, bool, camera_params_t*, v3_t*, int*, v3_t*, std::vector<std::vector<std::pair<int, int>, std::allocator<std::pair<int, int> > >, std::allocator<std::vector<std::pair<int, int>, std::allocator<std::pair<int, int> > > > >&, double, double*, double*, double*, double*, bool) ()
#8  0x000000000042bfd4 in BundlerApp::BundleAdjustFast() ()
#9  0x000000000040616e in BundlerApp::OnInit() ()
#10 0x0000000000403a7e in main ()
  1. using the libraries bundled with OpenDroneMap, bundler is unable to link libgfortran.so.1

No packages in the Ubuntu repositories, AFAIK, have lower than libgfortran.so.3

OpenDroneMap/bundler-v0.4-source$ LD_LIBRARY_PATH="OpenDroneMap/lib/" ldd bin/bundler
        linux-vdso.so.1 =>  (0x00007fffb8f24000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f5160df1000)
        liblapack.so.3gf => /opt/OpenDroneMap/lib/liblapack.so.3gf (0x00007f5160704000)
        libblas.so.3gf => /opt/OpenDroneMap/lib/libblas.so.3gf (0x00007f51604b2000)
        libjpeg.so.8 => /usr/lib/x86_64-linux-gnu/libjpeg.so.8 (0x00007f5160262000)
        libANN_char.so => /opt/OpenDroneMap/lib/libANN_char.so (0x00007f516004f000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f515fd4e000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f515fa52000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f515f83c000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f515f47c000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f5161019000)
        libgfortran.so.1 => not found
        libgfortran.so.1 => not found

It might be easiest to just include libgfortran.so.1 with the libraries included in OpenDroneMap/lib/ but I can't seem to dig it up.

Build fails if there's a space in the filename

Because I'm a fool, I accidentally named the folder of images to be processed:

~/opendronemap 2/

Which will fail at the Meshing:

  - running meshing -
Error in OdmMeshing:
Argument '-inputFile' has a bad value. (file not accessible)
For more detailed information, see log file.


quitting cause:
        "/home/ubuntu/opendronemap 2/../OpenDroneMAp/bin/odm_meshing" -inputFile /home/ubuntu/opendronemap 2/reconstruction-with-image-size-2400-results/option-0000.ply -outputFile /home/ubuntu/opendronemap 2/reconstruction-with-image-size-2400-results/odm_mesh-0000.ply -logFile /home/ubuntu/opendronemap 2/reconstruction-with-image-size-2400/odm_meshing/odm_meshing_log.txt -maxVertexCount 100000 -octreeDepth 9 -samplesPerNode 1
returned with code 256

If I rename the folder to "opendronemap2" without the space, the meshing section succeeds.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.