Forums >
Digital Art and Retouching >
Is 16-bit per channel one big lie by Adobe?
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. 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: 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 Maybe they use the other bit to represent negative numbers internally. Aug 06 17 02:14 pm Link Negative RGB values? Why? Aug 06 17 02:17 pm Link anchev wrote: . Aug 06 17 02:20 pm Link j francis photography wrote: 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 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 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 j francis photography wrote: https://en.wikipedia.org/wiki/Blend_modes#Subtract 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: 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 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 That's like saying that retouching is something which doesn't require accurate color 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 anchev wrote: Banding on a gradient? Aug 06 17 03:03 pm Link Here's a stack of images. 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 j francis photography wrote: It's an option. But there is no such option for gradients which you create in masks. j francis photography wrote: 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 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 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 Mark Salo wrote: 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. Aug 06 17 03:50 pm Link 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 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 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 LightDreams wrote: 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 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 Aug 08 17 11:26 pm Link anchev wrote: Your logic, as usual, is impeccable. Something tells me ain't gonna happen, though. Aug 11 17 07:04 am Link We dont see the number Aug 11 17 12:06 pm Link FKW 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. Aug 12 17 12:17 am Link anchev wrote: 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. Apr 28 18 04:54 am Link fireshoot wrote: 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. 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 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? Apr 28 18 09:14 am Link 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 anchev wrote: 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 fireshoot wrote: Because you don't look. Apr 28 18 10:21 am Link 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: 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: so?................... Apr 28 18 11:47 am Link 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 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 and my file psd https://www.dropbox.com/s/25ty25ipwr2mf … o.rar?dl=0 Apr 28 18 02:10 pm Link 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 you have deliberately chosen gradient levels for which the RGB do you think i'm playing?..................... anchev wrote: Apr 28 18 03:01 pm Link 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 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 fireshoot wrote: Obviously that's the key. Apr 28 18 04:28 pm Link anchev wrote: 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. Apr 28 18 04:34 pm Link Maybe. Still the main topic (that 16 bit is not 16 bit) remains an issue. Apr 29 18 01:39 am Link |