[Image-SIG] 3-bit color palette
jcupitt at gmail.com
jcupitt at gmail.com
Sun Mar 30 09:49:50 CEST 2008
On 30/03/2008, Gokce Taskan <gokcetaskan at gmail.com> wrote:
> I've been searching all over the internet for a method to convert an
> image to a 8 color (3-bit) image. I've used these:
> I am trying find a method to output a resonable image which would look
> like the one in
> http://en.wikipedia.org/wiki/List_of_monochrome_and_RGB_palettes#3-bit_RGB
>
> Do you have any advices?
To convert a 24-bit RGB image to a 3-bit one, just take the top bit
from each channel and OR them together. In C:
bit3 = ((r & 128) >> 5) | ((g & 128) >> 6) | ((b & 128) >> 7)
You can make it look much better with a dither. A 2D error diffusion
dither is fast and works well.
To convert back to 24-bit RGB (again, in C):
unsigned char lut[2] = {0, 255}
r = lut[(bit3 & 4) >> 2]
g = lut[(bit3 & 2) >> 1]
b = lut[bit3 & 1]
John
More information about the Image-SIG
mailing list