AWARE [SYSTEMS] Imaging expertise for the Delphi developer
AWare Systems, Imaging expertise for the Delphi developer, Home TIFF and LibTiff Mailing List Archive

LibTiff Mailing List

TIFF and LibTiff Mailing List Archive
March 2001

Previous Thread
Next Thread

Previous by Thread
Next by Thread

Previous by Date
Next by Date

Contact

The TIFF Mailing List Homepage
This list is run by Frank Warmerdam
Archive maintained by AWare Systems



Valid HTML 4.01!



Thread

2001.03.28 14:50 "Bit depth", by Andrew Jarvis
2001.03.28 16:32 "Re: Bit depth", by Joe Dumoulin
2001.03.29 08:02 "Re: Bit depth", by Andrew Jarvis
2001.03.29 11:03 "Re: Bit depth", by Marti Maria
2001.03.29 11:14 "Re: Bit depth", by Andrew Jarvis
2001.03.29 11:44 "Re: Bit depth", by Marti Maria
2001.03.29 16:57 "Re: Bit depth", by Chris Hanson
2001.03.29 18:23 "Re: Bit depth", by Andreas R Kleinert
2001.03.29 18:30 "Re: Bit depth", by Marti Maria
2001.03.29 17:02 "Re[2]: Bit depth", by Rainer Wiesenfarth
2001.03.28 18:07 "Re: Bit depth", by Frank Warmerdam
2001.03.28 18:52 "Re: Bit depth", by Max Martinez

2001.03.29 16:57 "Re: Bit depth", by Chris Hanson

Martí Maria wrote:
> > What is required is a left shift of 5 places which is equivalent to
> > multiplication by 65536/2048=32.
>
> Nope, think it carefully... try those values
>
> Max value of 11 bits: 2047 = 0x7FF, if you apply a
> left shif of 5 you got 65504=0xFFe0, while you should
> obtain maximum 16 bit value: 0xFFFF
>
> This is a frequent mistake when converting from 8 to 16 bits,
> many implementations I've seen does simply shift left 8, while
> they should multiply by 257

Marti is basically right about preserving the upper range.

A trick that was suggested in the Amiga IFF documentation
when converting to higher bit depths, was to replicate the
higher-order bits into the unused low-order bits.

If your original value was 0x0fcb (12-bits lower used)
you could convert this to either 0xfcbb or 0xfcbf, by grabbing
either the highest nibble (4-bits) or the lowest nibble in
the original value. In this way, as the original value
approaches 0 or 0xfff, the 'fluff' bits that you are adding to
complete the range will also properly scale to 0 or f.

I'm not really clear on whether using the highest or lowest
nibble is better. Probably depends on the characteristics of
your original data.

This operation can be done efficiently with masks and shifts,
no floating-point multiplication or division is necessary.

Chris - Xenon
-- 
  Chris Hanson | Xenon@3DNature.com | I've got friends in low latitudes!
         New WCS 5 Demo Version!     http://www.3DNature.com/demo/
  "There is no Truth. There is only Perception. To Perceive is to Exist." - Xen