← all repositories
Fyusion/LLFF

Turn 20 vacation photos into a 3D flythrough

SIGGRAPH 2019 code that synthesizes novel views from sparse handheld images using multiplane image representations.

1.7k stars C++ Computer VisionOther AI
LLFF
Velocity · 7d
+0.7
★ / day
Trend
steady
star history

What it does Feed it 20–30 handheld photos of a static scene and it spits out camera poses, layered depth representations (MPIs), and rendered videos along smooth paths—circle, spiral, or straight lines. There’s also an interactive OpenGL viewer if you want to wander around manually.

The interesting bit The “local light field fusion” angle: instead of building one giant scene model, it promotes each input image to its own MPI and blends neighboring light fields on demand. This keeps memory sane and handles sparse, irregular capture patterns better than monolithic approaches. The CUDA renderer is ~100× faster than the TensorFlow fallback, which is a polite way of saying the TF path exists for debugging, not production.

Key highlights

  • Pretrained TensorFlow model included; no retraining required for inference
  • COLMAP integration for automatic pose recovery, plus documented poses_bounds.npy format if you have your own
  • Docker image (~6 GB) with most dependencies pre-baked; manual install needs CUDA, TensorFlow, COLMAP, ffmpeg
  • OpenGL viewer with mouse-driven translation/rotation and scroll-to-zoom
  • Capture guidelines are concrete: max ~64 px disparity, keep closest object within ~1/8 of horizontal FOV between shots

Caveats

  • OpenGL viewer doesn’t work inside Docker; needs host GLFW install
  • README notes some machine configurations hit illegal memory access in COLMAP feature extraction, with a workaround mentioned but truncated
  • Static scenes only; any movement breaks the illusion

Verdict Worth a spin if you have a pile of tourist photos and want to fake a drone shot. Skip it if you need real-time performance or dynamic scenes; this is batch-render research code, not a product.

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