Skip to content

What is Iris? ​

Iris is a fast computer vision library written entirely in pure Rust. It leverages the Burn framework for GPU/CPU tensor computations — memory safe, type safe, with no external C/C++ dependencies.

Key Goals ​

  1. Pure Rust Ecosystem: Keep dependencies clean, safe, and fully compiled under the Cargo toolchain.
  2. Familiar CV API: Provide developers with a clean, modern API covering Image I/O, Filters, Gradients, Contour tracking, Cameras, Drawing, and Detection.
  3. Deep Learning First: Out-of-the-box loading of ONNX and Safetensors models, powered by Burn backends (WGPU, CUDA, Metal, Ndarray).
  4. Multi-Threaded CPU Acceleration: All computationally intensive CPU operations are parallelized using Rayon, allowing high throughput when not running on a GPU.

Project Structure ​

Iris is designed with modularity in mind:

ModuleDescription
coreBasic matrix representations (Mat), geometric types (Point, Rect, Size, Scalar), and RNG utilities.
imageImage struct, file I/O, resizing, cropping, flipping, rotation, warping, and remapping.
filtersBox blur, Gaussian blur, median filter, bilateral filter, separable 2D filtering, distance transform, and more.
edgesCanny edge detection, Sobel, Scharr, Laplacian, Hough lines, and Hough circles.
morphologyDilation, erosion, opening, closing, and custom structuring elements.
thresholdBinary, Otsu, triangle, and adaptive thresholding.
colorRGB/HSV/HLS/XYZ/Lab/YUV/YCrCb conversions, channel splitting and merging.
histogramHistogram computation, equalization, CLAHE, LUT, and comparison.
drawingLines, rectangles, circles, ellipses, text, polylines, arrows, and markers.
contoursContour detection, convex hull, moments, shape analysis, and matching.
featuresORB feature detection (FAST + BRIEF), keypoints, and BFMatcher.
optical_flowLucas-Kanade sparse flow and Farneback dense flow.
trackingMOSSE tracker, background subtraction, and mean-shift tracking.
photoNon-Local Means denoising and HDR merge (Mertens).
dnnONNX model loading, weight loaders, blob preprocessing, and NMS.
segmentationSemantic segmentation, connected components with stats, and watershed segmentation.
noiseGaussian, salt-and-pepper, and speckle noise generation.
cameraCamera capture and camera calibration.
faceFace detection and face recognition.
videoVideo capture, reading, writing, frame iteration, and metadata.
mlK-Means clustering.
inpaintingImage inpainting for restoring damaged or missing regions.
stereoStereo vision and depth estimation.
kalmanKalman filter for state estimation and tracking.
hogHistogram of Oriented Gradients (HOG) descriptor for object detection.
feature_matchingFLANN-based approximate nearest neighbor matching for feature descriptors.

Released under the MIT License.