[comp.graphics] Polaroid Palette Film Recorder

brian@ucsd.EDU (Brian Kantor) (03/30/88)

We've recently inherited a Polaroid Palette Film Recorder from another
department, and I've been wringing the secrets out of it slowly by
attaching it to a terminal and playing with it.  I'd thought of trying
to worm the secrets out of the basic program that comes with the widget,
but a quick glance at it showed that no sane person was ever going to 
figure out THAT program.

Note: Polaroid will sell you (for $50) a set of diskettes for writing
programs in 'C' on an IBM-PC to drive the thing.  I thought this was
a) useless, and b) too expensive, so I didn't order them.  They don't
have a technical manual that explains how it works or how to interface
to it yourself.

The device is a monochrome binary display with some rather
widely-adjustable scan rates, a colour filter wheel, a shutter-control
relay, and an RS-232 serial interface.  It expects composite video in.

The way it works is it is a display that you can control with software.
You have the ability to blank the display, select one of 5 colour wheel
positions (Red, Green, Blue, Clear, or Blind), turn jitter on or off,
and control the shutter relay.

You send it commands at 300 baud, and it will respond with a "R"
followed by carriage-return when it has completed the action you
requested.  The commands I've figured out so far are:
	C	unblank (enable) display
	D	blank (disable) display
	K	"raster fill" (jitter) on (blend pixels)
	I	"raster fill" (jitter) off
	S	shutter open (close relay circuit)
	T	shutter close (open relay circuit)
	N	returns firmware version (V.2.8 on mine)
	M	returns current filter wheel position
	M0	filter wheel BLIND (black)
	M1	filter wheel RED
	M2	filter wheel GREEN
	M3	filter wheel BLUE
	M4	filter wheel CLEAR
	W0	Maybe a reset?

Additionally, the following command letters return the "R"eady reply,
but I can't see what they're doing:  J, W, X, Y.  "E" returns "4",
and "P" returns "3".

I've found that I can adjust the scan rates to display both IBM-PC
monochrome and NTSC video; right now I'm using it on a Sun-1 colour
display board (the green channel + sync tied together with a T-fitting).

To get greyscale, you have to integrate the exposure over time.  I've
found that about two minutes per colour fully saturates the instant-print
film I'm using.  Here's the algorithm for doing 24-bit (8-bits each RGB)
colour display prints on a Sun colour board using the Palette on the 
green+sync channel:

	Send the Palette  W0, D, M0.
	tell the user to pull the slide or open the shutter
	foreach colour (red, green, blue)
		{
		set the Sun colour map to all zeros 
		load the $colour raster into the sun display
		set the filter wheel to $colour
		enable display - send the Palette "C"
		for (i=255, i > 0, i--)
			{
			set SunColourMap[i] = R0,G255,B0
			sleep for 1/2 second
			}
		disable display
		}
	set filter wheel to BLIND
	tell the user to replace the slide and pull the print, or
	    close the shutter

What this does is expose the brightest pixels of the image for 128
seconds, and each successively less-bright pixel for 1/2 second less
until all are exposed.  It then repeats this for the other two colours.
If you wish to be exceedingly clever, you can vary the 1/2 second delay
to adjust for gamma correction or variation in colour sensitivity of the
emulsions.  A lookup table for each of R,G,B or some complex formula may
prove best.  I haven't done it yet.

You have to do it this way because the Palette CRT display is binary -
it cannot show or record greyscale directly.

So: does anyone out there have any more ideas or data on this thing?
I always like to make good use of free equipment! :-)

	Brian Kantor	UCSD Computer Graphics Lab
			c/o B-028, La Jolla, CA 92093
			brian@ucsd.edu