← all repositories
snavely/bundler_sfm

The granddaddy that turns vacation photos into 3D point clouds

A foundational C toolkit that reconstructs camera positions and sparse 3D geometry from unordered image collections, one incremental bundle adjustment at a time.

1.6k stars C Computer Vision
bundler_sfm
Velocity · 7d
+0.3
★ / day
Trend
steady
star history

What it does

Bundler ingests a pile of JPEGs, extracts SIFT features, matches them across image pairs, then incrementally reconstructs where each camera was and what sparse 3D structure it saw. The output is a bundle file with camera intrinsics, extrinsics, and colored 3D points—plus PLY files you can inspect in scanalyze. It also ships with Bundle2PMVS to feed denser multi-view stereo pipelines.

The interesting bit

This is the original Photo Tourism system from Snavely, Seitz, and Szeliski’s 2006 SIGGRAPH paper—effectively the ancestor of modern COLMAP-style pipelines. The “bundle” in Bundler refers to bundle adjustment, and it uses a modified Sparse Bundle Adjustment engine (Lourakis & Argyros) with an optional Ceres solver swap for larger problems. The incremental reconstruction—adding a few images at a time, optimizing, repeat—is still the textbook approach.

Key highlights

  • Handles unordered image collections (read: random Flickr dumps) without prior camera knowledge
  • Estimates focal length from EXIF via jhead, then refines it per-camera during optimization
  • Includes radial distortion correction (k1, k2) and a utility to undistort images post-hoc
  • Python wrapper (bundler.py) automates the full pipeline: focal extraction → SIFT → matching → reconstruction
  • Optional Ceres integration for faster bundle adjustment on large datasets (uncomment USE_CERES=true in Makefile)

Caveats

  • Requires external SIFT binary from David Lowe’s site, plus jhead, ImageMagick, and PIL—it’s not a self-contained binary
  • Primarily tested on Linux; Windows support is Cygwin or an old VS2005 solution file
  • The README warns that feature matching “can take a while,” which is 2006-speak for “go make coffee”

Verdict

Grab this if you’re teaching SfM fundamentals, reproducing classic results, or need a lightweight, hackable baseline. Skip it if you want a modern, GPU-accelerated, batteries-included pipeline—COLMAP exists now.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.