The minimially processed input data include photographs (with intrinisic and extrinsic camera parameters) and triangle mesh geometry (registered to the photographs) for our fish and elephant examples. The processing required to produce this data is described in our SIGGRAPH 2000 paper.
The images are in PPM file format. A "index.cams" file included with the images contains camera parameters for each photograph. Each line in the index.cams file has one line per image in the following format:
filename x y z q_i q_j q_k q_r cx cy ar f k
The values of each line have the following meaning.
filename | image filename |
x,y,z | location of camera eye / center of projection (in meters) |
q_i,q_j,q_k,q_r | quaternion representing camera orientation (real value LAST!) |
cx,cy | location of optical axes in image (in pixels) |
ar | pixel aspect ratio (> 1 means pixels are wide) |
f | focal length (in pixels) |
k | radial distortion |
NOTE: The radial distortion parameter, k, is in terms of the standard vertical pixels, not the horizontal pixels. First subtract out the location of the optical axis, then multiply the x value by the aspect ratio. Then you can undo the radial distortion. It's barely necessary though.
NOTE: I now believe that using pixel units was a mistake (never important enough for me to change.) Using pixels means you have to know the resolution of the image to understand the camera parameters. Furthermore, you can't transparently use down-res images for testing purposes. I suggest you run a simple awk script to adjust the parameters cx,cy, and f (and k) to be in other units. (FYI, the images are 640x480.)
NOTE: Images with obvious shadows (where the gantry aparatus moved in front of the lights) were manually removed from the .cams file. The indexplus.cams file includes even the shadowed images.
The object shapes are represented as triangle meshes. The ply files have vertex elements and face elements. The vertex elements include properties "x","y", and "z" for the location of the vertex (again in meters) and properties "nx", "ny", and "nz" for the normal. The face element has only one element: a list of vertex indices, where the vertices are numbered from zero.
More information on the ply file format files can be found here. Alternatively I have included simple text versions of the meshes. The text files have two numbers indicating the number of vertices and faces on the first line. Then every vertex is on a line with six values representing position and normal. Finally the faces are encoded, each on a separate line, as three vertex indices.
NOTE: The "blocking" mesh includes some hand-made geometry that represents the platform the objects sat on while they were photographed. The platform occludes the object in some photographs so this is needed to properly use the image data. The hand-made geometry is meant to be a rough and conservative estimate of the platform. The blocking meshes don't have normals.
NOTE: Sadly the elephant mesh doesn't have normals at all. They got lost. Furthermore, the elephant mesh is likely of lower fidelity than the fish mesh.
Not yet. Later, perhaps, estimated surface light fields, parameterized meshes, more??