Inspiration
A photograph can look complete while important details are missing.
This is especially challenging when digitizing large artworks, paintings, historical documents, or other flat surfaces that require multiple overlapping photographs. A stitched preview may look convincing, but it doesn't necessarily prove that every important region was captured clearly.
SurfaceLedger was built to answer a simple question: What did the camera actually capture, and what needs to be photographed again?
Instead of generating missing details or hiding uncertainty, SurfaceLedger makes capture quality measurable and traceable.
What it does
SurfaceLedger is an OpenCV-powered visual inspection tool that identifies missing coverage, weak image detail, and recapture opportunities in tiled artwork photography.
Users provide an overview image, overlapping detail photographs, and the physical dimensions of a planar subject.
SurfaceLedger then:
- Measures coverage: Identifies which regions are supported by actual source photographs.
- Evaluates image quality: Applies conservative focus and glare checks to captured areas.
- Detects missing regions: Highlights gaps and identifies the largest connected deficient region.
- Suggests recaptures: Shows where another photograph could improve coverage.
- Rejects unreliable matches: Prevents poorly aligned images from contributing false coverage.
- Tracks photographic evidence: Links supported image regions to their original source files.
- Exports results: Produces inspection reports, coverage masks, source-backed previews, and capture records.
The most important design principle is that SurfaceLedger never invents missing pixels to make an incomplete capture look complete.
How we built it
The computer vision pipeline is built with Python, OpenCV 5, and NumPy.
OpenCV's ORB feature detection identifies distinctive points across overlapping photographs. Feature matching and RANSAC-based homography estimation align the detail images with the overview.
The pipeline evaluates alignment confidence, spatial distribution, reprojection error, and geometric boundaries before accepting an image.
Accepted image samples contribute to a source-backed coverage map. Separate quality checks identify regions affected by insufficient focus or glare. Connected deficient regions are analyzed to identify practical recapture targets.
The browser interface uses JavaScript, HTML, and CSS, with IndexedDB supporting optional local session restoration.
The project also includes a containerized execution environment, an AWS Lambda adapter, and CloudFormation deployment configuration. An application container was uploaded to Amazon ECR as part of the AWS deployment preparation.
Challenges we ran into
Reliable image alignment
Overlapping photographs may contain repeated patterns, weak features, or insufficient spatial information. Accepting unreliable matches could produce misleading coverage measurements.
We addressed this through conservative registration checks and explicit rejection of unsupported alignments.
Measuring evidence instead of appearance
A visually plausible preview is not proof of successful capture. SurfaceLedger separates geometric reference information from actual photographic coverage.
An overview establishes the coordinate system but cannot fill missing source evidence.
Detecting actionable recapture regions
Rather than displaying only a coverage percentage, SurfaceLedger identifies connected deficient regions to make its findings useful during a photography session.
Maintaining traceability
Original-file hashes and source contribution records help connect reported coverage to the actual photographs used during analysis.
Accomplishments
SurfaceLedger's local implementation successfully demonstrates an end-to-end inspection and recapture workflow.
In a reproducible synthetic test fixture:
- Initial measured source coverage was 82.49%.
- Adding a targeted recapture increased measured coverage to 99.35%.
- All 96 evaluation grid cells met the configured thresholds after recapture.
- A blank, unsuitable image was rejected and contributed zero coverage.
The implementation also passed 17 computer vision pipeline tests, seven API tests, and nine browser workflow checks.
These results demonstrate the controlled test workflow rather than a general real-world accuracy benchmark.
What we learned
One of the most important principles in computer vision is that a plausible image and a well-supported measurement are not the same thing.
Strong visual inspection tools should be able to explain their conclusions, identify unsupported regions, and preserve the evidence behind their outputs.
SurfaceLedger demonstrates how feature-based registration, quality measurements, provenance tracking, and practical recapture guidance can work together without relying on generative reconstruction.
What's next
The next steps include completing and verifying the AWS-hosted processing environment, evaluating the system using real camera captures, improving registration robustness under challenging conditions, and expanding support for more diverse planar subjects.
Future enhancements could include automatic capture guidance, improved handling of reflections, and broader image-quality evaluation.
SurfaceLedger: Know what your camera actually captured.
Built With
- 5
- amazon
- amazon-web-services
- cloudformation
- computer
- css3
- docker
- ecr
- html5
- indexeddb
- javascript
- lambda
- numpy
- opencv
- orb
- playwright
- python
- ransac
- vision

Log in or sign up for Devpost to join the conversation.