Go Down

Topic: Codificar RGB en solo dos bytes (Read 1 time) previous topic - next topic

chiva

#10
May 12, 2011, 11:31 pm Last Edit: May 13, 2011, 12:01 am by chiva Reason: 1
RGB es un espacio de color que tiene infintos colores, pero como esto es imposible implementarlo en la práctica, se usan distintas profundidades de color, siendo la de 24 y 32 bits las más comúnes en pantallas de ordenadores. Como los microcontroladores no gozan de tanta memoria y velocidad de procesamiento, se puede usar una profundidad de 16 bits, como la de la pantalla a la que hace referencia el post, lo que nos da una totalidad de 65536 colores.

A lo que me refería con lo de mezclarse, es que si los 3 bits altos del rojo y azul y los 2 del verde son siempre cero, como debieran, no hay que enmascarar nada.
A mi personalmente no me gusta enmascarar por que sí, sin necesidad alguna, ya que esconde fallos, pero si te manejas mejor así, pues tu mismo :D

De todas maneras lo de la pantalla ya se habló hace un tiempo: http://arduino.cc/forum/index.php/topic,32364.msg236679.html#msg236679
Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

Valen

Por si alguien tiene la curiosidad de conocer la pantalla, o simplemente tiene un problema parecido, este es el dispositivo:
http://www.4dsystems.com.au/prod.php?id=79

Gracias a todos,

xlopez

Si trabajas con colores RGB con 8 bits para cada color (24 bits) y lo quieres pasar al formato comprimido de 16 bits tienes que tener en cuenta lo siguiente:
- El rojo va a pasar de 8 a 5 bits (desaparecen 3 bits).
- El verde pasa de 8 a 6 bits (desaparecen 2 bits).
- El azul pasa de 8 a 5 bits (desaparecen 3 bits).

Los bits que tienes que quedarte son los mas significativos (los de la izquierda), desechando los menos significativos (los de la derecha).

La formas mas rápida de hacer esto es con desplazamientos:
     rojo  = rojo  >> 3;
     verde = verde >> 2;
     azul  = azul  >> 3;

Y luego los unes:
     iColorFull = (rojo << 11) |  (verde << 5) | azul;


Valen

Xlopez, muchas gracias, esto es lo que me faltaba por conocer, en el plano teórico. Hoy por la tarde lo pruebo, y os informo del resultado...

Valen


Go Up