-
Notifications
You must be signed in to change notification settings - Fork 5
edgarriba cmake branch info (for developers)
Hints for the installation can be found at: https://github.com/OpenDroneMap/OpenDroneMap/wiki/1.-Installation
I want to try help everyone get familiar with the code in the edgarriba's port. I'll try my best to explain it here
├── ccd_defs_check.py # check the data/ccd_defs.json for compilation errors
├── CMakeLists.txt # cmake file
├── code_of_conduct.md # info on contributing
├── configure.sh # The new install file. Builds dependencies and external modules in SuperBuild
├── data # Misc data
│ └── ccd_defs.json # json file with camera ccd width definitions
├── Dockerfile # For use with Docker
├── hooks # Git hooks
│ └── pre-commit # check ccd_defs before commit
├── img
│ └── odm_image.png # The logo
├── LICENSE # GPL v.3 license
├── licenses # licenses reference for external modules
│ ├── libext_copyright.txt
│ ├── libx11_copyright.txt
│ └── license.md
├── modules # internal modules
│ ├── CMakeLists.txt # cmake file
│ ├── odm_extract_utm # extract UTM from images metadata for georeferencing
│ │ ├── CMakeLists.txt
│ │ └── src
│ │ ├── Logger.cpp
│ │ ├── Logger.hpp
│ │ ├── main.cpp
│ │ ├── UtmExtractor.cpp
│ │ └── UtmExtractor.hpp
│ ├── odm_georef # georeferences the model
│ │ ├── CMakeLists.txt
│ │ ├── CMakeLists.txt.user
│ │ └── src
│ │ ├── FindTransform.cpp
│ │ ├── FindTransform.hpp
│ │ ├── Georef.cpp
│ │ ├── Georef.hpp
│ │ ├── Logger.cpp
│ │ ├── Logger.hpp
│ │ ├── main.cpp
│ │ ├── modifiedPclFunctions.cpp
│ │ └── modifiedPclFunctions.hpp
│ ├── odm_meshing # creates a triangulated mesh of the dense point cloud
│ │ ├── CMakeLists.txt
│ │ └── src
│ │ ├── Logger.cpp
│ │ ├── Logger.hpp
│ │ ├── main.cpp
│ │ ├── OdmMeshing.cpp
│ │ └── OdmMeshing.hpp
│ ├── odm_orthophoto # Creates an orthophoto from the textured mesh
│ │ ├── CMakeLists.txt
│ │ ├── CMakeLists.txt.user
│ │ └── src
│ │ ├── Logger.cpp
│ │ ├── Logger.hpp
│ │ ├── main.cpp
│ │ ├── OdmOrthoPhoto.cpp
│ │ └── OdmOrthoPhoto.hpp
│ └── odm_texturing # Creates a textured mesh from the mesh and images
│ ├── CMakeLists.txt
│ ├── CMakeLists.txt.user
│ └── src
│ ├── Logger.cpp
│ ├── Logger.hpp
│ ├── main.cpp
│ ├── modifiedPclFunctions.cpp
│ ├── modifiedPclFunctions.hpp
│ ├── OdmTexturing.cpp
│ └── OdmTexturing.hpp
├── opendm # Directory containing utility scripts and context
│ ├── config.py # Argparse config
│ ├── context.py # contains paths and other universal variables (num_cores, supported_extensions)
│ ├── __init__.py
│ ├── io.py # io functions
│ ├── log.py # logging configuration
│ ├── system.py # functions mimicking system function and other utilities
│ ├── tasks.py # classes for odmtasks (I don't think this is functional code. It may be irrelevant)
│ └── types.py # classes for ODM_Photo, ODM_Reconstruction, ODM_GCPoint, ODM_Tree
├── patched_files # I'm actually not sure what this is for. I think it has to do with the install.
│ └── src
│ └── graclus
│ ├── graclus1.2.tar.gz
│ └── index.html
├── README.md # The Readme for Github
├── run.py # The control script. Note it's very small, most of the goods are in scripts/
├── scripts # The juicy bits. These files define ecto "cells", explained below
│ ├── cmvs.py # With PMVS, generates a dense point cloud
│ ├── dataset.py # Prep the dataset
│ ├── example_ecto_python.py # example
│ ├── __init__.py
│ ├── odm_app.py # Defines the main App class, which inherits from ecto.BlackBox, explained below
│ ├── odm_georeferencing.py # Georeferences the output files
│ ├── odm_meshing.py # Generates a triangulated mesh from ply
│ ├── odm_orthophoto.py # Generates an orthophoto from textured mesh
│ ├── odm_texturing.py # Generates a textured mesh
│ ├── opensfm.py # Does the structure from motion process
│ ├── pmvs.py # With CMVS, generates a dense point cloud
│ └── resize.py # resizes the photos
├── SuperBuild # A cmake SuperBuild downloads, configures and builds other projects
│ ├── cmake
│ │ ├── External-Catkin.cmake
│ │ ├── External-Ceres.cmake
│ │ ├── External-CMVS.cmake
│ │ ├── External-Ecto.cmake
│ │ ├── External-GFlags.cmake
│ │ ├── External-LAStools.cmake
│ │ ├── External-OpenCV.cmake
│ │ ├── External-OpenGV.cmake
│ │ ├── External-OpenSfM.cmake
│ │ ├── External-PCL.cmake
│ │ └── ExternalProject-Setup.cmake
│ └── CMakeLists.txt
└── tests # Tests
├── test_data # A small, well-oiled dataset that should work most of the time (we hope)
│ └── images
│ ├── 1JI_0064.JPG
│ ├── ...
├── testing.md # What needs to be tested and how. This is not comprehensive.
└── test_odm.py # The testing script. Uses unittest.
OK so this part is a little hard to grok, and I'm still new to the concept too, so bear with me. First off, you can get info about ecto straight from the source.
So as I understand it, ecto is a framework for getting 'stuff' from one place to another- in our case, photos to a variety of other products such as 3D meshes and orthophotos. It uses Directed Acyclic Graphs, called plasms, to do this. Each "cell" is a computation which takes an input, performs some process, and passes an output to a number of other cells.
A BlackBox is an encapsulation of a plasm, so that it can be reused. That mean you can rerun the code on a dataset and it will know which cells have already been run.