Skip to content

Releases: zlogic/cybervision

Version 0.20.1

03 Sep 19:46
Compare
Choose a tag to compare
  • Bumped up dependency versions.
  • Refactored code and addressed some of the new Cargo Clippy feedback.

Version 0.20.0

01 Jun 20:11
Compare
Choose a tag to compare

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

11 May 19:28
Compare
Choose a tag to compare

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

07 Apr 18:23
Compare
Choose a tag to compare
  • 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

09 Feb 00:50
Compare
Choose a tag to compare

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

14 Jan 20:52
Compare
Choose a tag to compare

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

23 Aug 21:59
Compare
Choose a tag to compare

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

17 May 18:15
Compare
Choose a tag to compare
  • 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

23 Apr 14:31
Compare
Choose a tag to compare

Bumped up dependency versions.

Version 0.15.0

02 Apr 20:07
Compare
Choose a tag to compare

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.