Skip to content

2019.2 release notes

natowi edited this page Aug 15, 2019 · 1 revision

Changes compared to 2019.1


Update cameraSensors.db

100+ models added, some corrections

[matching] fix debug distance value

AKAZE: sort keypoints by size before grid filtering

Sort keypoints by size to guarantee best points are kept. Reordering keypoints also helps preventing grid-filtering from creating a non-uniform distribution within cells when input keypoints are sorted by spatial coordinates. Improve AKAZE grid filtering

[FeatureMatching] Prefix output matches files when using "ranges" to avoid overwrites

Introduce an automatic prefix system for matches files when using "range" command-line parameters. The goal of this PR is to ensure a file created for one iteration does not get overwritten in another one.

When generating matches files per image, we rely on minimal viewId of each image pair to create the filename (minViewId.txt). By iterating over sorted viewIds which only match with greater viewIds, this guarantees that files are written only once. However, the latter condition can be broken in the current pipeline when the file generated by the ImageMatching step declares for one view [B] a match with a view [A] that has an inferior viewId. This occurs when [A] has reached max view matches; the [A,B] view match is moved to [B]. If [A] and [B] are handled in two distinct iterations (1) and (2), "A.txt" will be first written in (1) and overwritten in (2). All matches from (1) are then lost.

By automatically prefixing matches files based on "range" parameters and generating only one matches file per execution by default, this guarantees uniqueness of generated files. This also changes the loading of matches files, which will now consider all "*matches.txt" files in the given folder. This behavior is retro-compatible with previously generated files. Features list

FeatureMatching: Generate a prefix for matches files based on range parameter FeatureMatching: Generate only one matches file per execution by default IO: Load all '*.matches.txt" file in given folder and accumulate matches IO: Update IndMatch_IO test IO: Remove duplicated input folders when loading matches/features

SfmData: manage features/matches folders internally (relative paths, duplicates removal...)

Implementation remarks

Prefix is created by dividing rangeStart/rangeSize which reflects the iteration number when working by chunks. This is preferred to random naming for debug purposes.

Features Viewer #539

Based on QtAliceVision plugin, provide a viewer for extracted feature points within the 2D Image Viewer. Provides 3 visualization modes: Points, (scaled) Squares, Orientated Squares FeatureExtraction nodes can be double clicked to drive which node is used for the FeaturesViewer Component is loaded dynamically to evaluate QtAliceVision plugin availability - an error is displayed if the plugin fails to load. A picker with a predefined palette is available to select feature points colors

[mvs] make search for undistorted images more robust

[Dense point cloud]

This PR adds the possibility to export a dense point cloud as a SfMData file (.abc, .json, ...). Features list

Use dense point cloud instead of visibilities / mesh binary files in Meshing software Add an option to export the raw (before cut and filtering) dense point cloud in Meshing software Improve SfM colorization performances Rename ComputeSfMColor to exportColoredPointCloud

[depthMap] Add similarity volumes debug export

3 similarity volumes are now exported with debug option exportIntermediateResults:

similarity volume before reduction
similarity volume after reduction
similarity volume after filtering

[depthMap] Add option to create normal maps

[depthMap] add missing dependencies to sfmData/sfmDataIO modules

[depthMap] bug fix: missing allocation when reducing the number of planes

[depthMap] fix crash if no nearby camera

Fix alicevision/meshroom#409 A bug on depth map computation has been introduced in AliceVision-2.1.0 release (corresponding to Meshroom-2019.1). This problem only happens when badly connected cameras have been reconstructed in the SfM. Implementation remarks

The function "refinerc" do not deal with files anymore. The file manipulation has been moved to a more high-level function. Unfortunately, one early-exit condition has not been updated during this refactoring. This PR fixes this mistake.

[mesh] texturing: performance optimization of image fusion

[X] Contribution to multiple textures per image. It limits the number of images reloads from files. Around 3x speedup on a dataset of 250 images. [X] Texture padding speedup: Create the padding with only 2 loops over the texture instead of 2*padding loops. So the performance cost does not depend on the size of the padding anymore. 28% speedup on a small dataset of 12 images. Of course, the speedup be smaller on large datasets as the largest part of the processing will be the image contributions.

[mesh] fix uv coordinates for UDIM format

[mesh] Texturing: Multi-band blending

Largely improve the texturing quality by using multi-band blending technique.

Split each input camera into frequency bands, by calculating its laplacian pyramid. For each output texture file, it computes the texture fusion per frequency bands with different number of contributions. The color averaging is now weighted by a score defined by the triangle reprojection area. The textures per frequency bands are then combined to create the final output texture files. Features list

Split an image in frequency bands and reconstitute the image from its frequency bands Add triangles contributions to a specific frequency band

Improve padding performance (2 image visit instead of 2*paddingSize)

Implementation remarks

Add colorspace option to ImageCache Improve colorspace option of writeImage (allow change of input colorspace)

[Texturing] UVAtlas: downscale charts to fit in texture

Fix infinite loop when charts are larger than final texture size. Fix #395 Features list

downscale charts to fit in texture

add sanity checks to avoid infinite loop and detect wrong configurations

Implementation remarks

Apply downscale factor to fit larger charts into the texture, and use it when filling atlases and computing final UV textures

[Texturing] Add option to correct exposure values during Texturing #538

[Texturing] Add support for UDIM UV mapping

[Texturing] Add option to choose the internal colorspace used for color fusion

Advanced parameter : boolean to choose whether or not to correct images exposure values (EV) during the Texturing. See alicevision/AliceVision#656.

Add an option to choose the internal colorspace used in texturing for color fusion: sRGB (default), LAB or XYZ. This has no impact on the colorspace used in the output texture files. Features list

Convert images from/to sRGB, LAB and XYZ colorspaces New class to handle image processing, based on OpenImageIO

Compute texture colors in a chosen colorspace

Implementation remarks

Reorganization of image processing classes. Thus, the imageIO class handle only the reading and writing part, and the new class imageAlgo handle the image processing part. Both are based on OpenImageIO for efficiency.

BundleAdjustmentCeres should #include alicevision_omp.hpp

resolves compilation error

[imageIO] ColorSpace Fix

Read / Write EXR and TIFF with Linear colorspace Convert JPEG and PNG to Linear colorspace in memory Write JPEG and PNG with sRGB colorspace

Fix LocalBA intrinsics edges management

This PR fixes 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. Features list

Update internal map _intrinsicEdgesId when a view is removed from the graph Don't duplicate connections between new poses when adding them to the graph

Add LocalBundleAdjustmentGraph::countEdges/countNodes methods

Implementation details

Internal data structure containing edge IDs by intrinsic (_intrinsicEdgesId) is now properly updated to match changes in the underlying lemon graph when a view is removed from it. This avoids removing wrong edges (leading to potential corruption of the graph) when locking an intrinsics.

New [LDR2HDR] software

Add Robertson HDR algorithm Add HDR command line Add Debevec HDR algorithm Add Grossberg HDR algorithm Add parameters to control target exposure and extreme radiance values in HDR image

[software] exportColoredPointCloud

Viewer3D: add support for vertex-colored meshes

Related to alicevision/AliceVision#661 Enables the display of vertex-colored meshes in the 3D Viewer, by using a PerVertexColorMaterial if vertex color data is available on a mesh without textures.

Status and Log minor fixes #548

Minor bugfixes related to status file monitoring and log display.

Graph: update ChunkMonitor after "saveAs" to monitor correct filepaths when cache folder changes TextFileViewer: wait for previous request to finish before sending a new one to prevent freezes on slow filesystems

Minor bugfixes #561

This PR contains small bugfixes regarding ChunkMonitor + updates issues in the 3D viewer. ChunksMonitor

Simplify NodeChunk status monitoring by storing status file last modification time on the NodeChunk itself and avoid stopping/restarting the thread each time the list of NodeChunks in the graph changes. Also add "Refresh Node Status" menu item to force the update of nodes status manually. Viewer3D

Switch to RenderSettings.Always to avoid update issues since Qt 5.13 when resizing the window or toggling visibilities of 3D objects.

[bin] Fix project creation from custom pipeline #567

This PR fixes a problem when using a custom pipeline in meshroom_photogrammetry: the views and the intrinsics that might have been read before from the a json/sfm file were not added to the graph, thus leading to failure when calling cameraInit in AliceVision.

[11:25:25.780397][error] Program need -i or --imageFolder option

CMake and build fixes

Clone this wiki locally