[sane-devel] Color depth upsampling and compressibility
Matto Marjanovic
maddog at mir.com
Mon Jul 18 14:15:14 UTC 2005
>> On Mon, Jul 11, 2005 at 05:11:48PM +0200, Mattias Ellert wrote:
>>> Even better would be:
>>>
>>> *dst-- = ((*src << 4) & 0xf0) + ((*src) & 0x0f);
>>> *dst-- = ((*src) & 0xf0) + ((*src-- >> 4) & 0x0f);
>>>
>>> Then 0 would map to 0 and 15 to 255, i.e. white is white and black is
>>> black.
>>
>> You're right. I've changed taht in sp15c.c in CVS.
>
>Some quick Googling doesn't provide dispositive information on this
>strategy's impact on compressibility. However I suspect that introducing
>pseudo-random data in the low nybble will reduce compressibility beyond
>simply squaring the symbol table. (Hence, my initial ponderings on
>tweaking the constant)
(Admittedly, I haven't been completely following this thread, but...)
To scale from a [0,15] value to a [0,255] value, you have to multiply
by (255/15) = 17.
And the above nybble-duplication algorithm effectively muliplies by 0x11,
i.e.... 17.
So, it's not pseudo-random data; it's the effect of correctly scaling the
original value. There isn't really any other way to do it without
introducing junk/noise bits into the image.
(However, given that 17 is the most random number, this may have some
effect on compressibility. :)
-matt m.
More information about the sane-devel
mailing list