Make Your Own Campbell-Robson Contrast Sensitivity Chart

Files on this page may be useful for making slides or prints for
your lectures, because the Campbell-Robson CSF chart is probably one of the
most difficult images to reproduce photographically. Now, you can produce original
prints and slides yourself.

I have apparently duplicated some of Dr.
Denis Pelli's work
which was published in Byte (1987; see ref. 5).
If you use his program, it may have to be modified slightly
to take full advantage of continuous-tone imaging devices, such as
dye-sublimation printers that are now available.

A Quick Demonstration of Your Own Contrast Sensitivity Function

Click on the image for a medium-size version (640 x 480, ~170 kbytes; see below for even larger ones)

Downloading

All GIF and TIFF files below are in the portrait orientation containing horizontal
gratings. This produces files that are much smaller than those with vertical
gratings because of the way the compression algorithm works for these image formats.

I have tried this PostScript file on a
Kodak DS 8650 PS
dye sublimation printer.
It takes about 5 minutes of processing time before the printing mechanism starts moving.
(For a perspective, it took 7 hours for a Linotronic L300 to produce one in 1987,
and Denis was told "Never again!" by the DTP shop operator; ref. 5)
The print quality is not bad with a CMY ink roll and is useable certainly for class-room demos.
If you can use a B/W ink roll, the quality may be improved.
Other high quality dye sublimation printers are
Tektronix Phaser 440, 450 and 480X.
I don't know which of the two companies' printers produces better results for the CSF chart.

As for a PostScript interpreter that supports film recorders,
FilmMagic Pro is a Mac-based Level-2 PostScript interpreter
that is specifically designed to support film recorders from AGFA, Lasergraphics, and Management Graphics (MGI).
I have no information on how well this software works. For Windows, RIPware Pro works well with
Lasergraphics film recorders and probably others (Imageworx, tel: 508-251-2900, fax: 508-251-7636, e-mail:
imagewrx@tiac.net).

Some Additional PostScript (EPS) Grating Files

The following are sinusoidal grating, plaid, and Gabor patches that may be incorporated
into a drawing or a document as graphics. A plaid is the sum of
two sinusoidal gratings of different orientations (according to a
typical definition used in vision science). A Gabor function is the
product of a sinusoid and a Gaussian (grating through a Gaussian window).
Editing the files by a standard text editor allows you to change
grating parameters such as the orientation, spatial frequency,
contrast, and phase. These files are suitable only if you have a
PostScript printer or Adobe Acrobat Distiller. These EPS files do not
have any preview section.

Technical Notes and Frequently Asked Questions

[1] How do I make slides from TIFF/GIF image files?

TIFF or GIF files should be loaded into an image (bitmap) editing
application (the simpler, the better) such as Photoshop, and then
printed to a film recorder (slide maker). I used PhotoStyler
(formerly by Aldus) that came bundled with a HP scanner under Windows
3.1, and it worked very well for making slides with all the TIFF files here,
including the high-resolution (1365 x 2048) TIFF image.

Try to avoid any margins or border areas, i.e., try to use the full
image area of the slide maker device. Otherwise, you may run into a
Moire pattern problem (see below).

[2] I am getting artifacts at high spatial frequencies. How do I get rid of them?

The effects you are seeing are Moire (aliasing) patterns that result
probably from subsampling the original image somewhere in the chain
of processing. The high-resolution images have 2048 or 2000 pixels along the
long dimension (most film recorders have two resolutions: 2048 or 4096
pixels along the long dimension). And the best results are obtained
when the image is sent without scaling to the slide maker such that
each pixel of the image is mapped to a pixel of the slide maker
device.

One easy way to reduce Moire artifacts (but with reduced maximum spatial frequency)
is to use the 528x792 image with the 4000-dot resolution setting of the
slide maker. Then, each pixel of image is mapped to at least several pixels
on the film recorder device. The original image will not be under-sampled in this
condition, and the result should not suffer from serious artifacts.

Note that you are likely to get Moire patterns on the screen
with any application. Do not be alarmed by the artifacts in
screen images. This happens because of inevitable scaling of images to fit
the window size, but actual prints will not have the artifacts if
you make sure that the image is mapped to the full device imaging
area. Therefore, as far as these CSF images are concerned, WYSIWYG (what you
see is what you get) does not apply.

If your slides actually have Moire artifacts, there can be two possible
causes:

[a] Your slide maker has a resolution for the long dimension
different from 2048/4096. For example,
Lasergraphics
film recorders have the imageable area with 2000 or 4000 pixels,
although the addressable resolution is 2048/4096. Therefore,
you should use the 1333x2000 image for Lasergraphics.
If your film recorder has non-standard resolutions not covered here,
I will be happy to make another file with the resolution of your
slide maker. Please give me the spec of your slide maker: manufacturer,
model #, and available resolutions.

[b] Your program is scaling the image to allow for a border region
to make it appear nice (for most other type of images). However,
this can be very bad for reproducing high frequency gratings. The
scaling may be explicit as you place the image on the slide frame
in the document or the printer driver may try to put a margin. The
trick is to turn off margins or border regions of any kind such
that the image occupies the full device area.
For this problem, one solution may be to ask the slide maker
manufacturer for a program to send the image to the device without
scaling. They must have something like this for diagnostics or
testing of their own.

[3] How do I print to a dye sublimation PostScript printer?

If you have access to a dye-sublimation printer with the PostScript
capability, using the PS file allows you to achive better results
than printing the TIFF/GIF image. This is because the PS version
generates the image inside the printer at the resolution of the
printer, therefore you do not have to worry about Moire patterns
resulting from scaling of the image file (See [2] above). TIFF/GIF
images may also suffer from varying gamma interpretations which may
further degrade the quality of reproduction. Do not try to print
to a standard laser printer. Dithered bilevel 600 dpi just isn't
enough. It will print, but you will be disappointed.

The PostScript files should be downloaded directly to a PostScript
printer. From a Mac: use Drop*PS or LaserWriter Utility. From Windows: use
PrintFile
utility. From DOS: copy /b filename.ps lpt1. Do not try to load PostScript files into
Photoshop, Illustrator, or CorelDraw. These apps cannot do anything
with the files.

The PostScript (PS) program is totally configurable and may be used to
produce a chart of any size, and frequency/contrast ranges with
simple modifications by a standard text editor. There are only
minor differences between the two PS files above in their parameter
definitions. Modifying the file for other devices and paper sizes such as
A4 is simple. See notes in the PS file itself for instructions.

Be aware that the PS program internally uses the image operator with
8 bit per sample data. This means that contrasts below about 1% cannot really
be produced. The current Level 2 version of PostScript supports 12-bit samples for the
image operator. However, there does not appear to be any printing or display device
that can actually produce 12-bit gray scale images. If you have such a device,
and would send me a few output samples, I will consider modifying the PS program
to use 12-bit data.

[4] I need a smaller image for inclusion into my wordprocessor file.

Regarding the bitmaps, do not attempt to reduce the resolution of
the images by sub-sampling pixels (i.e., for inclusion as images in
your wordprocessor document).
Resulting images will suffer from a severe aliasing problem, if you do so
without first applying a good low-pass filter prior to subsampling.
For the same reason, if your image viewer cannot diplay the images
at the full resolution, they will look terrible.
If you need smaller bitmap images, it would be best to regenerate
fresh bitmaps using the PostScript program with appropriate modifications (Here's
the PostScript program code
for the small (153 x 198) image shown above).
Platforms that run Display PostScript (most workstation-type systems, and soon on Macs)
or the freeware PostScript interpreter
Ghostscript
should be able to produce bitmap images of a desired size from the PostScript
program. (I do not use Ghostscript, so please do not ask me how to do it using
Ghostscript. If you have done this, please send me how-to descriptions including
platforms, versions, and command/script/GUI-operation details.)

[5] How these images are produced
The PostScript programs have been developed using BBFig/Yap application
(PostScript viewer with a built-in text editor) on NEXTSTEP. They
were converted into TIFF files using WetPaint.app (Lighthouse Design)
which rasterized the PS code into an image with the help of Display
PostScript interpreter on NEXTSTEP. ToyViewer.app was used to convert TIFF files
to GIF images.

Algorithm:
If the PostScript code in the EPS files above is too cryptic for you. Here's
an algorithm description in C,
which you may be more faimilar with. This is for description purpose only. Do
not attempt to compile.