← 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
Not currently ranked — collecting fresh signals.
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.

Frequently asked

What is snavely/bundler_sfm?
A foundational C toolkit that reconstructs camera positions and sparse 3D geometry from unordered image collections, one incremental bundle adjustment at a time.
Is bundler_sfm open source?
Yes — snavely/bundler_sfm is an open-source project tracked on heatdrop.
What language is bundler_sfm written in?
snavely/bundler_sfm is primarily written in C.
How popular is bundler_sfm?
snavely/bundler_sfm has 1.6k stars on GitHub.
Where can I find bundler_sfm?
snavely/bundler_sfm is on GitHub at https://github.com/snavely/bundler_sfm.

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