-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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.