Make Your Own Campbell-Robson Contrast Sensitivity Chart

by Izumi Ohzawa, (E-mail:

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)

Explain contrast sensitivity and contrast sensitivity function (CSF)


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.
Click on one of the links below to start a download:

Bitmap image Letter size: GIF || TIFF
(CSFchartP.gif/tiff, Letter size, 612 x 792 , 8-bit gray, Portrait, ~80 kbytes)

1333x2000 image for slide maker (Lasergraphics): GIF || TIFF
(CSFchartSlide1333x2000.gif/tiff, 35mm Slide, 1333 x 2000, 8-bit gray, Portrait, ~340 kbytes)

1365x2048 image for slide maker: GIF || TIFF
(CSFchartSlide1365x2048.gif/tiff, 35mm Slide, 1365 x 2048, 8-bit gray, Portrait, ~330 kbytes)

528x792 image for slide maker (low resolution): GIF || TIFF
(CSFchartPslide.gif/tiff, 35mm Slide size, 528 x 792, 8-bit gray, Portrait, ~75 kbytes)

PostScript program for slide maker -- (view as text)
(CSFchartSlide.eps, 35mm Slide size, 528 x 792, Portrait, 7.4 kbytes)

PostScript program for 300-dpi dye sublimation printers -- (view as text)
(CSFchart300L.eps, Letter size, 612 x 792, Portrait, 7.4 kbytes)

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:

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.

EPS file for a sinusoidal grating patch -- (view as text)
(sinewave.eps, 4 kbytes)

EPS file for a plaid patch -- (view as text)
(plaid.eps, 5 kbytes)

EPS file for a 2-D Gabor patch -- (view as text)
(plaid.eps, 3 kbytes)

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 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 (Lighthouse Design) which rasterized the PS code into an image with the help of Display PostScript interpreter on NEXTSTEP. was used to convert TIFF files to GIF images.

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.

[6] Comments and problem reports
Please send bug reports and comments to:

Co-Inventor of the Original Version

Dr. John G. Robson
(1991-7-5, Berkeley)


Return to teaching resources listing