Make Your Own Campbell-Robson Contrast Sensitivity Chart

by Izumi Ohzawa, (E-mail: )

Notes added in 2005:
Materials contained here are old stuff from my Berkeley years, probably around early to mid-90's. This was obviously written in the days of film-based slides before PowerPoint and computer-based projection became the norm around 1999~2000. Most of the links to external sites are probably broken, products mentioned obsolete. Display PostScript is now long gone. However, on MacOS X 10.3.x or later, you can still edit EPS program files using any text editor, and double-click open the EPS or drag-and-drop the EPS icon in Preview application. will convert EPS to PDF on-the-fly, and render it. You should be able to save it as PDF or in other popular image formats from Preview. Equivalent programs may be written in Matlab or C, but the PostScript programs should still work thanks to NeXT genes inherited in MacOS X. The image files and EPS programs are in the Public Domain.
Message from Dr. John Robson (with permission; Sat, 26 Apr 2003):
If you use any of Izumi's images you should obviously acknowledge him as well as Campbell and myself.
You may be interested in a couple of paragraphs I wrote some time ago in response to being asked by someone about the origins of this demonstration variable-spatial-frequency variable-contrast grating.

["Cliff Schor tells me that he and Frank Thorn were sitting with a patent attorney in Portland Oregon in 1976 and discovered a copy of the grating in the patent book, under Fergus' name.........."]
"You are exactly right in believing that I made the original variable contrast variable spatial frequency grating with Fergus in 1964 (as a photograph of a slow scan on an oscilloscope -- we had failed to do it in various other ways first) and that it was first presented as a hand-out at that year's annual meeting of OSA in Washington DC.  Unfortunately we only made 70 or 80 of these prints and as they were quite popular they rapidly all disappeared and I no longer have a copy.  There is no reference to this demonstration grating in the abstract of the talk we gave but I suppose it would be correct to reference that if a reference is required.  The abstract appears in JOSA as "Campbell F.W. and Robson J.G.  Application of Fourier analysis to the modulation response of the eye.  JOSA 54:581A"
But it is not correct that the first publication of the picture itself was the one that is in Cornsweet's book which was not published until 1970.   The first publication was in Floyd Ratliff's book on Mach Bands (1965) and it has, of course, been published in several other places since then though never by myself or, I believe, Fergus (though I am not absolutely certain of that).
When we first made the picture we thought that it might be used to obtain a contrast sensitivity function very easily and quickly by getting a subject/patient to draw in the boundary between the seen and unseen grating, but it only takes a couple of minutes of trying to do this with a print of reasonable size to realise that it doesn't work and it would not be worth patenting!  It is possible that Cliff Schor met Fergus between the time that we made a rather small grating and the time that we had a larger one and realised that it would never be more than an eye-catching demonstration (Arden, of course, then went ahead with his set of single frequency variable contrast gratings as a clinical test, but I don't think that ever worked very well either).  It is possible that for some short time Fergus might have talked of patenting it, but it certainly never was.
Whenever I am asked a question like this I realise how difficult it often is to reconstruct history from the published record! "

I hope this is helpful,  John Robson

PS.   Perhaps you should note that the human contrast sensitivity function is just that and not a transfer function.  This is because detection at any spatial frequency is probably determined by signal-to-noise considerations (noise power may well be a function of spatial frequency) rather than just by signal attenuation or amplitude.

PPS  If you are interested in the Pelli-Robson chart I expect you know that it is best to talk to Denis Pelli at NYU

Files on this page may be useful for making slides or prints for your lectures, because Campbell-Robson CSF chart is probably one of the most difficult images to reproduce photographically (even if you are one of the luckey few with an original print). The ones in books aren't that great to start with. 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)