Visual Geometry
Toolkit

by James Pritts

Julia packages for multi-view geometry: primitives, features, robust estimation, RANSAC scoring, evaluation, fiducial markers and calibration

Marine Data Science · Kiel University

Ecosystem

Ten packages built on one core. Each package builds on the ones above it (direct dependencies, as the stack's dependency allow-list permits them; edges implied through another package are omitted). A dashed arrow is an optional dependency (package extension); the dashed pills are the papers the packages accompany. Click a node to open it.

flowchart TD
    VGC["<img class='nicon' src='icons/vgc.svg' width='24' height='24'>VisualGeometryToolkitCore"]
    VGF["<img class='nicon' src='icons/vgf.svg' width='24' height='24'>VisualGeometryToolkitFeatures"]
    VGIo["<img class='nicon' src='icons/vgio.svg' width='24' height='24'>VisualGeometryToolkitIO"]
    RVG["<img class='nicon' src='icons/rvg.svg' width='24' height='24'>VisualGeometryToolkitEstimation"]
    PL["<img class='nicon' src='icons/poselib.svg' width='24' height='24'>PoseLib"]
    RSDR["<img class='nicon' src='icons/rsdr.svg' width='24' height='24'>RANSACScoringDoneRight"]
    LODR["<img class='nicon' src='icons/lodr.svg' width='24' height='24'>LocalOptimizationDoneRight"]
    VGEval["<img class='nicon' src='icons/vgeval.svg' width='24' height='24'>VisualGeometryToolkitEval"]
    BB["<img class='nicon' src='icons/blobboards.svg' width='24' height='24'>BlobBoards"]
    PS["<img class='nicon' src='icons/panorama.svg' width='24' height='24'>PanoramaStitching"]

    VGC --> VGF
    VGC --> VGIo
    VGC --> RVG
    VGC --> PL
    VGC --> RSDR
    VGIo --> VGEval
    RVG --> VGEval
    RVG --> LODR
    PL -.-> LODR
    VGF --> BB
    VGIo --> BB
    RSDR --> BB
    LODR --> BB
    VGF --> PS
    RVG --> PS

    P1(["NeurIPS 2026"])
    P2(["ACCV 2026"])
    P3(["BMVC 2026"])

    RSDR -.- P1
    LODR -.- P2
    BB -.- P3

    class P1,P2,P3 paper

    click VGC href "https://visualgeometrytoolkit.github.io/VisualGeometryToolkitCore/" _blank
    click VGIo href "https://visualgeometrytoolkit.github.io/VisualGeometryToolkitIO/" _blank
    click VGF href "https://visualgeometrytoolkit.github.io/VisualGeometryToolkitFeatures/" _blank
    click VGEval href "https://visualgeometrytoolkit.github.io/VisualGeometryToolkitEval/" _blank
    click RSDR href "https://ransacscoringdoneright.github.io" _blank
    click RVG href "https://visualgeometrytoolkit.github.io/VisualGeometryToolkitEstimation/" _blank
    click PL href "https://visualgeometrytoolkit.github.io/PoseLib/" _blank
    click LODR href "https://localoptimizationdoneright.github.io" _blank
    click BB href "https://blobboards.github.io" _blank
    click PS href "https://visualgeometrytoolkit.github.io/PanoramaStitching.jl/dev/" _blank
    click P1 href "https://arxiv.org/pdf/2606.27385" _blank
    click P2 href "https://arxiv.org/pdf/2610.05743" _blank
    click P3 href "https://arxiv.org/pdf/2608.28830" _blank
    

Packages

Image

VisualGeometryToolkitCore.jl

The types and algorithms of multiple-view geometry: coordinate frames, camera and lens models, geometric primitives, projective transforms and minimal solvers, with physical units throughout, and the contracts the toolkit's robust estimators implement.

pkg> add VisualGeometryToolkitCore · General

Image

VisualGeometryToolkitIO.jl

File formats for the stack: cameras, poses, rigs, trajectories and target measurements as self-describing JSON files that declare their conventions (pixel frame, length unit, rotation encoding, pose direction), plus COLMAP models and databases.

pkg> add VisualGeometryToolkitIO · General

Image

VisualGeometryToolkitFeatures.jl

Feature detection, description and matching: ASIFT detection and nearest-neighbour descriptor matching in one KernelAbstractions implementation for the CPU and every GPU backend.

pkg> add VisualGeometryToolkitFeatures · General

Image

VisualGeometryToolkitEstimation.jl

Robust estimation for geometric vision: one generic RANSAC loop and the problems for lines, homographies, fundamental and essential matrices, absolute pose, radial cameras, relative-pose bundle refinement, and hand-eye and robot-world calibration.

pkg> add VisualGeometryToolkitEstimation · General

Image

VisualGeometryToolkitEval.jl

The evaluation package: pose-error statistics with bootstrap intervals, cross-validated hyperparameter tuning configured in TOML, an evaluator that composes a RANSAC scorer with a local optimizer, pool and dataset readers, and a framework for reproducible experiments.

pkg> add VisualGeometryToolkitEval · General

Image

PoseLib.jl

Julia bindings to PoseLib, the C++ library of minimal solvers and robust refiners for camera pose estimation by Viktor Larsson and contributors.

pkg> add PoseLib · General

Image

RANSACScoringDoneRight.jl

The scale-free marginal score for RANSAC: the best inlier partition with the inlier scale integrated out, so no inlier threshold is set, plus baseline scorers and CPU and GPU pool evaluators.

pkg> add RANSACScoringDoneRight · General

Image

LocalOptimizationDoneRight.jl

The paper's robust local optimizers, ready to compose into any RANSAC of the stack, for essential matrix, fundamental matrix and homography estimation.

pkg> add LocalOptimizationDoneRight · CauRegistry, General pending

Image

BlobBoards.jl

A fiducial marker system: printable boards covered in a dense, multi-scale field of Gaussian blobs, found, identified and posed from hundreds of blob correspondences on the CPU or a GPU.

pkg> add BlobBoards · CauRegistry, General pending

Image

PanoramaStitching.jl

The panorama of a camera that only rotated, through a calibrated lens of any field of view (fisheyes past 90° included): frame rotations by RANSAC on bearings, robust rotation averaging and a rotation bundle.

pkg> add PanoramaStitching · CauRegistry, General pending

Get started

There is no meta-package: add the package for what you want to do, and its dependencies come with it. The packages require Julia 1.12.

Geometry primitives, cameras and transforms

pkg> add VisualGeometryToolkitCore

Feature detection and matching

pkg> add VisualGeometryToolkitFeatures

Robust estimation

pkg> add VisualGeometryToolkitEstimation
pkg> add RANSACScoringDoneRight   # NeurIPS 2026 scorer

From CauRegistry, until General merges

pkg> registry add https://github.com/prittjam/CauRegistry.jl
pkg> add LocalOptimizationDoneRight   # ACCV 2026
pkg> add BlobBoards                   # BMVC 2026
pkg> add PanoramaStitching

VisualGeometryToolkitCore, VisualGeometryToolkitIO, VisualGeometryToolkitFeatures, VisualGeometryToolkitEstimation, VisualGeometryToolkitEval, PoseLib and RANSACScoringDoneRight are in the Julia General registry. LocalOptimizationDoneRight, BlobBoards and PanoramaStitching are in CauRegistry, with their General registrations pending; add CauRegistry once, as above.

Publications

Image

Software

The Visual Geometry Toolkit

Cite the packages you use with this entry, and the papers below for their methods.

Image

NeurIPS 2026

RANSAC Scoring Done Right

James Pritts, Felix Seegräber, Kevin Köser

Image

ACCV 2026

Robust Local Optimization Done Right

James Pritts, Kevin Köser

Image

BMVC 2026

BlobBoards: Robust Markers for Accurate Pose

James Pritts, Till Sittart, Hendrik Sauer, Silja Janßen, Felix Seegräber, David Nakath, Kevin Köser