Real-world lighting often consists of multiple illuminants with different spectra. Separating and manipulating these illuminants in post-process is a challenging problem that requires either significant manual input or calibrated scene geometry and lighting. In this work, we leverage a flash/noflash image pair to analyze and edit scene illuminants based on their spectral differences. We derive a novel physicsbased relationship between color variations in the observed flash/no-flash intensities and the spectra and surface shading corresponding to individual scene illuminants. Our technique uses this constraint to automatically separate an image into constituent images lit by each illuminant. This separation can be used to support applications like white balancing, lighting editing, and RGB photometric stereo, where we demonstrate results that outperform state-of-theart techniques on a wide range of images.
CVPR 2018 (Oral)
We provide additional results in the supplementary docs.
We provide our codebase here, please cite our paper when you use the code.