A Coaxial Optical Scanner for Synchronous Acquisition of 3D Geometry and Surface Reflectance

Michael Holroyd
University of Virginia
Jason Lawrence
University of Virginia
Todd Zickler
Harvard University

Abstract:

We present a novel optical setup and processing pipeline for measuring the 3D geometry and spatially-varying surface reflectance of physical objects. Central to our design is a digital camera and a high frequency spatially-modulated light source aligned to share a common focal point and optical axis. Pairs of such devices allow capturing a sequence of images from which precise measurements of geometry and reflectance can be recovered. Our approach is enabled by two technical contributions: a new active multiview stereo algorithm and an analysis of light descattering that has important implications for image-based reflectometry. We show that the geometry measured by our scanner is accurate to within 50 microns at a resolution of roughly 200 microns and that the reflectance agrees with reference data to within 5.5%. Additionally, we present an image relighting application and show renderings that agree very well with reference images at light and view positions far from those that were initially measured.

Documents:

A Coaxial Optical Scanner for Synchronous Acquisition of 3D Geometry and Surface Reflectance

@article{Holroyd10,
  author  = {Michael Holroyd and Jason Lawrence and Todd Zickler},
  title   = {A Coaxial Optical Scanner for Synchronous Acquisition of {3D} Geometry and Surface Reflectance},
  journal = {ACM Transactions on Graphics (Proceedings of SIGGRAPH 2010)},
  year    = {2010}
}

A radiometric analysis of projected sinusoidal illumination for opaque surfaces

@techreport{Holroyd10b,
  author      = {Michael Holroyd and Jason Lawrence and Todd Zickler},
  title       = {A radiometric analysis of projected sinusoidal illumination for opaque surfaces},
  number      = {CS-2010-7},
  institution = {Department of Computer Science, University of Virginia},
  year        = {2010}
}

Methods for the Synchronous Acquisition of 3D Shape and Material Appearance

@phdthesis{HolroydThesis,
  author      = {Michael Holroyd},
  title       = {Methods for the Synchronous Acquisition of 3D Shape and Material Appearance},
  school      = {University of Virginia},
  year        = {2010}
}

Results:

Data:

If you have questions or are interested in some other data from this project please e-mail Michael Holroyd.
For example, you might prefer the raw BRDF measurements obtained at each vertex, or individual 2.5D scans.
Geometry:
SVBRDF:
bird.ply (24MB)
bird.fac (35MB)
frog.ply (10MB)
frog.fac (15MB)
cat.ply (7MB)
cat.fac (18MB)

Each object has a .ply file that contains the triangle mesh, as well as a .fac file that contains linear blending weights for each vertex and a small set of basis BRDFs. The basis BRDFs are represented as regularly sampled single variable functions of the angle between the surface normal and half-angle vector.

The .fac file starts with a single ASCII line header with 3 integers.

M N K
M: The number of vertices (the same number as is in the .ply file)
N: The number of samples in the basis BRDFs (either 128 or 256)
K: The number of basis BRDFs (either 3 or 6)

Next is a block of 3*K*M binary floating point numbers that represent the blending weights. The whole thing is split into a block for each pixel, which is split into a block for each color channel, which has the K blending weights in it. In other words access it with: weights[3*K*pixelIdx + K*colorIdx + basisIdx]

Finally, there is a block of 3*K*N binary floating point numbers that represent the K basis BRDFs each sampled regularly in the halfangle. Access them with basis[3*(N*basisIdx + angleIdx) + colorIdx] where angleIdx = N * 2 * acos(n dot h) / pi;

Note that the .ply file also contains a color at each vertex, which is just the average color over the N sampled directions. Mostly this is just useful for testing and doesn't actually correspond to the diffuse albedo.

Sample code for reading files: