DEV Community

humnaattique4-sys
humnaattique4-sys

Posted on

Case Study: Fixing a Failed 3D Reconstruction of Shalimar Gardens' Moorcroft Pavilion

Problem

The first attempt (V1) to reconstruct the Moorcroft Pavilion at Shalimar Gardens using COLMAP Structure-from-Motion nearly failed: only 2 of 15 input cameras were successfully registered, and the sparse point cloud contained just 42 points — far too sparse to represent the structure. The reconstruction was effectively unusable, and the root cause wasn't obvious from the COLMAP logs alone.

My Role

I owned this reconstruction end-to-end for the AI-Based 3D Scene Reconstruction track: sourcing images, running the COLMAP pipeline, diagnosing the failure, and redesigning the input dataset. This was not a group task — the debugging and the fix were my own work.

Process

  1. Diagnosed the failure: reviewed COLMAP's feature-matching and camera-registration output and traced the low registration count to weak image overlap — the V1 image set didn't have enough shared visual features between consecutive shots for COLMAP to triangulate camera poses reliably.
  2. Rebuilt the dataset: went back to Wikimedia Commons and curated a new image set of the Moorcroft Pavilion selected specifically for tight, consistent overlap between adjacent viewpoints, rather than just visual variety or coverage.
  3. Re-ran the pipeline (V2): same COLMAP configuration, new image set.
  4. Verified the result: confirmed all 15/15 cameras registered and checked the resulting sparse point cloud density and coverage against the pavilion's actual geometry.
  5. Documented it: wrote up the full debugging story as a DEV.to technical walkthrough, and updated the project README.

Evidence

  • Repository: humnaattique4-sys/shalimar-gardens-3d-reconstruction — commit history shows the V1 attempt, the image set swap, and the V2 run
  • DEV.to walkthrough post documenting the V1→V2 debugging process
  • COLMAP output logs / sparse reconstruction stats for both runs (camera registration count, point count)

Sparse point cloud output from the V2 COLMAP run (842 points, 15/15 cameras registered):

Result

  • Camera registration improved from 2/15 to 15/15
  • Sparse point count improved from 42 to 842
  • The pipeline went from an unusable reconstruction to a complete, usable one — and the specific cause (image overlap, not camera count or COLMAP settings) is now documented for reuse on the other heritage sites in the project.

What I Learned

Image overlap density, not just image quantity or coverage, is the binding constraint for Structure-from-Motion pipelines like COLMAP. A larger image set with poor overlap performs worse than a smaller, carefully curated one. This also taught me to read COLMAP's intermediate output rather than only judging a run by whether it completed.

Next Improvements

  • Apply the same overlap-curation approach proactively to future sites before the first COLMAP run
  • Add a lightweight pre-check to catch weak overlap before running the full pipeline
  • Extend the V2 dataset with a few additional angles to further densify the point cloud for downstream mesh generation

Top comments (0)