Alley in Pisa, Italy

by Lars Kotthoff

submit your photo


Hall of Fame
View past winners from this year

Please participate in Meta
and help us grow.

Take the 2-minute tour ×
Photography Stack Exchange is a question and answer site for professional, enthusiast and amateur photographers. It's 100% free, no registration required.

I have a set of photos that where scanned at 8 bit color depth. Is it possible to increase the color depth digitally? I realize just increasing the color depth would gain me nothing unless it also interpolated similar to increasing a photo's pixels.

Any software tools for this? I am using a mac.

share|improve this question

5 Answers 5

up vote 4 down vote accepted

Why do you want to increase colour depth? Colour depth has little to do with how intense, or how vibrant the colours look, only with transitions between similar colours.

To put it another way the main consequence of having a low colour depth is the appearance of banding or posterization in smooth colour transitions.

Increasing the colour depth on it's own does nothing to alleviate banding, as 8 bit values like 1010 0111 are simply replaced with 16 bit values like 1010 0111 0000 0000, which is essentially the same number but using more bits.

You can't use interpolation as there's nothing to interpolate between. You could use smoothing but that wont do anything to reduce the appearance of banding as most displays are 8bit devices anyway.

However you can add noise to effectively randomise the low order bits that otherwise get set to zero. And doing so does fight the appearance of banding, which is the only reason I can see to increase the colour depth, hence that's the answer to your question:

Yes, you can increase colour depth, but by adding noise, not interpolating.

share|improve this answer
    
"You can't use interpolation as there's nothing to interpolate between." Ok, I can see that and this is similar to what @fortran suggests. It seems that there would be value in adding color depth before making changes to color/exposure.... or is this not true? –  Vincent Jul 8 '13 at 14:15
1  
@Vincent increasing colour depth before making multiple image colour/contrast adjustments will certainly prevent any additional posterization or banding occurring. –  Matt Grum Jul 8 '13 at 14:47
1  
If one did convert and interpolate an 8-bit image into a 16-bit image, then added noise in the lower levels, the increase in bit depth should then be valuable. You would lose detail, but you would reduce or eliminate the chance of adding posterization (or other artifacts) during any further editing after the conversion. –  jrista Jul 8 '13 at 17:49

You can increase the colour depth at expense of reducing the spatial resolution.

I.e. if you downsample the image 50% on each axis, you can get 2 extra bits of colour depth.

Is it worth? I doubt it...

share|improve this answer
    
Two extra bits can be very meaningful. If you have only 8 bits of color, and add two more, your color depth increases from 16.7 million colors to over 1 billion colors. There are certainly caveats to that...most screens can only display 8-bit color anyway, and screens that can display 10-bit color tend to be expensive, and require special software setups and calibration hardware. Whether the increase in bit depth is USEFUL could be debatable, however that does not diminish the value of having an extra two bits of color depth. –  jrista Jul 8 '13 at 13:41
    
Remember that every new digit (bit) in binary increases the available numeric range by a factor of two. When it comes to color, since there are three components in RGB, that increase is compounded. –  jrista Jul 8 '13 at 13:43
    
Would this really be a meaningful gain? You're dealing with cropped values already in the pixels that you are blending, so I would challenge you are not actually getting 2 bits more of color depth, at-least not in a meaningful way compared to the original scene. –  AJ Henderson Jul 8 '13 at 14:05
    
@jrista What I meant is that the image loses information with the process... 4 8-bit-per-channel pixels hold more information than a single 10-bit-per-channel pixel. –  fortran Jul 8 '13 at 16:04
1  
@jrista - yeah, I'm not arguing against that and I think I mentioned it as a benefit in my answer, but you can get that by simply adding a 0 bit in the new least significant digit without having to take a resolution loss. (Hmm, I hadn't mentioned why you would want to in my answer after all. Guess I thought it but didn't write it. I updated to include it.) –  AJ Henderson Jul 9 '13 at 14:10

Yes, but you gain nothing. If you have two neighbouring pixels of intensity 128 and 127, the new interpolated one (between those two) will have an intensity of 127.5. This way you increased color depth (value 127.5 can't be stored in 8bits, but "can" in 9 bits - as value 255). If you interpolate more pixels, you must increase color depth more - double the dimension = add additional bit.

All stated above is valid for linear interpolation only. If you use (and you should) some more complex interpolations (bicubic etc.), you get intensity values that are more precise. But they must be rounded to fit into defined color depth.

share|improve this answer
1  
Is @fortran correct that this is only possible if the image is down scaled? Its not clear to me how using bicubic.. one would choose to change a pixles value. By that I mean this would seem to blur the color. Is this an improvement? Do you know of any examples of this being done or how I could test this? –  Vincent Jul 8 '13 at 14:17
1  
There are two very similar ways to look at it. You can downsample or upsample. I choose upsample, because you mentioned it in Q. Downsample on my example: You have two pixels, 128 and 127. By downsampling you will get one pixel of their "average" (when it is linear), thus 127.5. The rest is the same. For more information on interpolation look on wiki: en.wikipedia.org/wiki/Interpolation You will see that in case of polynomial you won't get average value between two sample values but something very different. –  Petr Újezdský Jul 8 '13 at 19:17

You can change the file format and map the original values to their new levels, but it won't more accurately reflect the original image since the data from the original is lost. Simply changing formats is a relatively simple linear operation (add one or more 0 bits to the right side of each value and update the color space). The main advantage of this is that it will remove rounding error resulting in further loss.

You could also try to reduce the resolution of the image (or simply use neighboring pixels) to blend pixels together to get values spread out over the new range, but again, these have no basis in the original image being captured, they are simply made up values.

share|improve this answer

Increasing the representation of the colour depth would do little to help you but there are plenty of options to improve the image you have. As you're on a mac the obvious first place to start is iPhoto, but there also online tools like pixlr which would allow you to tweak the contrast levels and colours quickly and simply.

share|improve this answer
    
I understand that but at the end of the day it is still 8 bit. I guess I would just like to see for myself that "Increasing the representation of the colour depth would do little to help" ;-) –  Vincent Jul 8 '13 at 13:06
    
It's a case of simple maths, think of the bits as a percentage rather than a real number. If you have something that is 50% bright, representing it as 50.00% adds 2 significant figures to the accuracy but doesn't actually do anything to change the underlying value. –  James Snell Jul 8 '13 at 13:14

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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