Forums > Digital Art and Retouching > Is 16-bit per channel one big lie by Adobe?

Retoucher

3869283

Posts: 1464

Sofia, Sofija grad, Bulgaria

Some findings from today:

1)
100% white in Photoshop 16 bit mode shows 32768 in the color picker which is 2^15, not 2^16.

Also a b&w gradient from 0-100% reads as 0-32736 (which means it does NOT reach 100% white)

Test 1:

Create an image with dimensions 32768x1 and a linear b&w gradient. The intent is to check if it is really with 2^15 levels. Use the color picker to measure in 16-bit mode starting from the leftmost pixel.

The first 4 pixels show value of 0
next 8 pixels are with RGB value 8 8 8
next 8 pixels are with RGB value 16 16 16
next 8 pixels are with RGB value 24 24 24
etc.
last 4 pixels are with RGB 32768 32768 32768

So a supposedly 16-bit RGB uniform gradient is not even 15-bit, it is only 12-bit (4096 levels) and the end levels are half width.

Testing the same in LAB mode, on an image size of 4096x1 shows L values:

0 7 16 23 33 39 49 56 66 ... 32752 32761

which means it is neither linear, nor uniform at all, nor it reaches 100% luminance.

Test 2:

- Create a blank white RGB image, 16 bit.
- Pick color 0 0 0.
- Set brush size to 100px, hardness=100%, normal blending mode, 100% opacity and 100% flow, turn of shape dynamics and all the rest of these.
- Click once, then measure with the color picker: inside the black circle the "16-bit" color is 48 48 48 (not 0 0 0).
- Now pick a foreground color 255 0 0 (as the color picker is only 8 bit) and click next to the first circle, so that the 2 overlap a little, then measure: in the overlapping zone color is 32767 16 16, in the non-overlapping it is 32768 48 48.
- Click to paint another circle, this time overlapping the first red one a little - in the overlapping zone color is 32768 16 16.
- Use an eraser brush with the same settings as above - bg color 255 255 255. Click once in the area of the black circle - the "erased" color becomes 32767 (not 32768). Testing the same in the red gives 32768 32767 32767.

https://snag.gy/Ebvc1L.jpg

In short: 16bpc is not even accurate 15bpc and brush based tools cannot be trusted.

Testing the same in Affinity Photo shows full 2^16 range:

https://snag.gy/jVET0x.jpg

however this program enforces the Windows user to install this update:

https://www.askwoody.com/2013/kb-267083 … g-systems/

which I don't like  (fortunately I tested it in a VM only).

Aug 06 17 02:09 pm Link

Photographer

j francis photography

Posts: 511

Los Angeles, California, US

Maybe they use the other bit to represent negative numbers internally.

Aug 06 17 02:14 pm Link

Retoucher

3869283

Posts: 1464

Sofia, Sofija grad, Bulgaria

Negative RGB values? Why?

Aug 06 17 02:17 pm Link

Photographer

j francis photography

Posts: 511

Los Angeles, California, US

anchev wrote:

Negative RGB values? Why?

.

Why not?

Pretending middle gray is zero is a big pain that is unnecessary in floating point.

Aug 06 17 02:20 pm Link

Retoucher

3869283

Posts: 1464

Sofia, Sofija grad, Bulgaria

j francis photography wrote:
Why not?

Because there is no such thing as negative color, especially in additive color model.

Pretending middle gray is zero is a big pain that is unnecessary in floating point.

But 16 bit color is integer, not FP.

Aug 06 17 02:23 pm Link

Photographer

j francis photography

Posts: 511

Los Angeles, California, US

What does the subtraction blend mode even mean if negative numbers are disallowed?

How do you sum noise of various frequencies and amplitudes if all the noise is positive? Use overlay and pretend it's summing?

Aug 06 17 02:27 pm Link

Photographer

j francis photography

Posts: 511

Los Angeles, California, US

This topic seems to have come up quite a bit over the years. Here's a quote from someone in 2010 that sounds interesting:

Photoshop's "15 bit" internal values are actually 15 bits (0..32767) plus 1 (so 32768). That scheme is apparently chosen to allow faster image data math while avoiding calculation over- or underflow, and support other undisclosed (blending) tricks.


http://www.openphotographyforums.com/fo … hp?t=12522

Aug 06 17 02:39 pm Link

Retoucher

3869283

Posts: 1464

Sofia, Sofija grad, Bulgaria

j francis photography wrote:
What does the subtraction blend mode even mean if negative numbers are disallowed?

https://en.wikipedia.org/wiki/Blend_modes#Subtract

"This blend mode simply subtracts pixel values of one layer with the other. In case of negative values, black is displayed."

In other words (pseudo code):

a = (b - c) > 0 ? (b-c) : 0

// No negative values needed.

How do you sum noise of various frequencies and amplitudes if all the noise is positive? Use overlay and pretend it's summing?

Are you suggesting that camera sensors have an extra bit too just to store additional noise?

j francis photography wrote:
This topic seems to have come up quite a bit over the years. Here's a quote from someone in 2010 that sounds interesting:

Photoshop's "15 bit" internal values are actually 15 bits (0..32767) plus 1 (so 32768). That scheme is apparently chosen to allow faster image data math while avoiding calculation over- or underflow, and support other undisclosed (blending) tricks.


http://www.openphotographyforums.com/fo … hp?t=12522

Thanks for the link. It seems to confirm my findings about bit depth. However it doesn't justify the lack of accuracy in the other tools. The whole thing sounds like someone did a really dirty code writing.

Aug 06 17 02:50 pm Link

Photographer

j francis photography

Posts: 511

Los Angeles, California, US

You either want a full suite of mathematical operations, such as are available in Nuke, or you just want whatever is necessary for retouching.

If the latter, then you'll never miss the 16th bit unless you go sniffing around for it the way you did.

Aug 06 17 02:54 pm Link

Retoucher

3869283

Posts: 1464

Sofia, Sofija grad, Bulgaria

That's like saying that retouching is something which doesn't require accurate color smile

FWIW: Actually I noticed it visually while testing some gradient stuff. I was able to see banding on a gradient and that made me question if it is really a 16-bit gradient and then I made all the testing.

Aug 06 17 03:02 pm Link

Photographer

j francis photography

Posts: 511

Los Angeles, California, US

anchev wrote:
That's like saying that retouching is something which doesn't require accurate color smile

FWIW: Actually I noticed it visually while testing some gradient stuff. I was able to see banding on a gradient and that made me question if it is really a 16-bit gradient and then I made all the testing.

Banding on a gradient?

Aren't gradients dithered by Photoshop?

Aug 06 17 03:03 pm Link

Photographer

j francis photography

Posts: 511

Los Angeles, California, US

https://www.scratchapixel.com/images/upload/noise-part-1/2dnoise-fractal-sum.png

Here's a stack of images.

https://www.scratchapixel.com/images/upload/noise-part-1/2dnoise-fractal.png

How do you sum them in Photoshop to make this?

If you have negative values and the images go from -amplitude to +amplitude centered afround zero you just sum them. Then you normalize them at display time to make them displayable.

How do you do that in Photoshop?

I prefer programs that don't tell me what to do with my numbers.

But when it comes to creative image editing I'm not going to sweat ONLY having 15 bits when I mean to have 16.

Aug 06 17 03:06 pm Link

Retoucher

3869283

Posts: 1464

Sofia, Sofija grad, Bulgaria

j francis photography wrote:
Banding on a gradient?

Aren't gradients dithered by Photoshop?

It's an option. But there is no such option for gradients which you create in masks.

j francis photography wrote:
How do you sum them in Photoshop to make this?

If you have negative values and the images go from -amplitude to +amplitude centered afround zero you just sum them. Then you normalize them at display time to make them displayable.

How do you do that in Photoshop?

You should ask the developers of PS. I didn't write this program, so I can't tell you what formula exactly it uses.

I prefer programs that don't tell me what to do with my numbers.

Me too. And PS doesn't seem to respect the instructions one gives to it. Hence the thread.

But when it comes to creative image editing I'm not going to sweat ONLY having 15 bits when I mean to have 16.

There is nothing creative in image editing. That's why it is called editing, not creating. But whatever words you use, it doesn't justify the lack of promised accuracy of the tools. It's really a purely technical matter. Also in the case of a gradient it is not 16 vs 15 but rather 16 vs 12 as explained.

Aug 06 17 03:28 pm Link

Photographer

j francis photography

Posts: 511

Los Angeles, California, US

In that case, you did it! 16-bit per channel is one big lie by Adobe, and you blew the lid off it!

Aug 06 17 03:30 pm Link

Photographer

Mark Salo

Posts: 11726

Olney, Maryland, US

Well, slap me down because I'm probably wrong.  But isn't the first bit (in human language) the zero bit in computer language.  So the 15th bit in computer language is the 16th bit in human language.

Edit: For example, 8 bit color stores 256 possible colors from 0 thru 255.

Aug 06 17 03:37 pm Link

Retoucher

3869283

Posts: 1464

Sofia, Sofija grad, Bulgaria

Mark Salo wrote:
Well, slap me down because I'm probably wrong.  But isn't the first bit (in human language) the zero bit in computer language.  So the 15th bit in computer language is the 16th bit in human language.

You seem to be mixing indexing with bit depth. Yes, usually in computer languages the zero element is the first element. But in 16 bits you still have 2^16 total elements. It is just that the values are indexed as 0-65535 and not 1-65536.

2^0 = 1 - which means with 0 bits you can have only 1 value
2^1 = 2 - which means with 1 bit you can have 2 values (0 or 1)
2^2 = 4 - which means with 2 bits you can have 4 values binary (00, 01, 10, 11) or in decimal (0, 1, 2, 3)
...
2^15 = 32768 (0-32767)
2^16 = 65536 (0-65535)

Aug 06 17 03:50 pm Link

Retoucher

3869283

Posts: 1464

Sofia, Sofija grad, Bulgaria

Founds some info. Adobe seem to have done it on purpose:

https://forums.adobe.com/thread/583452

and someone else has noticed the lack of accuracy of tools.

Aug 06 17 11:49 pm Link

Retoucher

3869283

Posts: 1464

Sofia, Sofija grad, Bulgaria

FWIW: I tried test 1 in gimp 2.9. In an image with size 65535x1 the application creates full truly linear gradient from 1 to 65535. Opening the file in Photoshop shows values from 1 to 32768, incrementing every 2 pixels, so it seems the measurement tools in PS don't show the actual values but reduce them too.

Aug 07 17 01:29 am Link

Photographer

LightDreams

Posts: 4440

Vancouver, British Columbia, Canada

Looks like between you and the article you referenced, that it's a pretty solid case that it's actually (just slightly over) 15 bits and not a "full" 16 bits.   I.E. They can truthfully claim to be USING all 16 bits, but the catch is that the 16th bit value is only a numeric plus 1 to make it easier to determine a mid point or use divisional math, etc.

For those that haven't read the linked article, the range of values is exactly the 15 bit total PLUS (the number) ONE, which is the 16th bit, instead of fully using (almost doubling) the additionally available combination values that full use of a 16th bit could provide.

Aug 08 17 07:39 pm Link

Photographer

j francis photography

Posts: 511

Los Angeles, California, US

LightDreams wrote:
Looks like between you and the article you referenced, that it's a pretty solid case that it's actually (just slightly over) 15 bits and not a "full" 16 bits.   I.E. They can truthfully claim to be USING all 16 bits, but the catch is that the 16th bit value is only a numeric plus 1 to make it easier to determine a mid point or use divisional math, etc.

For those that haven't read the linked article, the range of values is exactly the 15 bit total PLUS (the number) ONE, which is the 16th bit, instead of fully using (almost doubling) the additionally available combination values that full use of a 16th bit could provide.

I used to be pissed, in the early 90s, that Photoshop wasn't floating point like all the proprietary software I was accustomed to.

Aug 08 17 08:14 pm Link

Retoucher

3869283

Posts: 1464

Sofia, Sofija grad, Bulgaria

Yes.

In which case it would be justified users to pay for only 6 months + 1 day of subscription and this should be considered full 12 months smile

Aug 08 17 11:26 pm Link

Photographer

Michael DBA Expressions

Posts: 3730

Lynchburg, Virginia, US

anchev wrote:
In which case it would be justified users to pay for only 6 months + 1 day of subscription and this should be considered full 12 months smile

Your logic, as usual, is impeccable. Something tells me ain't gonna happen, though.

Aug 11 17 07:04 am Link

Retoucher

FKW

Posts: 371

Yogyakarta, Yogyakarta, Indonesia

We dont see the number

Aug 11 17 12:06 pm Link

Retoucher

3869283

Posts: 1464

Sofia, Sofija grad, Bulgaria

FKW wrote:
We dont see the number

But we see the result of it and if the number is wrong - the result cannot be right. I actually noticed some visual discrepancies related to gradients and then I came to these tests.

Here is something more which demonstrates it:

1) A black to white (supposedly and almost) linear gradient generated in Photoshop (zoomed a lot). Notice the difference in the R channel (personally I can see visually the slight tint variations):

https://snag.gy/A5XenH.jpg

2) The same gradient generated in GIMP - really linear as explained earlier and R=G=B

https://snag.gy/JqjuY7.jpg

Aug 12 17 12:17 am Link

Retoucher

fireshoot

Posts: 100

Naples, Campania, Italy

anchev wrote:
But we see the result of it and if the number is wrong - the result cannot be right. I actually noticed some visual discrepancies related to gradients and then I came to these tests.

Here is something more which demonstrates it:

1) A black to white (supposedly and almost) linear gradient generated in Photoshop (zoomed a lot). Notice the difference in the R channel (personally I can see visually the slight tint variations):

https://snag.gy/A5XenH.jpg

2) The same gradient generated in GIMP - really linear as explained earlier and R=G=B

https://snag.gy/JqjuY7.jpg

This is inaccurate because you are in wrong. If you need to create a proper grayscale gradient and then convert it to Photoshop, you must create it correctly from the beginning, otherwise the conversion will be incorrect. How do you do a gradient RGB in Photoshop? You can see my attached are right and linear.
https://s18.postimg.cc/6i5i9ku95/image.jpg

Apr 28 18 04:54 am Link

Retoucher

3869283

Posts: 1464

Sofia, Sofija grad, Bulgaria

fireshoot wrote:
This is inaccurate because you are in wrong.

There are the steps to reproduce. If you follow them you will see the facts for yourself. I don't quite see how someone could be wrong for sharing actual, verifiable and observable facts.

If you need to create a proper grayscale gradient and then convert it to Photoshop, you must create it correctly from the beginning, otherwise the conversion will be incorrect.

This also makes no sense. It seems you imply that a gradient should be created beforehand outside of Photoshop (which renders Photoshop useless for the job) and it is totally unclear what "convert it to Photoshop" means. What are you talking about?

How do you do a gradient RGB in Photoshop?

Gradient adjustment layer.

You can see my attached are right and linear.
https://s18.postimg.cc/6i5i9ku95/image.jpg

What are you trying to demonstrate with this? It does not reveal steps to reproduce. Also how is it "right and linear" considering your samples are not even evenly spaced? (and are 8-bit)

Apr 28 18 06:43 am Link

Retoucher

fireshoot

Posts: 100

Naples, Campania, Italy

What are you trying to demonstrate with this? It does not reveal steps to reproduce. Also how is it "right and linear" considering your samples are not even evenly spaced? (and are 8-bit)

You are also climbing on the mirrors. Your demonstration posted that the gradient in photoshop produces an RGB with non-linear values is wrong. This is a fact. Create an 8 or 16 bit RGB layer. And the screenshoot is obvious is to 8 bit. Is a JPEG on web. But i posted screenshoot that show 16 bit. Creates a gradient fill from "BLACK TO WHITE". Check the values and they will be correct and not as you posted. Do you want see a demonstration video?
https://s18.postimg.cc/bwi2mc8p5/Senza_titolo-1.jpg

Apr 28 18 09:14 am Link

Retoucher

3869283

Posts: 1464

Sofia, Sofija grad, Bulgaria

Your file may be 16bpc but your measurement is 8-bit, which makes no sense in the context of what was previously shown as you are reducing the accuracy 256 times. Obviously you won't be able to notice the small differences with such measurement.

Also it is obvious even for a layman that on your screenshot from sample #1 to sample #2 there are 3 levels and from #2 to #3 there are 4 levels. Even if one assumes that your gradient is "correct":

#1 to #2:
78 - 60 = 18 values
18 / 3 levels = 6 values per level

#2 to #3:
105 - 78 = 27 values
27 / 4 levels = 6.75 per level

6 != 6.75

That proves that your gradient is not linear. Simple maths.

I really don't know what you are trying to do.

Apr 28 18 09:59 am Link

Retoucher

fireshoot

Posts: 100

Naples, Campania, Italy

anchev wrote:
Your file may be 16bpc but your measurement is 8-bit, which makes no sense in the context of what was previously shown as you are reducing the accuracy 256 times. Obviously you won't be able to notice the small differences with such measurement.

Also it is obvious even for a layman that on your screenshot from sample #1 to sample #2 there are 3 levels and from #2 to #3 there are 4 levels. Even if one assumes that your gradient is "correct":

#1 to #2:
78 - 60 = 18 values
18 / 3 levels = 6 values per level

#2 to #3:
105 - 78 = 27 values
27 / 4 levels = 6.75 per level

6 != 6.75

That proves that your gradient is not linear. Simple maths.

I really don't know what you are trying to do.

Agree the same. I do not understand what you wanted to show with your screenshots and the differences with Gimp. The values you placed did not make sense. And it does not hit the 8-bit measurement with the values shown in the info palette.

Apr 28 18 10:12 am Link

Retoucher

3869283

Posts: 1464

Sofia, Sofija grad, Bulgaria

fireshoot wrote:
I do not understand what you wanted to show with your screenshots and the differences with Gimp.

Because you don't look.

Gimp:
R = G = B (as it should be).
The gradient is linear.

PS:
R != G = B.
The gradient is not linear.

You quote it, argue about it but you have not read it smile

Apr 28 18 10:21 am Link

Retoucher

fireshoot

Posts: 100

Naples, Campania, Italy

Ok I try again. :-)
This is YOUR screenshot and you write:
1) A black to white (supposedly and almost) linear gradient generated in Photoshop (zoomed a lot). Notice the difference in the R channel (personally I can see visually the slight tint variations):
So you post this:
https://s18.postimg.cc/ekgpo4yhl/you.jpg
Now I show you is not as you write.
This is RGB Photoshop gradient. 8 bit and 16-bit measurement of this file.
and so: Linear gradient generated in Photoshop (zoomed a lot). I have NO Notice the difference in the R channel (personally I can't see visually the slight tint variations)
so:
https://s18.postimg.cc/5pfvdm1zd/image.jpg
so?................... https://assets.modelmayhem.com/images/smilies/smile.png

Apr 28 18 11:47 am Link

Retoucher

3869283

Posts: 1464

Sofia, Sofija grad, Bulgaria

I think you may be doing something differently.

Here are my steps:

1. File -> New 1000x1000x16bpc ProPhoto RGB
2. Layer -> New fill layer -> Gradient with settings

Angle = 0
Black (0, 0, 0) to white (255, 255, 255)
Smoothness = 0% (this is what makes the gradient linear (almost))

3. Measure the 16-bit values

Result: R != G = B
[link expired]

Here is the PSD: [link expired]

4. Help -> System info first line:
Adobe Photoshop Version: 2015.1.2 20160113.r.355 2016/01/13:23:59:59

Can you do the same and share the results + PSD?

Apr 28 18 01:45 pm Link

Retoucher

fireshoot

Posts: 100

Naples, Campania, Italy

There is something weird. If your screenshots refer to the file you attached to me, I do not understand why you do not have the same RGB values. I measured your file, but the values are always the same. So I can not say that you're wrong because if it is true that the measurement is the one you post, so I understand what you mean. But to me the measurement of your file is always correct. I show the screenshot about your file gradient.psd. However i attach you my psd.
This is your psd
https://s18.postimg.cc/ocohei53d/image.jpg
and my file psd
https://www.dropbox.com/s/25ty25ipwr2mf … o.rar?dl=0

Apr 28 18 02:10 pm Link

Retoucher

3869283

Posts: 1464

Sofia, Sofija grad, Bulgaria

So as I thought you are doing something different:

1. Your file is 50x40px
2. You did not share a file with gradient adjustment layer.
3. You did not share info about your PS version.

Based on this comparison is not possible.

As for your measurement: It seems to me you have deliberately chosen gradient levels for which the RGB values match (because for these particular ones which you show I also get the same). So this is skewed. You have to measure the same values which I measure.

Apr 28 18 02:24 pm Link

Retoucher

fireshoot

Posts: 100

Naples, Campania, Italy

you have deliberately chosen gradient levels for which the RGB

do you think i'm playing?.....................
Ok watch this and download my file 1000x1000 with gradient adjustment layer.
or watch my video.
Watch when I scroll the mouse along the gradient, the values are never incorrect but always the same. Are ALWAYS the same.
https://www.dropbox.com/s/tm6p7u62bb1kz2z/vi.mp4?dl=0
Nothing changes even if you set 1000x1000. The values are always the same and you can check it on my file. Otherwise you have some problems with YOUR adobe photoshop.
https://s18.postimg.cc/4nasfdeqh/image.jpg
This is file 1000x1000 with gradient adjustment layer.
https://www.dropbox.com/s/956m936yfexp165/aa.rar?dl=0
and this is with Prophoto Profile. The same results.
https://www.dropbox.com/s/20w9ubsl1zt9r … o.rar?dl=0

anchev wrote:
So as I thought you are doing something different:

1. Your file is 50x40px
2. You did not share a file with gradient adjustment layer.
3. You did not share info about your PS version.

Based on this comparison is not possible.

As for your measurement: It seems to me you have deliberately chosen gradient levels for which the RGB values match (because for these particular ones which you show I also get the same). So this is skewed. You have to measure the same values which I measure.

Apr 28 18 03:01 pm Link

Retoucher

3869283

Posts: 1464

Sofia, Sofija grad, Bulgaria

Once again: This is not what I described.

* When opening aa.psd PS says it has no color profile (which means you have not followed step 1). You may have quite easily created it in grayscale mode and then converted to RGB in which case of will have all R=G=B (of course).

* Your gradient is not with the settings I described (smoothness is not 0%). This means you have not followed step 2.

* You still measure other values. = You have not followed step 3

* There is still no info about your PS version. =  Step 4 is still missing.

You can't follow even one of 4 simple steps yet you tell another "you are wrong" or "you have some problems". Sorry but I don't have the time for such discussion.


ETA: You keep editing your posts after I replied. OK - I saw your video. It still shows that you are not doing step 2 as explained. For you obviously R=G=B. Obviously your PS version is different (at least considering that it is in Italian) and if it is newer maybe this issue has been fixed. Still step 4 is missing and I don't know.

Apr 28 18 03:45 pm Link

Retoucher

fireshoot

Posts: 100

Naples, Campania, Italy

Here is a another video with step 2 and
my version of PS is Adobe CC 2018

1) 1000x1000
2) Prophoto Profile
3) Smoothness is 0
4) I create a normal RGB gradient and no anyway.
5) Angle = 0
Black (0, 0, 0) to white (255, 255, 255)
6). Measure the 16-bit values
No problems.......
https://www.dropbox.com/s/j0j41exko7mcaoa/pa.mp4?dl=0

Apr 28 18 04:09 pm Link

Retoucher

3869283

Posts: 1464

Sofia, Sofija grad, Bulgaria

fireshoot wrote:
my version of PS is Adobe CC 2018

Obviously that's the key.
Good if they have fixed it.

Apr 28 18 04:28 pm Link

Retoucher

fireshoot

Posts: 100

Naples, Campania, Italy

anchev wrote:
Obviously that's the key.
Good if they have fixed it.

Ok, Now we understood where was the problem. In Photoshop version. Unfortunately I do not own the previous one and I have no feedback if not your posts. In the end we say that FINALLY ADOBE FIXED THAT PROBLEM.
Goodnight wink

Apr 28 18 04:34 pm Link

Retoucher

3869283

Posts: 1464

Sofia, Sofija grad, Bulgaria

Maybe. Still the main topic (that 16 bit is not 16 bit) remains an issue.

Apr 29 18 01:39 am Link