Project 3:

(will ge graded on FRIDAY after spring break, March 19).

(I will provide back on any partial websites on monday march 13.)


1a) Autostereogram generator.
     Write a program that makes an autostereogram.  

Note: This program must be automatic.  You turn in first a web page,
with your favorite (2 or 3) example outputs (and the depth map they
came from).  Then there will be a mandatory demo time, where you will
be given a depth map and be required to generate the auto-stereogram
in semi-real time ( say, in an hour.).  This allows you to modify
parameters (in case our format of depth map is different than what you
expect, and recompile and run your program.

     Program input:  depth map, such as those available from:

        here,

        or here,
        or here (where dark should be closer), or,

        here, or any thing else you can find.

     The depth map is usually a grayscale picture, and you need to map
     the color (probably from 0-256) to a distance (how far apart the
     next pixel should be over).  Often mapping 0-256 into the range
     of 100-250 pixels is about right, but it depends on your
     monitor/printer.  

     Vague Algorithm:

        Start at the left pixel of each row.  (ie, let x = 1)
          randomly pick color C **.
    	    color location x with color C.
	    look up the depth (Z) at pixel location x on that row.
	    map Z onto a displacement d (something like d = 100 + Z/2).
	    x = x + d.
            if x is still in the image 
              (that is, if you haven't gone off the right edge)
              then loop to "color location x..."

         if x isn't still in the image, set x to the position of the the
            leftmost pixel that isn't colored at all yet, 
         loop to "randomly pick color C"

     end

   ** you do have to choose a color, but it does not have to be random.  

1b) Moving autostereograms (good java choice).  (up to pairs of students).

     create a depth map as a mathematical function that depends on time:

       d(x,y) = 4 + sin(x/150)

       Now, continually update the autostereograms as the depth map
       changes.  would be a nice java applet, or you save the results
       as a movie (mpeg or avi).
       

Well done projects from below, i think, could turn into papers.

1c) An autostereogram "paint" tool. (groups of up to 3 students)

1d) Explore transparency in autostereograms.  (groups of up to 3)

If you have a partially transparent surface over a more "solid"
surface, we can often see both depths at once.  The Project is to
explore this idea in the following way: make one autostereogram.  make
another one with a small depth.  make the second one slightly (or
very, I don't know) transparent, and put it one top of the first
autostereogram.

    .) Does it work that you see both?

    ..) does it matter if neither, one, or both of the two
        autostereograms is random dot (does it help if they have more
        structure?

    ...) how seperated, in depth, can the two surfaces be?
     
1e) Harder (groups of up to 3)

"All" you have to do is remove the Bailey's adversitement in the
background of this sequence (or an equivalent sequence) and replace it
with your own advertisement, the planar picture of your choice,
properly projected onto the hockey rink wall. The images are here:

skaters.tar
(you are welcome to use your own set of images, please check w/ me or
TA's for appropriatenes).

Reasonable assumptions are fine -- i.e. the wall of the rink is a
plane, but unreasonable assumptions are not, (the wall of the rink is
not a fronto-parallel plane). We call this project hard because it is
hard, ok?