1
\$\begingroup\$

I have an idea for a grayscale color space that is able to have 11 bits of grayscale depth on a typical 8-bit color depth monitor. The idea I'm going to detail is simple, so I assume it must exist somewhere with some name.

(I should note that I'm interested in this from a game-dev perspective, but this stackexchange seemed to be the most appropriate for this question!)

Consider two grayscale values, #A0A0A0 and #A1A1A1. We have up to eight values inbetween them, e.g. #A0A0A1, #A0A1A0, and so forth. These inbetween values are almost gray. We could even take advantage of the fact that the green channel has higher luminosity than the red channel, and the red channel has higher luminosity than the blue channel. The slight tint shouldn't be noticeable.

So, my question is, is there a name for this idea? Do there exist libraries for photo editing applications that implement this idea?

\$\endgroup\$
6
  • 3
    \$\begingroup\$ I have read that 3rd paragraph 4 or 5 times and I still don't understand what you are proposing (and my day job is hardware and software). I'd also posit that your topic deals with how data is mapped to a screen and doesn't have anything to with photography per se \$\endgroup\$
    – Peter M
    Commented Jan 3, 2020 at 19:35
  • \$\begingroup\$ Depend of the colour space #A0A0A1 and #A0A1A0 will have same (more or less) luminosity, just different tint. So you do not have 8 values but only 4. \$\endgroup\$ Commented Jan 3, 2020 at 19:46
  • \$\begingroup\$ You're describing the usual RGB - Grayscale conversion in different light and with a focused goal. Suffice to know that Blue is the darkest and Green is the brightest (more than R+B combined), and you're good to go: +1 = 001, +2 = 100, +3 = 101, +4 = 010, ... That said, I doubt if there's any name for this, as it's just peculiar for what gray tolerance you allow. \$\endgroup\$ Commented Jan 3, 2020 at 20:18
  • 2
    \$\begingroup\$ What problem are you trying to solve? What benefit do you expect this to have? (The main benefit of higher bit depths is for editing, not viewing.) \$\endgroup\$
    – xiota
    Commented Jan 3, 2020 at 20:38
  • 5
    \$\begingroup\$ vtc b/c This is a question about data structures and transformations, not photography, per se. \$\endgroup\$
    – xiota
    Commented Jan 3, 2020 at 20:39

2 Answers 2

8
\$\begingroup\$

Yes, it exists and it is called pseudo-gray.

\$\endgroup\$
2
  • \$\begingroup\$ I have never heard of this :) It's very interesting. Feels like it could be more easily handled by inverting the 16bit RGB->L portion of of HSL and rounding. \$\endgroup\$ Commented Jan 3, 2020 at 22:17
  • \$\begingroup\$ Here are some examples : patdavid.net/2012/06/true-pseudogrey-in-gimp.html it's possible to see very slight variations. \$\endgroup\$ Commented Jan 4, 2020 at 13:13
5
\$\begingroup\$

You have already pointed out the exact reason this wouldn't be worth the effort of implementing.

The slight tint shouldn't be noticeable.

The minute differences in brightness wouldn't be noticeable either.

For example, can you read the text in this image? It has two neighboring 8-bit grayscale values.

Can you see the text in this image?

If you can see it, it isn't your eyes... your monitor is not displaying the brightness values accurately. (Look no further than the Hermann Grid or the Mach Bands illusion to demonstrate how bad your eyes and perception actually are at handling brightness.)

All this is assuming a monitor with a high enough precision to be able to actively display the image at all. Monitors, and indeed color spaces, are designed to play into the strengths and weaknesses of human eyes.

I won't go into the advantages and disadvantages of high bit depth images here, but few if any of their advantages involve human perception.

TL;DR It's an interesting idea, but is not only impractical, but actually counter-productive. Only a machine could actually perceive the difference, but machines don't look at monitors.

If you have the programming skills, I do encourage you to try this as an experiment if you're interested. Trying to map a 16 bit image into this format and view them side by side to see what you get.

\$\endgroup\$
6
  • 1
    \$\begingroup\$ In fact you can perceive the difference in the right conditions, like for instance a very slow gradient (which would cause visible banding with just 8 bits). \$\endgroup\$
    – xenoid
    Commented Jan 3, 2020 at 21:26
  • 1
    \$\begingroup\$ @xenoid true, I probably oversimplified, human vision is logarithmic, while digital representations are linear, so the lower the brightness value, the easier we can tell the difference because it's being displayed as absolute brightness. This is one of the main reasons printed gradients look so smooth as half-toning is also non-linear. Very large neighboring dark regions do indeed produce noticeable banding, but simple dithering near the transition is the go-to method, hence why the banding is more noticeable when the image is scaled. \$\endgroup\$ Commented Jan 3, 2020 at 22:13
  • \$\begingroup\$ The digital representation is also non linear. Typically sRGB, with a gamma close to 2.2. Maybe not as good as a logarithm, but it does help prevent banding in the dark regions. \$\endgroup\$ Commented Jan 4, 2020 at 13:20
  • \$\begingroup\$ @xenoid I did some experiments a long time ago (probably in the 1980s) and concluded that 128 levels of intensity showed clearly visible Mach bands, but 256 did not - at least for typical displays and "untrained" observers at that time. \$\endgroup\$
    – alephzero
    Commented Jan 4, 2020 at 14:52
  • 1
    \$\begingroup\$ Sheesh… that was a runaround ;) I can see it when I know where to look, but I have to expand it to actually be able to read it. I can't read it at the size in the answer, only a vague hint of where it is. At least I know my monitor calibration is at least that good :) \$\endgroup\$
    – Tetsujin
    Commented Jan 4, 2020 at 15:46

Not the answer you're looking for? Browse other questions tagged or ask your own question.