The release of the database includes 3 parts for each
example: the raw measurement, the fitted BRDF parameters, and the STAF
factorization. Due to the space limitation, we can not release all the
1,280 raw measurements. Instead, we selected 1 view and 6 lighting
directions (thus 6 measurement in total) for each example at each time
step. The structure of the database, for example, tvBTF09, is as
coordinates of the points on the sample
measurements at each time step, raw data
There are 26 samples in this database. Each sample has a unique id,
from "tvBTF09" to "tvBTF45" (see here for a list of the samples). Take tvBTF09 as an example, the name
convention of the database will be given as follows, step by step:
This file saves some information of the path of the files, the number
of time steps, the size of the images,
and so on. It is used to process the data. It is extracted from
This file has the time information of each time step when we did the
measurement. It is extracted from tvBTF09-info.txt
This file describes more information regarding the sample scan:
1) Texture Size
This folder has the information of the coordinates (2D and 3D) of the
points on the sample. For example, the resolution of the images in
tvBTF09 is 512x512. That means there are 512x512 points on the sample.
The 3D coordinates of these points can be found in the file btfInfo/texturePoints3d.txt,
and the 2D coordinates of
these points from each of the 16 views can be found at btfInfo/texturePoints2d_xx.txt,
where xx is the id of
the view from 00 to 15.
2) Exposure used
3) Spectralon sample used for normalization
4) Scan setting as seen from the SphereControl dome program
5) Time stamp of each interval
This folder has the measurements (raw data) of this sample. As
mentioned, due to the space limitation, we only provided 6 measurements
(1 view and 6 lighting directions) at each time step. The name
convention is as follows:
where LLL is the light
index (from 000 to 149), VV is the view index (from 00 to 15, see here for an explaination of the
dome), and TT is the time index (form 00 to the time steps recorded for this sample).
The image is in the EXR format. This is a format for HDR
(high dynamic range) image. Please refer here for the information of
The raw data can be used in various ways. For example, in the BRDF
fitting phase which will be explained right below, we do feel that
neither the BRDF model we used nor the fitting method is perfect,
especially for the specular parameters. One could try to use other
types of BRDF models (e.g. Oren-Nayar + Full Torrance-Sparrow or
Anisotropic Model), or other more robust fitting algorithm
with these raw data.
This folder has the fitted BRDF parameters at each time step for this
sample. In our work, the BRDF model we used is defined as follows:
where there are 5 parameters: 3 for Kd (R,G,B), 1 for Ks, and 1 for
Sigma. NOTE: Sigma defined in the above formula is different from the Sigma used in the original paper(Equation 1) for numerical reason. Their relationship is simple: Sigma_defined_here=1/(Sigma_in_paper)^2. So at each time step, we have
3 EXR images to represent these parameters:
where TT is the time
index. The first one is a color image with R/G/B three channels for Kd.
The other two are grey level images for Ks and Sigma, respectively.
This folder has the STAF model results. The STAF model we proposed is
defined as follows:
In this model, p(x,y,t)
is one of the 5 BRDF parameters we have already fitted, and the
variables in this model are the following 4 textures and 1 curve:
the scale factor in the amplitude axis
the scale factor in the time axis
the offset factor in the time axis
the offset factor in the amplitude axis
the overall temporal curve
For each of the 5 BRDF parameters, we did the above STAF factorization.
The results, for example, for the Kd parameters, are saved in the
following files under this directory:
The 4 texture images are easy to understand. For the txt file for the
curve \phi(t), for each curve
we listed the name of the curve, the points on the curves, the order of
the polynomial used to fit the curve, the bandwidth of the kernel. Then
the followed two lines are the values of the points on the
curves, at the time-axis and the amplitude-axis, respectively. The last
line is the polynomial fitting
results. For example, the curve of Kd in the red channel looks like:
#point 100 #polynomial 7 bopt_r 0.065215
strav_t_r: -0.121077 -0.108424 -0.095770 ......
strav_r: 0.807958 0.790653 0.772969 ......
pphi_r: 16.695722 -52.611800 58.813562 -26.188925 3.397970 -0.657741 0.635968
We also included a figure to show these curves. For example, the R/G/B
curves for Kd looks like this
Our implementation of the algorithm (in Matlab) to estimate the STAF
model can be downloaded here
Note that there are few samples that can not get robust STAF
factorization either for the specular BRDF parameters (Ks and Sigma),
or for all the BRDF parameters The possible reasons are as follows:
- The BRDF fitting for the specular parameters is not
- The specularity is almost zero for these samples.
- There are no obvious time variation in the appearance
(i.e. the appearance remains almost constant over time).
Below is the list of these samples:
- No STAF for Ks/Sigma: tvBTF20, tvBTF28, tvBTF38, tvBTF43
- No STAF: tvBTF34
Images in this database are saved in EXR format. EXR can be viewed as a
float-point image type, used to represent HDR (High Dynamic Range)
images. Compared with directly writing float point value to a
file, EXR uses a "Half" type and has an internal compress algorithm to
reduce the size of the image. More information about EXR format and
library to read/write EXR images
in C/C++ (and also a PhotonShop plugin) can be found at OpenEXR website. There is also a set of handy tools for EXR manipulation
In our study, I only used it to write a 3-channel float-point value
image (for grey level images, the values in the 3 channels are the
same), and did not use any fancy features in OpenEXR. I wrote two
simple matlab functions to read/write EXR images for this simple usage.
Download here (790 KB). Micah Kimo Johnson also wrote
a very nice Matlab tool for read/write EXR images here.