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_WIDTHS
from a YAML file.
- An image resizer script that keeps EXIF metadata.
- A
Makefile
to 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.
Get the latest image:
docker pull epassaro/linux-photogrammetry-tools:latest
-
Get latest build from releases section and extract it.
-
Install the following dependencies via
apt
:build-essential
libjpeg62
liblapack3
libceres1
jhead
python3
python3-pil
python3-ruamel.yaml
Usage via container is described in DOCKER.md.
To process the example dataset open a new terminal, go to the program folder and run make
.
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
.
Results are stored under <IMG_DIR>/output
folder.
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.
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.
-
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_dir
directory and open a new issue.
Code released under the GNU GPLv3 License.