Releases: zlogic/cybervision
Releases · zlogic/cybervision
Version 0.20.1
- Bumped up dependency versions.
- Refactored code and addressed some of the new Cargo Clippy feedback.
Version 0.20.0
Significant accuracy and quality improvements:
- Adjusted cross-correlation parameters to extract more data, and rely on the cross-check filter to remove errors and noise.
- Using matches from fundamental matrix to estimate image pose (improve performance and rely on more solid data than cross-correlation)
- Use a depth buffer to detect polygon obstruction and output rendered images (improves accuracy and significantly boosts performance)
- When merging track, average tracks instead of consuming them; by checking that all tracks follow the same direction, filter outliers
- Removed minimal angle filter (it's not as robust as it seemed originally)
- Fixed focal distance formula (it's supposed to use diagonals, not width)
- Adjust some parameters based on image size, to improve handling of larger images
- Removed requirements for points to be far apart in P3P
- Use point projections to build mesh (instead of original image) - as P3P and bundle adjustment can move cameras
Other changes:
- Better logging
- Option to limit number of points (avoid generating a mesh that doesn't fit into memory)
- Removed point normals, as they just used extra memory and caused artefacts in the macOS preview
Version 0.19.2
Small improvement release:
- Bumped up dependency versions
- Switched to Github's ARM runners for macOS, recompiled Metal shaders
- Refactored error handling code
- Addressed Clippy comments
Version 0.19.1
- Improved support for low-power GPUs (fixed regression from 0.19.0)
- Fixed the help text
- Updated to Rust 1.77
- Updated dependency versions, including
nalgebra
to fix accuracy in some use cases
Version 0.19.0
Refactored code and reduced number of external dependencies:
- Adjusted a few parameters, ensure they scale correctly with image size
- Using a custom Grid type instead of nalgebra DMatrix
- Avoid weird conversion between row/column and x/y coordinates
- Allow for custom optimizations in the future (if needed)
- Replaced wgpu with a lower-level GPU implementation
- Reduced binary size and number of dependencies
- Use GPU APIs in the most optimal way possible (e.g. copy data directly to GPU if it shares memory with the host)
- Precompile & validate shaders during the build, instead of during runtime
- Keep GPU through the entire process - skip re-loading the Vulkan library
- Reduced image correlation memory usage by 50%
- Tweaked correlation parameters for perspective projection - less data, but higher quality
- Fixed small bugs in GPU shaders implementation
- Fixed vertex color output for OBJ files
Some of the changes might have fixed historical, difficult-to-find bugs and improved overall robustness.
Version 0.18.0
Improvements in accuracy and general output results:
- Optimize the fundamental matrix and use more matching points for validating it
- Use a peak/noise filter from the Photo Tourism paper; while it reduces noise, it will discard points that are too far away
- Match all images with each other, instead of just adjacent ones
- Choose the best initial image pair
- Fixed polygon obstruction detection when constructing a mesh from more than one image
- When determining camera pose, prefer points that are far apart
- Improve image output
- Add polygon point normals
- Deduplicate polygons that are visible on multiple images and connect the same points
- Output texture coordinates for all images, provide a bit more attributes in the Alias|Wavefront OBJ material files
Version 0.17.0
Significant improvements in reconstructing images with perspective projection.
- Switched to 7-point algorithm for detecting the Fundamental Matrix
- Optimize Fundamental Matrix using Levenberg-Marquardt least squares
- Match keypoints using ORB descriptors instead of using cross-correlation
- Use focal length from EXIF data to create an accurate projection matrix
- Use analytical formula for rotation matrix (and switch to Rodrigues' formula)
- Several bugfixes in sparse bundle adjustment significantly improve the end result (SBA finally works now!)
- Sparse bundle adjustment runs several times faster, without using additional RAM
- Detect and discard backprojected points
- Improved outlier filter
- Create interpolated meshes for SFM (more than 2 images)
- Windows version no longer requires the Visual C++ Runtime
- Reduced the binary size
Version 0.16.0
- Improved reconstruction of photos (perspective projection)
- Added experimental support for structure-from-motion (reconstruct a 3D object from multiple views)
- Results can be noisy and sometimes fail
- Interpolation only works when 2 or less images are reconstructed
Version 0.15.1
Bumped up dependency versions.
Version 0.15.0
Significant improvements in performance and accuracy:
- A new peak filter now eliminates noise more effectively, without discarding good data points
- A few adjustments in the algorithm increase speed (up to 2x-3x) without affecting accuracy
Finally, perspective projection (for regular photos) now works - with real projection matrices instead of a "disparity" map.