Hi Doug, I am a fan of your tests
A couple of questions: Is the monitor connected to the video card with a cable that is 10-bit/ch capable? (How) Did you apply gamma to your gradients? Are you viewing the images in ProPhotoRGB? What gamma did you profile your monitor to? Does your display perform any dithering?
Images posted are in ProPhoto which has a gamma=1.8. The first one's top gradient was made in 16 bits using Matlab and linearly changes L* from 5 to 25 left to right. The next ones are rounded to 8 bits with increasing amounts of noise. The monitor, a CG318, is a 30 bit monitor driven by a quadro and recommended cable.
And a comment: It turns out that humans by and large do not see banding in a gradient if adjacent steps are less than about 1% apart in linear Luminance. This is called the Weber-Fechner Fraction and holds true not just for vision but for many other phenomena where humans are involved. I seem to see many contiguous steps in your gradient plot that are much, much more than 1% apart linearly, hence those should be visible. Also there is some quantization of luminance to be expected by the display itself in the darkest tones, if it is not dithered. For instance in theory going from linear step 10 to 11 there is a 10% luminance difference.
Yes, though the 1% linear luminance change perception does require enough luminance. Since the test I ran was with the monitor set to 200 cd/m^2, (200 nits), the light level at L*=5 is just under 1 nit. L* has a linear ramp up to about L*=11 so a change from say 10 to 11 is a change of 10% and is approx. 1.8 nits to 2.0 nits. Very visible on low key images where eyes adapt to the lower brightness. At those levels I can't see step changes of .3 dE 76 but changes of .6 dE are visible and annoying.
To your point, step changes of L*=1 are very apparent but only when adjacent. With even a small separation of steps (say a black border in between), luminance change is much harder to see.
As far as added random noise is concerned, the amount that is generally recommended (and that is typically present at base ISO in our raw files) has a standard deviation equal to the step. We call it read noise and it is only relevant in the darkest tones since above that shot noise takes over.
Right. In fact the +/- .5 bit dither of the third gradient corresponds roughly to this. What I did was add linearly distributed noise from -.5 to +.5 of a step. When they are rounded it produces a distribution such that, for say an 8 bit value of 4.25 will be rounded to 5 25% of the time and rounded to 4 75% of the time. So the averages should be quite good. The successive gradients have the noise further reduced by factors of 2. Base photo image noise, below shot noise, is often corrupted and creates patterns that effectively reduce camera's the dynamic range as it can be quite objectionable.
So why not prepare in Matlab a 16-bit Luminance gradient going up 1 DN at a time every 10 pixels or so, then applying 1/x gamma to the resulting image (where x is the gamma that your monitor has been profiled to), with and without noise of standard deviation of 1 DN. As long as your video path and cable are capable of 10 bits you should be good to go. Without noise you should not be able to see banding above about 100 DN before gamma was applied (some 8-bit examples in the link above). With the noise typically present in our captures even at base ISO you should not see it at all, especially once you bring maximum brightness to typical working conditions (e.g. 80-160 cd/m^2): the WB Fraction grows substantially below about 1 cd/m^2, as shown in the table in the link.
Let us know.
Jack
I've since made a few display profiles using various gammas. I now have strong evidence the 30 bit path no longer functions on my system. Adobe/Nvidia/Microsoft? broke it again.
The following approach is a good way to check if a system is functional in 30 bit or 24 bit RGB if your monitor profiling software allows setting gamma=1 such as ColorNavigator.
1. Make a profile setting the gamma=1 and the luminance to maximum.
2. In Photoshop, create a neutral gradient from black to L*=15 using a 16 bit RGB working space.
3. If the display shows step changes approx. every 3.5 L* (about five of them) then your system is opverating in 24 bits, 8 bits per channel. These step changes are very visible!
4. If the display shows more than 10 steps and it's not easy to see the steps, your monitor is operating in 30 bit mode or 10 bits per channel.