El tratamiento de ficheros binarios es algo que, aunque parezca mentira, no está limitado a alienígenas, con unas nociones básicas el mundo que te rodea, sencillamente, cambia por completo.
En este articulo vamos a comentar, de una forma simplificada, cómo funciona el renderizado de imágenes, sobre todo vamos a centrarnos en el concepto de “color”.
¿Y qué es el color?
Bueno, lo idóneo es empezar por aquí: el color es un fenómeno que se produce en la naturaleza. El color no es un objeto. Una pelota, por ejemplo, no es de color rojo porque el objeto sea rojo sino porque la vemos e interpretamos de color rojo, es decir, somos nosotros mismos quienes decidimos que un objeto es de un color u otro y es aquí donde os va a explotar la cabeza.
Tu retina se encarga de estimular tu nervio óptico en base a lo que la retina recibe, la información que recibe tu retina son ondas electromagnéticas, al recibir esas ondas, se interpreta esa información en función a las frecuencias que recibe y dependiendo de las mismas el nervio óptico envía información al cerebro de un color u otro.
¿Y cómo lo hace?
Podemos decir que tu ojo es como una pantalla y dentro de tus células fotorreceptoras se encuentran conos y bastones, dichos conos y bastones actúan como receptores de luz y actúan de forma muy parecida al estándar RGB.
De forma muy simplificada, así funciona la recepción del color en un humano.
El caso viene en que, cuando un renderizador gráfico (la parte de un ordenador que se encarga de interpretar los gráficos) se encarga de interpretar el color funciona exactamente igual, el renderizador no sabe exactamente de que color es una imagen, tienes que darle esa información.
Por lo normal, una imagen se puede componer de dos formas ya sea por la técnica de “luz + color” (luminancia y crominancia) o por la técnica “texel” (texture element, contienen información de color, luminosidad, saturación, etc…) que vamos a explicar a continuación.
La técnica de “luz + color” se basa en formar una imagen mediante bytes que varían de valor dependiendo de su luminosidad, es decir, cuanto menor sea el valor de ese byte, menor luminosidad, cuanto mayor sea el valor, mayor luminosidad.
Posteriormente, tenemos una paleta que se encarga de darle a esa luminosidad unos valores, dependiendo del formato de la imagen esto cambia por lo que hay que tener mucho ojo, igualmente, usaremos el formato de color RGBA32 para ello.
Sabiendo esto, el renderizador va a tratar de dibujar los bytes en función a la luminosidad y superponer los valores RGBA para darle color.
Y después tenemos la técnica “texel”, los texeles incluyen esa luminosidad, por lo que simplemente dibujamos como si pintásemos con temperas en un lienzo, es decir, aplicamos valores RGBA sobre un lienzo y pintamos, cada objeto “texel” es un pixel en pantalla con un determinado color y luminosidad.
Por lo tanto, en definitiva, los colores realmente no están escritos en el programa, si no que el programa determina que debe elegir un tipo de renderizado u otro, esto significa que podríamos, por ejemplo, simular daltonismo e incluso la perdida de la visión de los colores en el renderizado, podríamos simplemente renderizar en blanco y negro modificando el patrón de bits en el texel, y esto se debe a que la luminosidad es simplemente el resultado de una simplisima ecuación.
Basicamente, si conseguimos aislar cada uno de los colores dentro del componente RGB y dividimos entre 3 el resultado de la suma de los mismos obtenemos un byte cuyo valor irá entre 0 y 255, ese byte es el equivalente directo a la luminosidad de la imagen, o lo que es lo mismo, el valor en la escala de grises.
Así podemos pasar una imagen de color a blanco y negro, basicamente.
Si os ha gustado este pequeño articulo o tenéis cualquier duda, decidlo en los comentarios, ya que si tenemos un feedback positivo explicaremos más y más cosas sobre el trabajo que efectuamos los tecnicos de Tradusquare.