Visual Geometry Toolkit

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

Marine Data Science · Kiel University

Ecosystem

Nine packages built on one core. An arrow points from a package to a package it depends on (indirect dependencies omitted); dashed nodes are the papers each package accompanies. Click a node to open it.

flowchart TB
    LODR@{ img: "icons/lodr.svg", label: "LocalOptimizationDoneRight.jl", pos: "b", w: 72, h: 72, constraint: "on" }
    BB@{ img: "icons/blobboards.svg", label: "BlobBoards.jl", pos: "b", w: 72, h: 72, constraint: "on" }
    VGEval@{ img: "icons/vgeval.svg", label: "VisualGeometryEval.jl", pos: "b", w: 72, h: 72, constraint: "on" }
    PL@{ img: "icons/poselib.svg", label: "PoseLib.jl", pos: "b", w: 72, h: 72, constraint: "on" }
    RVG@{ img: "icons/rvg.svg", label: "RobustVisualGeometry.jl", pos: "b", w: 72, h: 72, constraint: "on" }
    VGF@{ img: "icons/vgf.svg", label: "VisualGeometryFeatures.jl", pos: "b", w: 72, h: 72, constraint: "on" }
    RSDR@{ img: "icons/rsdr.svg", label: "RansacScoringDoneRight.jl", pos: "b", w: 72, h: 72, constraint: "on" }
    VGIo@{ img: "icons/vgio.svg", label: "VisualGeometryIo.jl", pos: "b", w: 72, h: 72, constraint: "on" }
    VGC@{ img: "icons/vgc.svg", label: "VisualGeometryCore.jl", pos: "b", w: 72, h: 72, constraint: "on" }

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

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

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

    classDef paper stroke-dasharray:4 3
    class P1,P2,P3 paper

    click VGC href "https://visualgeometrytoolkit.github.io/VisualGeometryCore.jl/" _blank
    click VGIo href "https://github.com/VisualGeometryToolkit/VisualGeometryIo.jl" _blank
    click VGF href "https://github.com/VisualGeometryToolkit/VisualGeometryFeatures.jl" _blank
    click VGEval href "https://github.com/VisualGeometryToolkit/VisualGeometryEval.jl" _blank
    click RSDR href "https://ransacscoringdoneright.github.io" _blank
    click RVG href "https://visualgeometrytoolkit.github.io/RobustVisualGeometry.jl/" _blank
    click PL href "https://github.com/VisualGeometryToolkit/PoseLib.jl" _blank
    click LODR href "https://localoptimizationdoneright.github.io" _blank
    click BB href "https://blobboards.github.io" _blank
    click P1 href "https://arxiv.org/abs/2606.27385" _blank
    click P2 href "https://arxiv.org/abs/2610.05743" _blank
    click P3 href "https://arxiv.org/abs/2608.28830" _blank
    

Packages

VisualGeometryCore.jl

Geometric primitives, transforms, camera models, coordinate frames and normalization, and the minimal solvers and robust-estimation building blocks the rest of the toolkit shares.

VisualGeometryIo.jl

Serialization for transforms and cameras: a COLMAP model reader and writer, and a small self-describing JSON schema for named rigid transforms with explicit units.

VisualGeometryFeatures.jl

Feature detection, description and matching: ASIFT detection and nearest-neighbour matching in one KernelAbstractions implementation for the CPU and GPUs.

VisualGeometryEval.jl

The shared evaluation base: dataset readers, correspondence pools, statistics and bootstrap intervals, cross-validated tuning and the experiment framework.

RansacScoringDoneRight.jl

Scale-free marginal RANSAC scoring with CPU and GPU evaluators: rank hypotheses without knowing the inlier scale.

RobustVisualGeometry.jl

Robust estimation for geometric vision: the RANSAC loop, local-optimization engines, and problems for lines, homographies, fundamental and essential matrices and absolute pose.

PoseLib.jl

Julia bindings to the PoseLib C++ library: minimal solvers for relative and absolute pose, homographies and fundamental matrices, and its robust refiners.

LocalOptimizationDoneRight.jl

The local-optimization evaluation engine: refit, score and compare LO strategies for essential, fundamental and homography estimation under one budget.

BlobBoards.jl

Blob marker boards: author printable boards, detect and identify them in images, and estimate their pose from hundreds of blob correspondences.

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

using Pkg
Pkg.add("VisualGeometryCore")

Feature detection and matching

using Pkg
Pkg.add("VisualGeometryFeatures")

Robust estimation

using Pkg
Pkg.add("RobustVisualGeometry")
# brings VisualGeometryCore and RansacScoringDoneRight

A paper's package

Pkg.add("RansacScoringDoneRight")      # NeurIPS 2026
Pkg.add("LocalOptimizationDoneRight")  # ACCV 2026
Pkg.add("BlobBoards")                  # BMVC 2026

The packages are being registered in the Julia General registry. Until a package is registered, add it from its GitHub repository: Pkg.add(url = "https://github.com/VisualGeometryToolkit/<Name>.jl").

Papers

NeurIPS 2026

RANSAC Scoring Done Right

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

ACCV 2026

Robust Local Optimization Done Right

James Pritts, Kevin Köser

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