Shadow Scanning

Paul Blaer  psb15@cs.columbia.edu 
Naveed Hasan  naveed@cs.columbia.edu 
Corey Tripp  crt17@columbia.edu 
Lenny Volchok  lv71@columbia.edu

CONTENTS:
---------
Tsai-method-v3.0b3 -- Contains the Tsai camera calibration code.
                      Our camera calibration relies on it.
ccalib -- Contains our automatic camera calibration code.
find_light -- The light calibration code.
desk_scan -- The 3D point extraction code.
bin -- Location of all of the executables (once they have been built).
pcsc -- A java 3D point cloud viewer.
Makefile -- A top level makefile to build the entire project.

Compilation:
------------

All of these programs should be able to build on almost any unix machine
with a little bit of tweaking.  They are currently setup to compile on
linux machines.  You can compile the project on either ballast or conch
in the robotics lab, or you can use razor.cs.columbia.edu (a public
CS cluster machine that runs linux).  Any other recent linux distribution
should work also.

Type: make

This will build all of the executables (except for the point cloud viewer)
and copy them into the bin directory.

Usage:
------

See each lower level README for speific instructions on how to run
each of the programs.  However, here is a general overview of the
procedure:

1) Run ccalib to get the camera parameters.

2) Run find_light along with the output of ccalib to get the ligh
source position.

3) Run desk_scan using the parameters from the two previous steps to
compute the final point cloud

Getting Images:
---------------

I've included a sample set of images along with the corresponding
calibration images and data downloadable from the web page.  This can
be used to test the programs that we've provided.  You can get it here:

http://www.cs.columbia.edu/~psb15/photo/sample.tgz

Basically any camera that can capture pgm images at a reasonable frame
rate (2 to 5 frames per second) will do.

To get our images we used a program that comes with the freely
available V4L drivers for the WinTV card called streamer.  Here is a
sample usage of it (you can try it on explorer.cs.columbia.edu):


streamer -s 640x480 -i 1 -n ntsc -r 5 -t 50 -o scan000.pgm


This command captures at an image size of 640x480.  It captures at a
rate of 5 frames per second (specifiable by the argument r) and
captures 50 frames in total (specifiable by the argument t).

If you only want to take one image, run it this way:

streamer -s 640x480 -i 1 -n ntsc -o imagename.pgm

This is useful for taking single calibration images.
