cv  by rust-cv

Rust CV: Computer vision algorithms, abstractions, and systems in Rust

created 5 years ago
933 stars

Top 40.0% on sourcepulse

GitHubView on GitHub
Project Summary

This repository provides a comprehensive suite of computer vision algorithms and abstractions implemented purely in Rust, aiming to encapsulate the capabilities of libraries like OpenCV and OpenMVG. It targets developers building computer vision systems, offering a cohesive API for tasks ranging from image processing to photogrammetry and vSLAM, with a focus on performance and safety.

How It Works

The project is structured as a monorepo containing multiple Rust crates, each dedicated to specific computer vision domains. It emphasizes a #[no_std] compatible implementation where possible, allowing for embedded use cases. The core approach involves reimplementing established algorithms and providing abstractions for camera models, feature matching, and geometric estimation, drawing inspiration from established C++ libraries like TheiaSfM.

Quick Start & Requirements

  • Install Rust: curl https://sh.rustup.rs -sSf | sh
  • Install build dependencies on Ubuntu 20.04: sudo apt install cmake build-essential libfreetype-dev libxkbcommon-dev
  • Clone and build: git clone https://github.com/rust-cv/cv.git && cd cv && cargo build
  • Documentation: https://rust-cv.github.io/cv/
  • Tutorial Book: https://rust-cv.github.io/cv/

Highlighted Details

  • Implements algorithms for photogrammetry, including SfM and visual SLAM.
  • Features include Gaussian blur, histogram equalization, edge detection (Canny, Sobel, Scharr), and perceptual hashing.
  • Supports feature extraction (AKAZE, FAST, ORB, SIFT) and camera models (Pinhole, Fisheye, Equirectangular).
  • Includes descriptor matching, consensus algorithms (RANSAC, ARRSAC), and motion estimation.

Maintenance & Community

The project is a monorepo consolidating previously separate repositories. All new contributions should be made to this repository. The README mentions inspiration from TheiaSfM.

Licensing & Compatibility

The project consists of multiple crates, each with its own license, predominantly MIT. This generally allows for commercial use and linking with closed-source applications.

Limitations & Caveats

While strong in photogrammetry and feature extraction, the project acknowledges weaknesses in image processing and pattern recognition domains, with ongoing development planned for these areas. Some features are marked as incomplete or not yet packaged.

Health Check
Last commit

1 week ago

Responsiveness

1 day

Pull Requests (30d)
1
Issues (30d)
0
Star History
37 stars in the last 90 days

Explore Similar Projects

Feedback? Help us improve.