- [hdr] Improved HDR calibration, including new LdrToHdrSampling for optimal sample selection PR PR PR
- [panorama] New Panorama Stitching nodes with support for fisheye lenses PR PR PR PR PR
- [texturing] Improve texturing quality on (low-poly) user mesh after retopology PR
- [multiview] Addition of 10 points relative pose solver PR
- [sfm] Coordinate system alignment to specific markers or between scenes PR
- [matching] Add methods in imageMatching PR
- [sfmData] More generic metadata support PR PR
- [software] New ImageProcessing software PR PR PR PR
- [cameraInit] Support more extensions and add new viewId generation method PR
- [depthMap] Fixed potential index out of range exception in PlaneSweepingCuda PR
- [feature] Fix popsift static release PR
- [fuseCut] Improve delaunayGraphCut PR
- [fuseCut] Similarity map is optional PR
- [hdr] Update compensation of aperture and ISO change in HDR fusion PR
- [image] Fix bug with input RGBA Images PR
- [keyframe] KeyframeSelector: add padding in created filenames PR
- [matching] Fix unmatching declaration and definitions PR
- [meshing] Fix load of depth maps without metadata PR
- [meshing] Simplify input depth map folders PR
- [panorama] HDR Panorama: Handle very high intensities PR
- [panorama] Panorama: Add Graphcut in compositing PR PR
- [sfm] Add scale as parameter in functions for sfm PR
- [sfm] Bugfix: ceres::AngleAxisRotatePoint cannot be used in-place PR
- [sfm] Performance improvements: optimize RemoveOutliers_AngleError PR
- [sfm] SfM statistics PR
- [sfmDataIO] Add Observation scale in IO PR
- [sfmSfM] Major bug fix on BlockOrder in BACeres PR
- [software] ConvertSfMFormat: bug fix: remove pose only if it exists PR
- [software] Image matching: fix min nb images PR
- [software] ImageProcessing: add option to fix non finite pixels PR
- [software] ImageProcessing: add storageDataType option PR
- [software] PanoramaCompositing: option to select the percentage of upscaled pixels:PR
- [software] PanoramaEstimation: sort input images by shooting time to select the center camera PR
- [software] PanoramaInit: Add an extra image rotation to each camera declared the input xml PR
- [software] PanoramaInit: Add new restriction to circle detection PR
- [software] PanoramaInit: improve fisheye circle detectionPR
- [software] SfMTransfer: New option to copy intrinsics from one sfmdata to another PR
- [tracks] Fix tracks filtering PR
- [voctree] Fix possible overflow in unsigned subtraction PR
- [windows] Add main function wrapper to catch exceptions and avoid annoying error popup on windows PR
- [sensorDB] Many updates to cameraSensors.db
- [matching] Build fix for MSVC 2019 PR
- [build] Avoid circular dependency PR
- [build] Fix build against cuda<=11 PR
- [build] Fix offset logging against boost 1.71 PR
- [build] Fix prettyprint MSVC compatibility PR
- [build] Fix unit test includes PR
- [build] Make sure suitesparse build with jenkins pipeline PR
- [build] Remove unused embedded cxsparse PR
- [build] Workaround for a build incompatibility between prettyprint and eigen PR
- [ci] Add github actions CI PR
- [ci] AppVeyor: Build with VS 2019, Cuda 11 PR
- [ci] Build alicevision snapshot binaries (win) PR
- [ci] remove travis PR
- [cmake] All-in-one: update geogram to 1.7.3 PR
- [cmake] Build all-in-one: add gmp, mpfr, ffmpeg PR
- [cmake] Fix eigen flags PR
- [cmake] Fix findOpenEXR missing escapes PR
- [cmake] Missing Boost::boost dependency PR
- [cmake] Update required CMake version PR
- [cmake] Using modern cmake for boost PR
- [cmake] Add cuda support for SM 86 PR
- [doc] Build: add notice that english language pack is required for VS/vcpkg PR
- [doc] Fixed citation PR
- [doc] INSTALL.md: add boost-timer and lz4 to vcpkg install command PR
- [docker] Clean docker images for centos and ubuntu PR
- [docker] Fix ubuntu dockerfile PR
- [docker] Fixes docker and all-in-one cmake build PR
- [docker] Minor Changes in the docker build command PR
- [docker] Release docker PR
- [github] Added actions for stale issues PR
- [github] Fix stale.yml PR
- [meshing] Code refactoring PR
- [sensor] Replace deprecated basestring with str (Py3) PR
- [sfmDataIO] Throw if we try to load an abc file and AliceVision is built without Alembic support PR
- [system] Logger levels were not case insensitive PR
- [windows] Fixing vs2019 build options PR
For more details see all PR merged: https://github.com/alicevision/AliceVision/milestone/31
Release Notes Summary:
- Texturing: Largely improve the Texturing quality using Multi-Band Blending technique. PR
- Texturing: Support for RAW image files: Libraw update and fix its usage in OpenImageIO (fix color shift and use correct gamma). PR
- Texturing: Performance optimization by iterating over multiple output textures at the same time. PR
- Texturing: Add support for UDIM in UV mapping and use it by default. PR
- Meshing: Export the dense point cloud in Alembic and computes the points colors PR.
- Meshing: New option to export the full raw dense point cloud in the Meshing software (with all 3D points candidates before cut and filtering). PR
- Meshing: Adds an option to export color data per vertex and MeshFiltering correctly preserves colors. PR.
- HDR: New HDR module for the fusion of multiple LDR images with the corresponding new software LDR2HDR. It implements linear fusion as well as Camera Response Function (CRF) calibration with Robertson, Debevec or Grossberg methods. PR
- PrepareDenseScene: Add experimental option to correct Exposure Values (EV) of input images to uniformize dataset exposures. PR
- FeatureExtraction: Include CCTag in the release binaries both on Linux and Windows. PR
Full Release Notes:
- DepthMap: Bug fix if no nearby cameras (a big bottleneck of the release 2019.1). PR
- DepthMap: Bug fix: missing allocation when reducing the number of planes. PR
- DepthMap: Bug fix: SGM early stop condition could provide an unallocated buffer to the refine step PR
- FeatureExtraction: Bug fix in AKAZE filtering (sort keypoints by size before grid filtering). PR
- FeatureMatching: Bug fix: use ranges prefix to avoid overwrites of matching files when using ImageMatching. PR
- SfM: Improve SfM colorization performances. PR
- SfM: Fix intrinsics edges management in the Local Bundle Adjustment (LBA). PR
- Texturing: UVAtlas: downscale charts to fit in texture to avoid bug with small "Texture Side". Apply downscale factor to fit larger charts into the texture, and use it when filling atlases and computing final UV textures. PR
- SfM: Fix management of intrinsics related connections in the local bundle adjustment graph which could lead to removal of wrong edges and potential corruption of the graph. This could end up with the SfM going in an infinite loop and/or undefined behavior. PR
- DepthMap: Remove useless remaining image transpositions. PR
- CCTag: Major update to get Windows compatibility. PR
- SfMDataIO: Change root nodes (XForms instead of untyped objects) of Alembic SfMData for better interoperability with other 3D graphics applications (in particular Blender and Houdini). PR
- DepthMap: Add option to create Normal Maps in DepthMapEstimation (not used in other part of the pipeline for now). PR
- DepthMap: Add option to export similarity volumes in Alembic files (for research analysis). PR
- DepthMap: remove useless images transpositions. PR, and fix
- Texturing: Add option to choose the internal colorspace used for color fusion. PR
- Texturing: Add option to correct exposure values during Texturing. PR
- FeatureExtraction: include CCTag in the release binaries. PR.
- Travis: Update libraries dependencies. PR
- SensorDB: Add more than 100 new models. PR
- CMake: New doxygen documentation target. PR
- CMake: Improve usage as third-party library. PR
For more details see all PR merged: https://github.com/alicevision/AliceVision/milestone/30
Release Notes Summary:
- More complete sensor database and better matching as well as explicit status for lens initialization
- Add support for rig of cameras. This enables to add more contraints if you make acquisition with multiple synchronized devices.
- Support for reconstruction with projected light patterns and texturing with another images set.
- Better estimation of the space to reconstruct to limit the reconstruction zone. This avoid to reconstruct low quality and useless areas around the main object/environment.
- New option to directly mesh the SfM results. This provides a quick solution to get a draft mesh (without cuda requirement).
- Reduce IO and intermediate files in MVS part of the pipeline.
Full Release Notes:
- sensorDB: Update the sensors database with much more models
- sensorDB: Use
FocalLengthIn35mmFilm
metadata as a fallback if available - sensorDB: Improve matching of metadata make/model with sensor database
- CameraInit: New management of intrinsics (serial number, error/warning log) with an explicit InstrinsicInitMode enum
- CameraInit: Fix intrinsics grouping with serial number as expected and add metadata "AliceVision::SensorWidth"
(or "AliceVision::SensorWidthEstimated" if estimated from
FocalLength
/FocalLengthIn35mmFilm
) - CameraInit: Explicit warning if serial number is missing
- SfM: Add support for rig of cameras. This information is used as a new constraint in the SfM. This option can now be combined with localBA. You need to use a specific folder hierarchy in the input images files (for instance: “/my/dataset/rig/0/DSLR_0001.JPG”, “/my/dataset/rig/1/DSLR_0001.JPG”) to provide this information.
- PrepareDenseScene: New
imagesFolders
option to override input images. This enables to use images with light patterns projected for SfM and MVS parts and do the Texturing with another set of images. - Meshing fusion: New option to use SfM landmarks (mesh from sparse point cloud) or combine them with depth maps
- Meshing: Add option
estimateSpaceFromSfM
to better estimate the bounding box of the reconstruction and avoid useless reconstruction of the environment - MVS: Reduce IO and intermediate files. Use sfmData in the MVS pipeline (instead of MVS seeds, ini file) and do not export depthmap files before refine
- ExportAnimatedCamera: Improved solution to export an SfM result into an animated camera
- PrepareDenseScene: Remove hackish software
CameraConnection
(now properly done in PrepareDenseScene) - PrepareDenseScene: Allow parallelization on renderfarm
- FeatureExtraction: Add grid filtering in AKAZE (to avoid unmanageable number of keypoints on well textured images)
- DepthMap: Fix memory leak in SGMVolume
- Meshing: Fix loading of OBJ with normals
- System: Improve gpu detection and logging
- DepthMap: Enable usage of multiple GPUs by default with an option to add a limit
- DepthMap: Fuse estimate & refine in a single loop (fuse “computeDepthMapsPSSGM” with “refineDepthMaps”) and use the same image cache
- DepthMap: Remove depthMapInfo files and use image metadata instead
- DepthMap: Initial refactoring for better readability to prepare the optimization work
- SfM: Refactoring of localBA (now fused with the standard BA code to avoid redundancy)
- ConvertSfMFormat: Users can now specify a view whitelist to filter views
- SfM: The user can provide only one image of the initial pair and it will choose the 2nd image automatically. This allows to ensure that the reconstruction start from a specific part of the scene without choosing the image pair manually.
- SfMTransform: Allow to choose one view as the origin for the coordinate system
- SfM Augmentation from known poses: When the sfm starts with existing cameras poses but without landmarks, it now does the triangulation first.
- LightingEstimation: New module with preliminary low-level methods for lighting estimation (spherical harmonics)
- MeshDenoising: Fix ignored parameter denoising outer iteration
- Meshing: Bug fix (infinity loop) in Meshing when the BBox is empty
- SfM LocalBA: reduce minimum number of images to use sparse BA (change threshold from 100 to 20) to speedup large reconstructions when localBA is used.
- Minor build fix for compatibility with ceres 2.
Release of the full 3D reconstruction pipeline.
- New Docker images for Centos 7 and Ubuntu 18
- New "make bundle" for packaging
- Refactor split sfm / sfmData / sfmDataIO
- New visibility remapping methods: Push, PullPush
- Improve texturing quality with better image selection
- SfM support multiple folders for features and matches
- PopSiftImageDescriber: no initialization if not used
- Offline camera tracking improvements
- Export animated camera ABC
- Export undistorted images and filter option
- MeshroomMaya script integration Image Plane
- Minor fixes in cameraSensors DB search
- New fallback if no sensor width info available but FocalLengthIn35mmFilm metadata is present
- ImageMatchingMultiSfM: add “a_a+a_b” option
- SfM Augmentation: lock cameras from the initial reconstruction
- SfM: Add option in order to disable the cleaning of tracks forks
- Merge the MVS pipeline in the main branch
- New options for better auto UVs based on geogram (needs reasonable mesh size in input)
- Use full resolution images in the MVS pipeline: PrepareDenseScene creates full resolution undistorted images, DepthMap computes downscale when loading images and Texturing can be done in full resolution.
- New depth map fusion with a multi-scale approach (using nanoflann)
- ImageMatching: Fix conflict if multiple images with the same UID
- Add SIFT_UPRIGHT as an ImageDescriber
Release of the Structure-From-Motion pipeline.
- Support Raw and Exr input files
- Texturing: add multithreading / clean iteration over pixels in triangle
- MVS: use UIDs
- Major MVS refactoring
- New Mesh Denoiser and Decimate based on MeshSDFilter
- Integration of Uncertainty computation step
- Meshing: Remove facets with helper points but limit holes creation
- Texturing: Don’t modify the topology
- Meshing: Add an option to keep only the largest facets group
- cmake: Geogram as a submodule of cmpmvs
- Update SfM
- Modify Image Matching
- SfM Reorientation software
- Use OpenMP for featureExtraction with a new imageDescriber memory needs estimation
- Rewrite “Identify the track to triangulate” in triangulateMultiViews_LORANSAC
- popSIFT directly on floating point images
- Use relative path for features and matches in SfM
- Remove cereal dependency
- Remove static functions in headers
- MVS: Add namespace per module
- MVS: Build as dynamic libraries
- MVS: Remove unneeded intermediate images
- Reduce the amount of storage for intermediate files and improve robustness to kill/restart jobs on renderfarm
- New software to create simplified versions of the mesh
- Use OpenImageIO in MVS
- Use floating point image in texturing
- New Local Bundle Adjustment to speedup SfM on large scenes
- Retexturing on an external user mesh with a retopology (no visibility information and support user UVs) with a first visibilities remapping method.
- Add new images to a previous SfM reconstruction
- Use OpenImageIO in SfM
- Reduce memory usage on Meshing
- SfM: Support for RIG of synchronized cameras/DSLR with a new constraint between rigidly fixed cameras
- New software utility for 360° cameras
- Tetrahedralization scoring with boost maxflow
- Meshing tetrahedralization with geogram
- Texturing speedup
- Rewrite CUDA layer
- SfM: Weighting on image describers to combine them correctly
- MVS: Support for multiple image resolutions
- MVS: Code comments and documentation
- MVS: Performance improvements
- Texturing: Fix UV coords
- MVS: Split Meshing and Texturing steps
- Texturing: Rewrite edge padding for performance reasons
- MVS: Linux code porting
- Integration of PopSift: a new GPU SIFT implementation
- SfM: Add LoRansac
- SfM: New next best view strategy to promote good repartition in images. Same rule in image pair selection.
- SfM: Optional filtering of the input tracks with a minimal track length
- SfM: Optional limitation on the number of input matches from an image pair
- Sort features and matches
- FeatureExtraction: Limit the number of features per image with grid filtering to ensure good repartition
- New software to align reconstructions based on common cameras (using UID)
- New Alembic file format to store sparse point cloud and cameras
- Integration of new CCTag markers with CPU and CPU implementations
- SfM use UID
- Support for cameras RIG calibration and localization based on opengv
- Camera lens calibration based on opencv
- New camera localization module
- SfM speedup by precomputing tracks visibilities and adjusting BA thresholds
- New Image Matching based on vocabulary tree approach
- Features extraction and features matching parallelization on multiple computers for renderfarm usage
- First public source code release of the SfM pipeline