This is part of a larger work. See the top level of POV and Gamma.

I'm writing this and distributing it for free. I'll let someone else edit it for free. <g>

Why do Colors Look Washed Out?

Because you are using a different color scale. Values that looked a certain way in the old system you are used to will look lighter in the new scale. It's the same with any measurement system—If you are used to setting your thermostat to 70 degrees, you will find that value much too warm if you switch from Farenheit to Celcius. The numbers have different meanings.

Traditional Color Scale

As you can see in the scale above, this isn't a particularly good scale. The light values are crowded to one end, and there is much less difference between the same sized increments on the left side than on the right. So, if you work with this system, you'll tend to get dark images. To get good mid tones, you have to stay between 50% and 80% and never venture much to the left.

New Color Scale

Above is what you have to work with in the new system. The values are lighter in appearance, and this is why you scene will come out light if you change the assumed_gamma and use the same colors.

As a practical note, this scale seems better in that the variations from one step to the next are more evenly spaced. It doesn't waste the left side. So if you are used to specifing a dark color as 0.3 before it even starts to show up, the difference manifests itself the most. In the new system, there is a big change from 0.0 to 0.1. Now, mid tones are in the bulk of the scale from 20% to 70%. Highlights are also nice and wide spread. But shadow values are crowded into the far left, below 20%. So, scenes using these values will tend to lack the darkest colors.

A scene developed in the Old System will use values between 0.1 and 0.3 for dark (shadow) areas, and avoid anything less than 0.1 as being useless, especially if printing. In the New System, values less than 0.1 are the shadow colors, and these will be missing! So, tracing a scene will appear washed out because all the darkest colors have been promoted to mid-tones and there are no shadow colors present at all.

Looking at the two scales like this, it's clear that neither system is particularly nice for the human artist. You just get used to the system you know, but neither is not particularly natural. This line of thought will be continued in The Zone System below.

Light Sources

New Color Values Needed

what to do


new inc files

The Zone System

According to Computer Graphics Princilples and Practice, 2nd ed. by Foley, vanDam, Feiner, and Huges, section 13.1.1

Suppose we want to display 256 different intensities. Which 256 intensity levels should we use? We surely do not want 128 in the range of 0 to 0.1 and 128 more in the range of 0.9 to 1.0, since the transition from 0.1 to 0.9 would certainly appear discontinuous. We might initially distribute the levels evenly over the range 0 to 1 [the "Old Scale" above --ed], but this choice ignores an importantcharacteristic of the eye: that it is sensitive to ratios of intensity levels rather than to absolute values of intensity. That is, we perceive the intensities 0.10 and 0.11 as different just as much as the intensities 0.50 and 0.55. (This nonlinearity is easy to observe: Cycle through the settings on a three-way 50-100-150-watt lightbulb; you will see that the step from 50 to 100 seems much greater than the step from 100 to 150.) On a brightness (that is, perceived intensity) scale, the differences between the intensities of 0.10 and 0.11 and between intensities of 0.50 and 0.55 are equal. Therefore, the intensity levels should be spaced logarithmically rather than linearly, to achieve equal steps in brightness.

Eventually, it boils down to the result of Vj = ROUND ((Ij/K)1/γ), once you've figured out all the other letters. Rather than try and do mathematical typesetting in HTML, I'll just present the program that calculates these values for various initial parameters, complete with comments.

#!/bin/perl -w

use strict;

# get command-line arguments
my ($steps,$I0,$gamma) = @ARGV;
# echo them back to verify correct usage, and label the output
print "number of discrete values: $steps\n";
print "lowest available intensity (I sub zero): $I0\n";
print "\ttypical values for a CRT are 1/200 to 1/40\n";
print "gamma: $gamma (typical CRT is 2.2)\n";
my $K = 1;  #do more with this later?

# calculate 'r', the step ratio
my $n= $steps-1;  # 0 through $n inclusive is $steps points.
my $r= (1/$I0)**(1/$n);

print "calculated r: $r\n";
print "j\tIj\tIj_g\tpal \n";
print "-\t--\t--\t--- \n";
# calculate table
my $j;
for ($j=0;  $j<=$n;  ++$j) {
   my $Ij= $I0 ** (($n-$j)/$n);
   my $Ij_g= $Ij**(1/$gamma);  #reverse gamma corrected
   my $pal= int (0.5 + $Ij_g*255);
   my $ipal= 255-$pal;
   print "$j\t$Ij\t$Ij_g\t$pal\t$ipal \n"

Zone Color Scale
dynamic range = 50, gamma = 2.2

The idea is to make the difference between each shade look the same, which means using a geometric progression rather than an arithmetic progression. Above, each square is brighter than the previous by 54.4%. Then, comensate for the fact that the monitor's response includes the power of 2.2, and back that out of the final value in the bitmap.

This first run shows a much greater uniformity between brightnesses than either the Traditional or the New color scales. However, to my eye the middle has somewhat larger steps than either end, and the rightmost step, from 82% to 100%, is anomalously large. This may be due to the way I converted the brightness values into numbers I could use in PhotoShop, or it may be a poor choice of Dynamic Range—more experimentation will tell



Page content copyright 1999 by John M. Dlugosz. Home:,