Michael Holroyd  
Hey! This site is old.
back to index

Office: Small Hall email: meekohi@cs.virginia.edu AIM: meekohi 
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 spatiallyvarying surface reflectance of physical objects. Central to our design is a digital camera and a high frequency spatiallymodulated 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 imagebased 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:
@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} }
ACM SIGGRAPH paper [pdf] (16.6 MB)  
Supplemental Tech Report: A radiometric analysis of projected sinusodial illumination for opaque surfaces [pdf] (600 KB)  
SIGGRAPH Powerpoint [zip] (43 MB) 
Results:
Data:
If you have questions or are interested in some other data from this project please email Michael Holroyd.
For example, you might prefer the raw BRDF measurements obtained at each vertex, or individual 2.5D scans.
For example, you might prefer the raw BRDF measurements obtained at each vertex, or individual 2.5D scans.
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 halfangle 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: