linux-photogrammetry-tools
linux-photogrammetry-tools copied to clipboard
Structure from motion pipeline (Bundler + CMVS + PMVS2) ready to run on Ubuntu or Docker
linux-photogrammetry-tools
A set of photogrammetry tools compiled for Ubuntu and containerized, fully open source and ready to use:
- SIFT* by vlfeat.org.
- Bundler (compiled w/Ceres Solver) by Noah Snavely.
- CMVS & PMVS2 by Yasutaka Furukawa.
- A patched version of Isaac Lenton's
bundler.py:- Ported to Python 3.
- Works with VLFeat SIFT (patch based on Python Photogrammetry Toolbox code).
- Uses Ceres Solver by default.
- Reads
CCD_WIDTHSfrom a YAML file.
- An image resizer script that keeps EXIF metadata.
- A
Makefileto run the pipeline steps. - A Jupyter Notebook for point cloud meshing with Open3D.
- NEW! (March 2023): A Jupyter Notebook to run AliceVision's Meshroom on Google Colaboratory (or locally with a CUDA compatible GPU). This is a complete photogrammetry pipeline and works independently of the software listed above.
If you want to know more about how this software is packaged see here.
* SIFT patent expired on March 2020.
Installation
Docker
Get the latest image:
docker pull epassaro/linux-photogrammetry-tools:latest
Ubuntu 18.04
-
Get latest build from releases section and extract it.
-
Install the following dependencies via
apt:build-essentiallibjpeg62liblapack3libceres1jheadpython3python3-pilpython3-ruamel.yaml
Usage
Docker
Usage via container is described in DOCKER.md.
Ubuntu
To process the example dataset open a new terminal, go to the program folder and run make.
Options
The following options can be passed to make in the command line:
- IMG_DIR: path. Directory with a collection of images to be processed. Default:
examples/kermit. - RESIZE: bool. Resize pictures before processing. Default:
True. - MAX_SIZE: int. If RESIZE is
True, maximum size in pixels (width or height). Default:1200. - LOGFILE: path. Default:
log.txt.
Visualize results & post-processing
Results are stored under <IMG_DIR>/output folder.
Open3D
To generate a 3D mesh from the point cloud with Open3D you will need Anaconda or Miniconda installed on your system, and then create a new environment:
$ conda create -n open3d -c open3d-admin -c conda-forge open3d=0.12
Finally, run the notebook gen_3d_mesh.ipynb located at the docs folder.
Meshlab
Open the .ply file located at work_dir/pmvs/models/ with Meshlab. You should visualize the point cloud clearly. To generate a textured mesh from point cloud, I recommend following the Shubham Wagh's guide.
Known issues
-
No CCD width available for camera.Only a small number of CCD widths are listed in
cfg/ccd_widths.yml.Solution: google your camera specs and add a new entry to the list.
If your problem is not listed here please check the log file inside your
work_dirdirectory and open a new issue.
License
Code released under the GNU GPLv3 License.