Originally Posted by jrp
Well ... the dither definition seems appropriate to me. There is no circular references that I see. We are not trying to define dither, or other features for that matter. Instead in our manuals we describe to those who know what a feature is how it works in the Radiance. If you want a definition of dithering, please read the following link: http://en.wikipedia.org/wiki/Dither
. Note that dither concepts are the same for audio and video.
Dither adds "noise" to the image to mask issues, such as contouring, in the display. The amount of dither you need depends on the quality of your display, and how the display handles color in its video pipeline. You can select that the noise affect bits below 10-bit accuracy, 8-bit, 7-bit, or 6-bit (i.e. position in the pixel bit depth). There is a random noise generator to generate the dither noise values, It can be locked so that the seed is the same for each frame, or dynamic, so that it is randomized at the beginning of each frame. Test patterns look best with the static seed for each frame. I think real video looks best with the dynamic seed, but with a static image you would see the changing seed values affect pixesl in the image, and some do not like that effect and so choose static seed value for each frame.
Most current Plasma and LED/LCD display are okay with 8-bit dither. Some are good for 10 or 12-bit, especially if they dither internally. I had an older Plasma years ago that needed dither set to 7-bits to hide its contouring.
Traditionally dither is only applied to bits below the transmission precision. However, for Radiance 4:2:2 output, if you dither to, say, 10-bits, there are actually 12-bits at the output of the Radiance pipeline. So truncation asks if you want the bits below the dither position to be left after the noise was added or set to 0 (truncated). I doubt you would see a difference with 10-bit dither, but you might with 6-bit, so we allow both options.
The only way to know the best value for your system is to experiment by change the dither parameters and watching real video until you find settings you like.
Thanks! Some of that makes sense to me but I'm still mostly lost. I think I understand the concept of dither. It's your choice of words that I find unique.
There's a target color that you've got the desired value of as an RGB triplet, right? But limitations in the display mean that it can't actually reproduce the value you want it to. So, for example, a smooth gradient creates banding because of quantization error in the display. By adding random noise you can possibly reduce the visibility of that quantization error. Is that the basic idea?
Where you start to lose me is when you start talking about the number of bits in the dither. R, and G, and B are 8 bits apiece. So how can you have 8 bits of "dither"? Even if the Radiance is 12 bits internally, a dither value of even 6 bits would be a huge difference wouldn't it? Since 6 bits can hold values up to 63? I mean, I would certainly notice it if you dithered 0, 0, 0 to 63, 63, 63 (or 16, 16, 16, dithered to 79, 79, 79 if we're talking video). So obviously I don't have the slightest idea what you mean by "N bits of dither." I would expect the amount of dither to be added would be a very small number, 1 or 2 bits, since we're trying to add noise not completely mask the actual color. So when you say "noise affects bits below 10 bit accuracy" it sounds to me like you could generate a dithered value that differed from the undithered by 1023, and that sounds to me like a huge and obviously visible difference so I conclude I'm lost. On the other hand if you're just describing the number of bits of precision of the dither calculation, then I'd expect more to always be better. So why wouldn't I want to always use 12? Clearly I have no idea what it is that this knob controls.
Now, your description of Orientation is excellent! Your dither algorithm uses a random number generator whose seed is initialized at the start of each frame. Selecting "fixed" initializes the seed to the same value for each frame, thereby causing the random dither added to each pixel to be the same on a frame-to-frame basis. Selecting "dynamic" initializes the seed to a different value for each frame, thereby causing the random dither applied to each pixel to vary for each frame.
See the difference? That last paragraph is an actual description of what the two possible selections do. When all you do is tell me that the two possible values, which I can see by inspection are "fixed" and "dynamic", are in fact the two words "fixed" and "dynamic" then that's not documentation at all. I don't really care if you call it "circular" or not, but it definitely doesn't add any information to the discussion. I still don't have any idea why you decided to call it "Orientation" though.
I'm still unclear on masking, but I presume that hinges on my whole "bits of dither" confusion.