Instructor: Dr. Craig M. Wittenbrink
Office: Applied Science Bldg. #153A
HP Phone: (650) 857 2329
UCSC Phone: (408) 459 4099
For project 1 and 2 there will only be a written report, no demonstration. The lab writeup will be collected at the beginning of class on the date due. Lab Environment: Computer Engineering/Computer and Information Sciences educational lab. Silicon Graphics Indy's, Octanes, and Indigos.
Location: Applied Sciences 299
Lab Hours: Any time, but you need a keycode
Project 2 consists of the following requirements
Voxel coloring uses the consistency of colors between different viewpoints to perform a volumetric reconstruction by back projection into a set of images. The algorithm requires computing whether colors match, and also whether pixels have been occluded. For further details see the notes from CS260 Lecture 6 . For this project, there are 21 images provided in PPM format, d0.ppm, d1.ppm, ..., d20.ppm. For each image, there is also provided a camera calibration file *.cpcc, such as d0.cpcc,d1.cpcc, ...
The camera parameters are saved in a file, d0.cpcc, and consist of the parameters as desribed in Tsai's [2] paper. For this implementation the parameters are given in the order(Ncx, Nfx, dx, dy, dpx, dpy, Cx, Cy, Sx, f, kappa1 , Tx, Ty, Tz, Rx, Ry, Rz, NA, NA). Example code is provided to read the *.cpcc file in project 1. Note again, that the images have had the radial distortion removed so that kappa1 need not be reapplied.
Some other files are included, to demonstrate how to read and write ppm images, which are often convenient for small research or class programs, look in the source code program, dewarp.c. Additional source files are provided from Wilson's implementation of Tsai's code, to provide examples of how the transformations are performed with the parameters, and example is also shown of how to read the *.cpcc data from a file.
For more information see the README with the code distribution, or refer to Lecture 6 . .
A volume renderer for reconstructed volumes is anticipated to be made available, but most code we have runs on HP's. Once a port has been completed to SGI/PC Win32, the renderer will be posted. The simplest volume format for your program to output is a raw volumes into color (volume.r.vox, volume.g.vox, volume.b.vox) and alpha volumes (volume.alpha.vox), and provide an ascii descriptor file that tells what the size is (volume.des). The description file looks something like this:
volume.des contents: xsize 32 ysize 32 zsize 29 xscale 1.000000e+00 yscale 1.000000e+00 zscale 1.000000e+00 xcoarse 1 ycoarse 1 zcoarse 1So that the size of the volume is 32x32x29, and the volume is scaled uniformly in all 3 dimensions. The addressing into the raw volume may be something like: ADDRESS(X,Y,Z,XSIZE,YSIZE) ((X) + (Y)*(XSIZE) + (Z)*(XSIZE)*(YSIZE)). Along with the renderer will be provided routines to read unsigned char array from file, into memory in z, y, x order, so x varies most quickly, y next, and z after that.
References
[1]
[2] Roger Y. Tsai ``A Versatile Camera Calibration Technique for
High-Accuracy 3D Machine Vision Metrology Using Off-the Shelf TV Cameras
and Lenses", IEEE Journal of Robotics and Automation, Vol. RA-3, No. 4, Aug
1987, pages 323-344.
[3] OpenGL Programming Guide, Second Edition, (version 1.1) Woo et
al. 1997.
[4] OpenGL Reference Manual, Second Edition, (version 1.1) OpenGL
ARB, 1997.
[5] The OpenGL Graphics System: A Specification (Version 1.2), Mark Segal
and Kurt Akeley), Version 1.2, Mar 23, 1998.
(PDF)
Copyright, Craig Wittenbrink, 1998-1999. craig_wittenbrink@hpl.hp.com Last modified Friday, 05-Feb-1999 18:17:33 PST.
Back to the CE / CS Class Home Pages.
Back to the CE / CS Home Page.