Highlights
New Pipelines
- Color Calibration: Automated color correction from color charts
- Raw to EXR conversion: Professional image format processing
- Object Reconstruction: Targeted reconstruction with automatic object segmentation
- Turntable Object Reconstruction: Streamlined workflow for rotating object capture
- 360° Object Reconstruction: Reconstruction of complete dual-sided scanning
- LiDAR Processing: Native E57 file import with integrated mesh generation
- Multi-View Photometric Stereo: Advanced surface detail reconstruction with multiple light sources for each viewpoint.
Pipelines Improvements
- Camera Tracking pipeline: improved stability and reliability
- Introduced experimental fine-grained pipelines for increased modularity and workflow flexibility
Core Enhancements
- Python Bindings Integration: Enhanced AliceVision accessibility with native Python support for streamlined Machine Learning workflows
Major Features
- Add initial Python binding with SWIG PR
- First Lidar Meshing Application PR
- Multiple shots: Align and merge multiple SfM from feature matches PR
- [meshroom] Add color calibration pipeline PR
- [pipeline] New photogrammetry of the two sides of an object PR
- [pipeline] New pipeline for object reconstruction from a turntable PR
- [pipeline] New pipeline for the photogrammetry of an object using AI semantic segmentation PR
- Add E57 importer PR
- Add rawImageConversion pipeline PR
- [meshroom] Add new "Lidar Meshing" template PR
Features
- ApplyCalibration: Lens Calibration is done on Open Gate plates, but camera tracking could be done on cropped plates PR
- [software] new MeshRemoveUnseenFaces software PR
- [core] Separate Camera and Distortion Types in Model Naming PR
- PLY loader to SfMData landmarks PR
- Lidar decimation and merging PR
- Add New Undistortion Models PR
- Undistortion Calibration PR
- [Photometric Stereo] MultiView fusion in Texturing PR
- Colorizing node PR
- [sfm] New sfmFilter software: split sfm based on filenames regex PR
- [export] Add export of animated distortion in Nuke PR
- Use lidar as constraints in sfm PR
- Enable merging of multiple sfms PR
- [build] SwigBinding: Add support for the Python binding with SWIG on Windows PR
- New tool to import external Alembic files with an animated camera PR
- Add masks to export images PR
- features detector checks for mask in a region PR
- Add numpy to python bindings PR
- Add module image to python bindings PR
- RelativePoseEstimating accepts an image pairs list to reduce complexity PR
- SwigBinding: Add Python binding for
matchingImageCollection
IO functions PR - [sfm] Add new parameters to the SfM process PR
- [doc] README.md: Add DeepWiki link, the AI documentation you can talk to PR
Other Improvements
- Start Development 3.3.0 PR
- Add estimator states to sfmdata PR
- Update Color Space Extraction from image Metadata PR
- ImageSegmentation: add an option to choose between cpu and gpu PR
- Fix validity check on distortion object PR
- Enhance controllability and readability by ensuring non direct access to data members PR
- Export lens grid undistorted PR
- Pixel Aspect Ratio application PR
- Add Bundle Adjustment unit tests PR
- Remove specifics required by Eigen prior to C++17 PR
- Remove Boost-Filesystem and replace it with the
std::filesystem
PR - Clean-up
.clang-tidy
and applycamelBack
case on functions and variables for some modules PR - Add option to keep input filename in imageSegmentation PR
- [software] Disable clang-format around program options PR
- [software] Apply clang-formatting on all the executables PR
- FeatureExtraction: Add analytical fisheye mask PR
- [sfmData] Rename functions and files to respect case rules PR
- Remove all remaining references to Boost-Filesystem PR
- Add aarch64 support (adjust PR1616) PR
- Add camera color spaces PR
- Rename Python
aliceVision
module intopyalicevision
PR - E57 importer is now generating multiple sfmData PR
- Clean and rework meshing code PR
- [sfm] Handle specific alignment case for pure translations PR
- [sfm] Sequential: Update default value for Ransac's max iterations PR
- [keyframe] Set default values for some uninitialized variables PR
- [aliceVision] Minor bugfixes across the project PR
- SwigBinding: Extend the binding of
camera
and add initial binding for other modules PR - Option to Remove absolute paths to linked libraries PR
- [software] New SelectConnectedViews software PR
- [software] KeyframeSelection: Update default minimum number of keyframes PR
- [mesh] visibility from mesh itself: check point is in camera frustum PR
- Catch error codes thrown by
std::filesystem::exists
PR - Add missing standard header include PR
- Export radial3 distortion to nuke PR
- [pipeline] FeatureMatching: Update default value for Ransac's maximum number of iterations PR
- [Cmake] split sfm library PR
- [sfm] update tracks PR
- Solve a set of bugs on cameraInit PR
- anisotropic bounds for sfm PR
- Add SfM Expanding application PR
- ApplyCalibration: Add option to use a Lens calibration file from 3dequalizer in json PR
- Use focal length from json and fix typos in parameters PR
- Add locks for intrinsics PR
- sfmTransform: Add option to lineup camera motion with object/lidar given an external camera pose PR
- Distortion export for pipelines without lens grids PR
- [hdr] Upgrade on HDR brackets estimation PR
- Clean up focal length and change anamorphic model PR
- [sfmData] ImageInfo: Add support for ARRI- and DJI-specific focal length metadata PR
- Depth/normal maps rendering from Mesh PR
- Remove imageCache code from alicevision PR
- [utils] Pose injection from JSON file PR
- Merge symbolic and automatic SfM PR
- Add global rotation estimation app PR
- Add SWIG binding of camera shared pointers PR
- Adding logs to sfmExpanding PR
- [docker] Fix export of
ALICEVISION_*
environment variables PR - Build OpenCV with FFmpeg on Linux PR
- [docker] Update CUDA minor version to 12.1.1 PR
- Clarify check-cpu.sh documentation PR
- Update sfmBootstraping parameters PR
- Add Equirectangular camera support for SFM PR
- sfmMerge can merge Intrinsics PR
- Mask processing app PR
- Fix typos in README and PR template PR
- Output second sfm for visualisation PR
- Fix typos in src/aliceVision PR
- Reduce intrication of distortion with intrinsics PR
- Adding logs to export USD PR
- Fix typos in src/software PR
- Fix source typo in software/pipeline/main_lightingCalibration.cpp PR
- Fix various remaining typos PR
- fix sfmMerge PR
- Versatile image exporting PR
- Fix error on generated depthmap EXR PR
- Upgrade compilation options and CI for C++20 support PR
- Multiple lineup at different frames PR
- Fix some remaining typos PR
- Remove unused "ci" folder PR
- [sfmDataIO] Fix Alembic dependency requirement for unit test PR
- Survey Injection PR
- [meshroom] Add AliceVision nodes and templates for Meshroom PR
- Reduce compilation warnings and clean-up files PR
- [meshroom] ExtractMetadata: Move
pyalicevision
import into theprocessChunk
method PR - [docker] Copy
meshroom
folder to be able to install nodes and templates PR - Color checker detection and correction update PR
- Fix division zero at Texturing PR
- Add
TracksMerging
node and partially add the tracks module to the Python binding PR - Deep merging of multiple tracks sets without using original matches PR
- [utils] Image Processing: Add simultaneous support for regex and input folders PR
- Add application to generate virtual tracks PR
- Upgrade experimental pipelines for better integration in Meshroom PR
- [docker] Ubuntu: Use CMake from standard repo instead of Kitware's PR
- [meshroom] CamTrack: Provide
PrepareDenseScene
with segmentation masks PR - [sfmData] Add focal length naming convention PR
- Global binding PR
- [utils] Optimize
exportImages
application when only undistort is needed PR - [meshroom]
SketchfabUpload
: Importrequests
at the function-level PR - Update image module of Python binding PR
- SwigBinding: Add binding for the
feature
andmatching
modules PR - [meshroom] Use CamelCase for all attribute labels PR
- Update python test with oiio metadata writing PR
- Add more logging to new pipeline PR
- Output modified sfmData in exportImages PR
- Force Pixel Aspect Ratio in Distortion Calibration PR
- Improve SWIG Module Type Sharing for Enhanced Interoperability PR
- [blender] Fix .obj import for blender 4 PR
- Improving python bindings for image and feature modules PR
- SwigBinding: Add support of Landmarks PR
- SwigBinding: Expose ProgressDisplay PR
- Add parallelization tool to optimize chunk computation distribution PR
- [meshroom] Fix missing connection in "CameraTracking without calibration experimental" pipeline PR
- [meshroom]
ImportAlembic
: Add missing period in file extensions PR - [meshroom] ScenePreview: Hide backfaces in 3D render PR
- [meshroom]
MultiViewPhotometricStereo
: Add missingPublish
node PR - [nodes] Blender: Rescale rendered images based on their pixel aspect ratio PR
- [nodes] ExportDistortion: Option to export lens grid undistorted PR
- [nodes] ImageProcessing: New option to apply the Pixel Aspect Ratio PR
- [pipelines] Enable
Keep Filename
for allImageSegmentation
nodes in templates PR - [pipelines] Panorama: Enable "Minimal 2D Motion" for
FeatureMatching
PR - [pipelines] PanoramaFisheyeHdr: Run
FeatureExtraction
afterPanoramaInit
PR - [pipelines] PhotogAndCamTrack: Update matching mode to "Exhaustive" PR
- [nodes] ImageSegmentation: Support loading masks in 2D Viewer if they are named after the input images PR
- [nodes] CameraInit: check allowedCameraModels validity PR
- [nodes] Use utilitary constants for common
ChoiceParams
lists of values PR - [nodes] ExportAnimatedCameras: rename as ST maps (instead of UV) PR
- [pipelines] NodalTracking: Apply masks in
ScenePreview
PR - [nodes] New node MeshRemoveUnseenFaces PR
- [nodes] StructureFromMotion: Update default value for the maximum number of Ransac iterations PR
- [nodes] CameraInit: Separate Camera and Distortion Types in Model Naming PR
- [nodes] Update the ressources needs for the SFM node PR
- [nodes] New SelectConnectedViews node PR
- [nodes] KeyframeSelection: Update default minimum number of keyframes PR
- [nodes] ExportanimatedCamera: change default value for the principal point correction PR
- [nodes] FeatureMatching: Update default value for the maximum number of Ransac iterations PR
- [nodes] ImageProcessing : use keepImageFilename attribute PR
- [nodes] Fix outputImages if no export in ExportAnimatedCamera PR
- [nodes] Blender scripts: Add missing
__init__.py
PR - [nodes] SphereDetection: Increase max value for
sphereRadius
PR - [nodes] Use principal point in scenePreview PR
- [nodes] ApplyCalibration: Add option to use a Lens calibration file from 3dequalizer in json PR
- [pipelines] Add distortion export for templates without calibration PR
- [nodes] Use bindings for HDR brackets estimation PR
- [nodes]
LightingCalibration
: Exclude visualization output from command line PR - [nodes] LdrToHdr: Move import of
pyalicevision
within functions PR - [nodes] Add new
SfMChecking
node PR - [pipelines] PhotogCamTrack: Invert masks for segmentation PR
- [nodes] Add Global Rotation Estimating node PR
- [nodes]
ExportDistortion
: Add animated distortion option PR - [nodes] Fixed spelling mistake in FeatureExtraction.py PR
- [pipelines] Experimental: Align and set colors for all nodes PR
- [nodes] Add nodes for versatile image exporting PR
- [nodes] Replace
desc.Node.internalFolder
with{nodeCacheFolder}
PR - [pipelines] Nodal Camera Tracking: Add a new template with the calibration of the distortion PR
- [nodes] Add new
SfMPoseInjecting
node PR - [meshroom] Fix
ambient
typo on MVPS template PR
Bugfixes
- [image] io: Rely on OIIO to determine if an image file exists or not PR
- Fix typo in bundle adjustment unit test PR
- [docker] Fix the build of Docker images for Ubuntu PR
- EXR STMaps use floating point precision PR
- Add fstream include to import e57 PR
- [release] fix script to check dependencies PR
- ExportAnimatedCamera export alembic with complete cameras information PR
- [sfmData] fix relative to absolute path conversion for features/matches folders PR
- fix camera pose lock I/O PR
- Fix pipeline when LdrToHdrMerge is used on single brackets PR
- Fix crash on convert distortion PR
- Minor checks and log PR
- [image] Fix erroneous color space detection for images that contain "raw" in their filepath PR
- Fix SfM when using undistortions PR
- Add missing
fstream
include in ApplyCalibration PR - [software] PanoramaSeams: Check that the input is not empty PR
- Inverted flag check in intrinsics PR
- fix alembic I/O PR
- [utils] Fix applyCalibration logic for isDesqueezed PR
- [pipeline] sfmBootstraping: Fix inversion between min and max PR
- [FuseCut] Fix: Check cam vertex validity in meshing PR
- Add standard include for fstream PR
- [segmentation] Image segmentation CPU bugfix and ONNX output update PR
- fixed bug in sfmExpanding PR
- SfmBootstrapping: Fix bug when parallax angles are less than 1 degree PR
- Update minimal required CMake version to 3.5 for all modules PR
- [src] Fix dependencies depending on build options PR
- [track] Use
std::map
instead ofstd::unordered_map
to represent Tracks PR - Update SWIG code to remove errors PR
- [docker] Dependencies: Add a symlink to
python3
to makepython
callable PR - [image] Remove
static
keyword fromisSupported
andgetSupportedExtensions
PR - [fix] Remove invalid default value in ldr2hdrCalibration PR
- [Dependencies] Adapt code to new Eigen PR
- Fix bug in sfmMerge PR
- [mesh] Fix mesh appearing whitened in 3D viewer PR
- [MVS] meshPostProcessing: bugfix in the cleanup of removed free points PR
- [sfm] statistics: fix statistics to avoid troubles in particular cases PR
- Update experimental pipelines PR
- Remove hack with Custom camera model PR
- [pipeline] Adding missing link in photogrammetry pipeline PR
- [Fix] Initialize resectionid depending on previous sfm PR
- Update json utility functions PR
- Remove error or warning for some compilers PR
- Fix nodal pipeline including scenePreview crash PR
- Update the solver's parameters for more robust unit tests PR
- [meshroom]
PhotogrammetryObjectTwoSides
: Remove hard-coded paths to models PR
CI, Build and Documentation
- [doc] Fix RTD build + other fixes/improvement of the doc PR
- [cmake] AllInOne: update to suitesparse-7.3, ceres-2.2 PR
- [ci] Update link to the VCPKG archive for the Windows CI PR
- [docker] Fix the build of Docker images for Ubuntu PR
- [cmake] Dependencies: Update zlib version to 1.3.1 PR
- [build] Add
libe57format
as an internal dependency PR - [build] Add
libe57format
as an internal dependency PR - [build] Update the list of installed features for OpenImageIO with VCPKG PR
- [build] Update Geogram to 1.8.8 PR
- Fix coverage in cmake PR
- Update boost and oiio dependencies PR
- Remove OpenMesh from internal dependencies PR
- Add condition to check dependency MeshSDFilter folder PR
- libE57Format in Copying.md PR
- Externalize nanoflann PR
- MeshSDFilter: Remove submodule PR
- [ci] Windows: Add appropriate flags to compile with CUDA < 12.1 PR
- [build] Fix some C++17 incompabilities PR
- [build] Update SWIG version to 4.3.0 PR
- CI: Move from CentOS to Ubuntu for Linux PR
- [docker] Add Dockerfiles for Rocky 9 PR
- [cmake] Update download link for Boost 1.84.0 PR
- [src] Comply with nanoflann >= 1.6.0 changes PR
- [ci] Windows: Only install necessary components from the CUDA Toolkit PR
- [ci] Windows: Update vcpkg archive with latest dependencies versions PR
- [ci] Windows: Update vcpkg archive with SWIG support PR
- [ci] Update the path to the segmentation nodes for Meshroom in the CI PR
- Update minimal required CMake version to 3.5 for all modules PR
- [src] Fix dependencies depending on build options PR
- [track] Use
std::map
instead ofstd::unordered_map
to represent Tracks PR - Update SWIG code to remove errors PR
- [docker] Dependencies: Add a symlink to
python3
to makepython
callable PR - Dependencies update PR
- [src] Update DLL discovery in
__init__.py
for the binding on Windows PR - Update Dockerfiles PR
- [docker] rocky: update gxx and enable cctag PR
- [ci] Windows: Update vcpkg archive with 2025.07.08 tag PR
- [build] Enable the build of OpenCV's and OpenImageIO's Python bindings PR
- [doc] Update
INSTALL.md
PR - [doc] README.md: Add DeepWiki link, the AI documentation you can talk to PR
- [cmake] Dependencies: Update OpenCV to 4.12.0 PR
Updates to the Sensor Database
- Add ASUS_I01WD (Asus ZenFone 6) to sensorDB PR
- Adding Google Pixel 6a to cameraSensors.db PR
- Update cameraSensors.db PR
- Update cameraSensors.db PR
- Update cameraSensors.db PR
- Update Fairphone cameraSensor PR
- Fairphone 5 cameraSensors.db fix PR
- [cameraSensors] OMNIVISION uctronics and gophotonics PR
- [cameraSensors] fix Samsung SM-G998B PR
- [cameraSensors] Add DJI Mini 2 SE PR
- Added insta360 x3 sensor to db PR
- [sensordb] Fix typo of 'OnePlus' devices PR
- [sensordb] OnePlus 8 Pro PR
- Fix Sonx RX0 II camera model PR
- Update cameraSensors.db Sony ILCE-6700 PR
- Update cameraSensors.db PR
- Update cameraSensors.db DJI Mini3Pro PR
- Update cameraSensors.db with Pixel 8 and Pixel 8 Pro PR
- Update cameraSensors.db PR
Contributors
ahdistefano, albertoporri, Alxiice, AncoraIo36, andrewgreen5610, apirek, Armado001, balloonalpha, c-ewing, Cal-Bur, cbentejac, CedricThebault, demoulinv, Erol444, EternalUnderperformer, fabiencastan, heyvian, ICIbrahim, JackBoosY, jmelou, luzpaz, maggo1404, male4a, mh0g, natowi, NicholasFlamy, paweller, predat, servantftransperfect, simogasp, theremygit, woutkolkman