Zurück

Multi-View Environment (MVE)

MVE bietet eine vollständige Pipeline zur Photogrammetrie. Diese umfasst Structure-from-Motion, Multi-View Stereo und Surface Reconstruction. Die Pipeline besteht aus einzelnen Bibliotheken, welche in C++ geschrieben sind. Der Quelltext ist plattformunabhängig und läuft unter Linux, MacOS als auch Windows.

MVE wurde an der Technischen Universität Darmstadt durch die Forschungsgruppe ”Graphics, Capture and Massively Parallel Computing” entwickelt. Leiter der Forschungsgruppe ist Prof. Dr.-Ing. Michael Goesele. Zusätzlich haben an diesem Projekt Simon Fuhrmann, Fabian Langguth, Nils Moehrle und Michael Waechter mit gearbeitet. (Projekt Werbseite MVE)

Ein großer Vorteil für das Projekt ”Digital Humanities im Museum 4.0” war die Nutzbarkeit von MVE in der Kommandozeile. Dadurch konnte ein Skript erstellt werden, welches die Einzelschritte der Rekonstruktion automatisch durchführt.

Es werden folgende Programme von uns benutzt: - makescene - sfmrecon - dmrecon - scene2pset - fssrecon - meshclean

makescene

This utility creates MVE scene by importing from an external SfM software. With the "images-only" option, all images in the input directory are imported without camera information. If "append-images" is specified, images are added to an existing scene. The input images get converted into a MVE dataset.

Tips & Notes:

Befehl Beschreibung Beispiel Tags
-o, --original Import original images makescene -o <input_dir> ???
-b, --bundle-id=ARG Bundle ID (Photosynther and Bundler only [0] makescene -b <input_dir> Unwichtig
-k, --keep-invalid Keeps images with invalid cameras makescene -k <input_dir> experimental
-i, --images-only Imports images from <input_dir> only makescene -i <input_dir> wichtig
-a, --append-images Appends images to an existing scene makescene -a new/images/here unwichtig
-m, --max-pixels=ARG Limit image size by iterative half-sizing makescene --max-pixels=60000 0

sfmrecon

Reconstruction of camera parameters for MVE scenes using Structure from Motion. Note: The prebundle and the log file are relative to the scene directory. The EXIF information of the images are saved into the specific meta.ini file after sfmrecon (https://github.com/simonfuhrmann/mve/issues/394).

Tips & Notes:

Befehl Beschreibung Beispiel Tags
-o, --original=ARG Original image embedding [original] sfmrecon -o ???
-e, --exif=ARG EXIF data embedding [exif] sfmrecon -e ???
-m, --max-pixels=ARG Limit image size by iterative half-sizing sfmrecon --max-pixels=80000 0
-u, --undistorted=ARG Undistorted image embedding [undistored] sfmrecon --undistorted=undi storted
--prebundle=ARG Load/store pre-bundle file [prebundle.sfm] sfmrecon --prebundle=prebun dle.sfm
--survey=ARG Load survey from file [] sfmrecon --survey=survey.tx t
--log-file=ARG Log some timings to file [] sfmrecon --log-file=log.txt log
--no-prediction Disable matchability prediction sfmrecon --no-prediction experimental
--normalize Normalize scene after reconstruction sfmrecon --normalize
--skip-sfm Compute prebundle, skip SfM reconstruction sfmrecon --skip-sfm --prebundle=prebun dle.sfm experimental
--always-full-ba Run full bundle adjustment after every view sfmrecon --always-full-ba wichtig
--video-matching=A RG For frames extracted from a video: Match frame only to ARG previous frames [0] sfmrecon -video-matching=5 experimental
--fixed-intrinsics Do not optimize camera intrinsics sfmrecon --fixed-intrinsics wichtig
--intrinsics-from- views Use intrinsics from MVE views [use EXIF] sfmrecon --intrinsics-from- views wichtig
--track-error-thre s=ARG Error threshold for new tracks [0.01] sfmrecon --track-error-thre s=0.025 wichtig
--track-thres-fact or=ARG Error threshold factor for tracks [10] sfmrecon --track-thres-fact or=13 wichtig
--use-2cam-tracks Triangulate tracks from only two cameras sfmrecon --use-2cam-tracks experimental
--initial-pair=ARG Manually specify initial pair IDs [-1,-1] sfmrecon --initial-pair=3,5 wichtig
--cascade-hashing Use cascade hashing for matching [false] sfmrecon --cascade-hasing experimental
--verbose-ba Print detailed BA information [false] sfmrecon --verbose-ba log

dmrecon

Generates the depthmaps for the input images

Tips & Notes:

Befehl Beschreibung Beispiel Tags
-n, --neighbors=ARG Amount of neighbor views (global view selection) dmrecon --neighbors=5
-m, --master-view=ARG Reconstructs given master view ID only dmrecon --master-view=18
-l, --list-view=ARG Reconstructs given view IDs (given as string "0-10") dmrecon --list-view="3-15" experimental
-s, --scale=ARG Reconstruction on given scale [0] dmrecon --scale=3 wichtig
--max-pixels=ARG Limit master image size [1500000] dmrecon --max-pixels=200000
-f, --filter-width=ARG Patch size for NCC based comparison [5] dmrecon --filter-width=7
--nocolorscale Turn off color scale dmrecon --nocolorscale
-i, --image=ARG Specify source image embedding [undistorted] dmrecon --image=undistorte d
--local-neighbors= ARG Amount of neighbors for local view selection [4] dmrecon --local-neighbors= 6
--keep-dz Store dz map into view dmrecon --keep-dz
--keep-conf Store confidence map into view dmrecon --keep-conf
-p, --writeply Use this option to write the ply file dmrecon -p
--plydest=ARG Path suffix appended to scene dir to write ply files dmrecon --plydest=/output/
--bounding-box=ARG Six comma seperated values used as AABB [disabled] dmrecon --bounding-box=???
--progress=ARG Progress output style: 'silent', 'simple' or 'fancy' dmrecon --progress=fancy log
--force Reconstruct and overwrite existing depthmaps dmrecon --force

scene2pset

Generates a pointset form the scene by projection reconstructed depth values in the world coordinate system

Tips & Notes:

Befehl Beschreibung Beispiel Tags
-d, --depthmap=ARG Name of depth map to use [depth-L0] scene2pset --depthmap=depth-L 1
-i, --image=ARG Name of color image to use [undistorted] scene2pset --image=picture.jp g
-n, --with-normals Write points with normals (PLY only) scene2pset --with-normals
-s, --with-scale Write points with scale values (PLY only) scene2pset --with-scale
-c, --with-conf Write points with confidence (PLY only) scene2pset -c
-m, --mask=ARG Name of mask/silhouette image to clip 3D points [] scene2pset --mask=mask.png
-v, --views=ARG View IDs to use for reconstruction [all] scene2pset --views="3-10"
-b, --bounding-box=ARG Six comma seperated values used as AABB scene2pset --bounding-box=???
-f, --min-fraction=ARG Minimum fraction of valid depth values [0.0] scene2pset --min-fraction=0.2
-p, --poisson-normals Scale normals according to confidence scene2pset -p
-S, --scale-factor=ARG Factor for computing scale values [2.5] scene2pset --scale-factor=6.5
-C, --correspondence Output correspondences (in absence of -m and -b only) scene2pset --correspondence
-F, --fssr=ARG FSSR output, sets -nsc and -di with scale ARG scene2pset --fssr=???

fssrecon

Samples the implicit function defined by the input samples and produces a surface mesh. The input samples must have normals and the "values" PLY attribute (the scale of the samples). Both confidence values and vertex colors are optional. The final surface should be cleaned (sliver triangles, isolated components, low-confidence vertices) afterwards.

Tips & Notes:

Befehl Beschreibung Beispiel Tags
-s --scale-factor=ARG Multiply sample scale with factor [1.0] fssrecon --scale-factor=2.5 experimental
-r, --refine-octree=AR G Refines octree with N levels [0] fssrecon --refine-octree=1
--min-scale=ARG Minimum scale, smaller samples are clamped fssrecon --min-scale=2
--max-scale=ARG Maximum scale, larger samples are ignored fssrecon --max-scale=3
--interpolation=AR G Interpolation: linear, scaling, lsderiv, [cubic] fssrecon --interpolation=sc aling

meshclean

This application cleans degenerated faces resulting from MC-like algorithms. Vertices below a confidence threshold and vertices in small isolated components are deleted as well.

Tips & Notes:

Befehl Beschreibung Beispiel Tags
-t, --threshold=ARG Threshold on the geometry confidence [1.0] meshclean --threshold=1.25 wichtig
-p, --percentile=ARG Use the nth percentile (0-100) as confidence threshold [disabled] meshclean --percentile=75 wichtig
-c, --component-size=ARG Minimum number of vertices per component [1000] meshclean --componen-size=1500 wichtig
-n, --no-clean Prevents cleanup of degenerated faces meshclean --no-clean unwichtig
--delete-scale Delete scale attribute from mesh meshclean --delete-scale unwichtig
--delete-conf Delete confidence attribute from mesh meshclean --delete-conf unwichtig
--delete-color Delete color attribute from mesh meshclean --delete-color unwichtig