Chrominance vs Luminance noise comparison

Each of the images below is neutral gray modified by noise. The noise in the left half has constant chrominance component (different in different images, 4, 10, 20 and 40 in R'G'B' units), and practically no luminance component (one present is due to discretization errors; I expect it to be of order of magnitude 0.4). The right half has only luminance noise; on the top line it is 0, on the bottom line it is the same as the magnitude of noise in the LHS; the magnitude changes linearly with the height. Each tick on the right corresponds to 10% of the magnitude on the left.

Find the level on the right where visual noise to the eye "is comparable in strength" with the noise on the left. This shows the relative importance of chrominance noise w.r.t. the luminance noise for your eye. For myself, I do not think that the number is much above 10%.

More precise, the noise in the left half is normally distributed in the plane LUMA=const; if you take orthogonal coordinate system in this plane, two components of the noise are independent and normally distributed with the given number as the deviation. The noise in the right half is normally distributed on the line R'=G'=B'; the deviation of each coordinate is the given number.

Do not even think of trying to do this if your graphic system is below 24-bit. I do not expect that this may survive printing with less than perfect printers... I won't trust the data for noise=40 very much, since due to non-linearity of gamma-curves, high visible noise on the left may be due to difference of luma vs. luminosity; while luma is constant, luminosity has a significant noise there. This non-linearity may also explain visible red tint on the left hand side of the last graph.





HOWTO build this

The files were generated by the script by running 4  >rand4.png 10 >rand10.png 20 >rand20.png 40 >rand40.png

Details of implementation: one call to rand() corresponds to one point on the left, and two points on the right. This system's rand() is BSD random(); it has 128 bits of internal state, and randbits=31.

Ilya Zakharevich; HOME