Photometric Stereo Tutorial Series Ian Hales delivers a practical pathway for mastering shape from shading and surface reconstruction. Each video focuses on measurable lighting, calibrated cameras, and robust normal estimation, helping viewers translate theory into repeatable results.
The series balances concise explanations with implementation detail, guiding learners through data capture, preprocessing, and validation. By following structured workflows, you can build a dependable photometric stereo pipeline for real-world scenes.
| Tutorial Phase | Key Goal | Ian Hales Approach | Outcome |
|---|---|---|---|
| Setup and Calibration | Control lighting and camera geometry | Checkboard patterns, fixed lighting rigs | Metrically consistent data |
| Image Acquisition | Capture consistent normal maps | Multiple light positions, fixed object | High signal-to-noise images |
| Normal Estimation | Solve linear system for surface normals | Least-squares with per-pixel optimization | Dense, reliable normal fields |
| Shape Reconstruction | Integrate normals to height map | Poisson integration and boundary alignment | Watertight 3D shape |
Foundations of Photometric Stereo
Lighting Geometry and Assumptions
This section defines directional lighting, Lambertian reflection, and linearity conditions. You learn how to validate the light-on-surface assumptions that make photometric stereo tractable.
Camera Model and Calibration
Ian Hales walks through pinhole projection, distortion correction, and rig alignment. Precise camera calibration reduces reprojection error and supports metric reconstruction quality.
Capturing Reliable Image Sets
Light Position Design
Choose grids, spheres, or structured sequences that cover the unit hemisphere evenly. Balanced coverage improves condition numbers and reduces ambiguity in normal solutions.
Exposure and Consistency Control
Fixed ISO, white balance, and focus settings prevent stitching artifacts. The tutorial emphasizes metadata logging so that every light vector maps precisely to its source direction.
Normal Estimation and Validation
Linear Solver Implementation
Using the normalized linear system, you implement per-pixel least-squares. Ian Hales highlights numerical stability tricks such as scaling and rank checking.
Quality Maps and Thresholding
Confidence masks highlight low-texture regions and outliers. Thresholds on residual error and normal length help filter unreliable pixels before integration.
Shape Reconstruction and Refinement
Integration Methods
Poisson surface reconstruction and height-field integration are compared. You evaluate trade-offs in smoothness, detail preservation, and boundary adherence.
Mesh Optimization and Export
Ian Hales covers remeshing, hole filling, and format conversion. These steps prepare the output for downstream tasks like texture transfer or 3D printing.
Applying Photometric Stereo in Production
- Define consistent calibration targets for each session
- Log lighting directions and camera metadata rigorously
- Run condition-number diagnostics before trusting normals
- Combine photometric stereo with silhouette refinement for closed geometry
- Iterate on albedo and roughness priors when texture matters
FAQ
Reader questions
How do I choose light positions for my photometric stereo setup?
Use a uniform coverage strategy such as a sphere shell or geodesic pattern, ensuring that light vectors span the hemisphere and avoid planar degeneracies. Validate by inspecting the condition number of the lighting matrix.
What camera settings minimize stitching errors in the image sequence?
Lock exposure, gain, and white balance; disable auto-focus; and synchronize capture with lighting position changes to prevent parallax and blur across views.
Why does my reconstructed surface appear noisy despite good lighting?
Noise often stems from non-Lambertian effects, reflections, or miscalibration. Apply spatial regularization, refine albedo estimates, and verify that your camera and light geometry assumptions hold.
How can I integrate normals into a watertight mesh reliably?
Use robust solvers like Poisson reconstruction, apply boundary constraints, and postprocess with hole filling and fairing. Validate with cross-section checks and manifold checks before export.