Resultados 1 al 7 de 7

Hilo: Espacio de color RGB: fórmula

  1. #1
    Registro
    Feb 2018
    Posts
    2
    Nivel
    Universidad (Química)
    ¡Gracias!
    0 (0 msgs.)

    Predeterminado Espacio de color RGB: fórmula

    Hola buenas

    Estoy trabajando con valores de RGB y el programa GNUPLOt. Dicho programa utiliza la fórmula RGB (R,G,B) = 256*256*int(R) + 256*int(G) + int(B).
    ¿Alguien podría decirme si conoce el origen de esta fórmula? Es decir, ¿por qué es así? ¿Por qué es R el que se multiplica por 65536 y no B?

    Estoy mareada de buscar en la web y no encuenro ninguna solución. Sólo he averiguado que el número es 256 porque es el número de colores que se pueden obtener con cada parámetro, pero no el porqué de su orden.

    Muchas gracias
    Un saludoooo
    Selena

  2. #2
    Registro
    Mar 2006
    Ubicación
    La fuente
    Posts
    8 437
    Nivel
    DEA en Física
    Artículos de blog
    30
    ¡Gracias!
    2 917 (2 257 msgs.)

    Predeterminado Re: Espacio de color RGB: fórmula

    Tiene que ver con la forma que interpretan los números internamente los ordenadores. Como seguramente sabes, utilizan código binario. Cada componente del color es un byte (8bits). Por lo tanto, un color completo son tres bytes. Es decir, 24 dígitos binarios.

    La codificación binaria tiene la particularidad que cada vez que multiplicas por una potencia de 2, como 2^n), es equivalente a añadir n ceros a la derecha. Esto es lo mismo que pasa cuando multiplicamos un número decimal por una potencia de 10. Fíjate que 256 = 2^8. Así que multiplicar por 256 lo que hace es añadir 8 ceros a la derecha del número binario. Obviamente, multiplicar dos veces (o, lo que es lo mismo, multiplicar una vez por 65536) tiene el efecto de añadir 16 ceros a la derecha.

    Al final, lo que consigues con la fórmula que has puesto es generar en la memoria del ordenador un entero que ocupa 24 bits (3 bytes). Los primeros ocho bitscorresponden a la componente R, los ocho intermedios a la G y los últimos ocho a la B.

    Un ejemplo: El color (r,g,b) = (22, 232, 186) es una especie de verde azuloso. Convertido a binario (lo puedes hacer con cualquier calculadora, o incluso en el propio google), las componentes son

    \begin{aligned} 
22 & = 0001 0110_b , \\ 
232 &= 1110 1000_b , \\ 
186 & = 1011 1010_b . 
\end{al...

    La fórmula que tu has puesto arroja el resultado

    RGB(22,232,186) = 256 \cdot 256 \cdot 22 + 256 \cdot 232 + 186 = 1\,501\,370 .

    Fíjate que convertir esto a binario nos da el siguiente resultado

    RGB(22,232,186) = \underbrace{0001 0110}_{22} \underbrace{11101000}_{232} \underbrace{1011 1010}_...


    No sé si así queda suficientemente claro. Quizá te sirva un ejemplo decimal. Si quisiéramos montar un único numero entero juntando los dígitos de las tres componentes, tendrías que multiplicar por una potencia de 10. Como los colores tienen 3 dígitos, será 10^3. Eso te daría

    RGB_{10} = 10^3 \cdot 10^3  \cdot 22 + 10^3  \cdot 232 + 186 = 22\,232\,186.

    Pues esto es lo mismo, pero se utiliza 2^8 porque esos números ocupan 8 dígitos binarios.

    Fíjate que no es tan importante el número de valores diferentes, sino la cantidad de dígitos que quieres reservar.
    Última edición por pod; 28/02/2018 a las 16:09:15.
    La única alternativo a ser Físico era ser etéreo.
    @lwdFisica

  3. 3 usuarios dan las gracias a pod por este mensaje tan útil:

    Alriga (28/02/2018),Jaime Rudas (28/02/2018),Maq77 (01/03/2018)

  4. #3
    Registro
    Feb 2015
    Ubicación
    Buenos Aires
    Posts
    105
    Nivel
    Universidad (Otras ciencias)
    ¡Gracias!
    31 (24 msgs.)

    Predeterminado Re: Espacio de color RGB: fórmula

    Cada uno de los tres colores primarios, Rojo, Verde y Azul, se pueden mover en un rango de valores de intensidad que van desde 0 hasta 255, o sea, pueden obtener 256 valores diferentes, en la combinación de los tres es irrelevante el orden por el cual inicies, lo importante es que cuentes cada posible combinación una sola vez, es por eso que en teoría puedes generar una paleta de 16.777.216 colores diferentes, pasando desde el Negro (R=0;G=0;B=0) hasta el Blanco en (R=255;G=255;B=255).

    El uso de esos tres colores viene más que todo por la teoría del Color, puedes revisar información sobre los círculos cromáticos y la generación de los diferentes colores a través de la combinación de los colores primarios, recuerda también que los colores se pueden generar por adición o por sustracción, en el caso de los monitores los colores se crean por adición utilizando para ello al Rojo, Verde y Azul como colores primarios.
    Última edición por Maq77; 01/03/2018 a las 13:54:20. Razón: Corregir un error tipográfico

  5. El siguiente usuario da las gracias a Maq77 por este mensaje tan útil:

    Alriga (28/02/2018)

  6. #4
    Registro
    Jun 2015
    Ubicación
    Reus
    Posts
    3 971
    Nivel
    Universidad (Ingeniería)
    Artículos de blog
    5
    ¡Gracias!
    3 688 (2 435 msgs.)

    Predeterminado Re: Espacio de color RGB: fórmula

    Hola SELENA, bienvenida a La web de Física, por favor como miembro reciente lee atentamente Consejos para conseguir ayuda de forma efectiva

    Cita Escrito por pod Ver mensaje
    Tiene que ver con la forma que interpretan los números internamente los ordenadores. Como seguramente sabes, utilizan código binario. Cada componente del color es un byte (8bits). Por lo tanto, un color completo son tres bytes. Es decir, 24 dígitos binarios.

    La codificación binaria tiene la particularidad que cada vez que multiplicas por una potencia de 2, como 2^n), es equivalente a añadir n ceros a la derecha. Esto es lo mismo que pasa cuando multiplicamos un número decimal por una potencia de 10. Fíjate que 256 = 2^8. Así que multiplicar por 256 lo que hace es añadir 8 ceros a la derecha del número binario. Obviamente, multiplicar dos veces (o, lo que es lo mismo, multiplicar una vez por 65536) tiene el efecto de añadir 16 ceros a la derecha.

    Al final, lo que consigues con la fórmula que has puesto es generar en la memoria del ordenador un entero que ocupa 24 bits (3 bytes). Los primeros ocho bitscorresponden a la componente R, los ocho intermedios a la G y los últimos ocho a la B.

    Un ejemplo: El color (r,g,b) = (22, 232, 186) es una especie de verde azuloso. Convertido a binario (lo puedes hacer con cualquier calculadora, o incluso en el propio google), las componentes son

    \begin{aligned} 
22 & = 0001 0110_b  \\ 
232 &= 1110 1000_b  \\ 
186 & = 1011 1010_b  
\end{aligned}

    La fórmula que tu has puesto arroja el resultado

    RGB(22,232,186) = 256 \cdot 256 \cdot 22 + 256 \cdot 232 + 186 = 1\,501\,370

    Fíjate que convertir esto a binario nos da el siguiente resultado

    RGB(22,232,186) = \underbrace{0001 0110}_{22} \underbrace{11101000}_{232} \underbrace{1011 1010}_...


    No sé si así queda suficientemente claro. Quizá te sirva un ejemplo decimal. Si quisiéramos montar un único numero entero juntando los dígitos de las tres componentes, tendrías que multiplicar por una potencia de 10. Como los colores tienen 3 dígitos, será 10^3. Eso te daría

    RGB_{10} = 10^3 \cdot 10^3 \cdot 22 + 10^3 \cdot 232 + 186 = 22\,232\,186

    Pues esto es lo mismo, pero se utiliza 2^8 porque esos números ocupan 8 dígitos binarios.

    Fíjate que no es tan importante el número de valores diferentes, sino la cantidad de dígitos que quieres reservar.
    Cita Escrito por Maq77 Ver mensaje
    Cada uno de los tres colores primarios, Rojo, Verde y Azul, se pueden mover en un rango de valores de intensidad que van desde 0 hasta 255, o sea, pueden obtener 256 valores diferentes, en la combinación de los tres es irrelevante el orden por el cual inicies, lo importante es que cuentes cada posible combinación una sola vez, es por eso que en teoría puedes generar una paleta de 16.777.216 colores diferentes, pasando desde el Negro (R=0;G=0;B=0) hasta el Blanco en (R=255;G=255;B=255).

    El uso de esos tres colores viene más que todo por la teoría del Color, puedes revisar información sobre los círculos cromáticos y la generación de los diferentes colores a través de la combinación de los colores primarios, recuerda también que los colores se pueden generar por adición o por sustracción, en el caso de los monitores los coleres se crean por adición utilizando para ello al Rojo, Verde y Azul como colores primarios.
    Aparte de lo que te explican pod y Maq77, he visto una web en la que puedes "jugar" con diversos valores aquí: RGB Color Codes Chart

    Saludos.
    Última edición por Alriga; 28/02/2018 a las 16:14:57.

  7. El siguiente usuario da las gracias a Alriga por este mensaje tan útil:

    Maq77 (28/02/2018)

  8. #5
    Registro
    Feb 2018
    Posts
    2
    Nivel
    Universidad (Química)
    ¡Gracias!
    0 (0 msgs.)

    Predeterminado Re: Espacio de color RGB: fórmula

    Muchas gracias POD.
    Pero mi duda es la razón por la que es el parámetro R el que se multiplica por 65536 y no el B, por ejemplo. ¿Da igual o hay alguna razón? Es para una investigación y necesito justificar la ecuación.

    Un saludo

  9. #6
    Registro
    Jun 2015
    Ubicación
    Reus
    Posts
    3 971
    Nivel
    Universidad (Ingeniería)
    Artículos de blog
    5
    ¡Gracias!
    3 688 (2 435 msgs.)

    Predeterminado Re: Espacio de color RGB: fórmula

    Cita Escrito por SELENA Ver mensaje
    Pero mi duda es la razón por la que es el parámetro R el que se multiplica por 65536 y no el B, por ejemplo. ¿Da igual o hay alguna razón?
    La razón es porque al sistema históricamente se le llama arbitrariamente RGB con la R al principio. Si se le hubiese llamado GRB sería la G la que se multiplica por 256^2 y si inicialmente le hubiesen por ejemplo llamado BRG sería la B.

    Un posible motivo para que lo bautizasen en el orden RGB es que lo ordenasen de menor a mayor frecuencia: la frecuencia electromagnética del rojo es inferior a la del verde que es inferior a la del azul. Pero no deja de ser una arbitrariedad, si lo hubiesen ordenado por longitud de onda creciente se llamaría BGR

    Saludos.
    Última edición por Alriga; 01/03/2018 a las 15:56:07. Razón: Ortografía

  10. El siguiente usuario da las gracias a Alriga por este mensaje tan útil:

    Maq77 (01/03/2018)

  11. #7
    Registro
    Feb 2015
    Ubicación
    Buenos Aires
    Posts
    105
    Nivel
    Universidad (Otras ciencias)
    ¡Gracias!
    31 (24 msgs.)

    Predeterminado Re: Espacio de color RGB: fórmula

    Cita Escrito por SELENA Ver mensaje
    Hola buenas

    Estoy trabajando con valores de RGB y el programa GNUPLOt. Dicho programa utiliza la fórmula RGB (R,G,B) = 256*256*int(R) + 256*int(G) + int(B).
    ¿Alguien podría decirme si conoce el origen de esta fórmula? Es decir, ¿por qué es así? ¿Por qué es R el que se multiplica por 65536 y no B?
    Otra cosa que puedes hacer para salir de dudas es utilizar el programa GNUPLOT, y aplicar una pequeña modificación de la fórmula para experimentar que resultado obtienes, por ejemplo, pudieras utilizar:

    RGB (R,G,B) = 256*int(R) + 256*256*int(G) + int(B)

    ó

    RGB (R,G,B) = int(R) + 256*int(G) + 256*256*int(B)

    Saludos.

Información del hilo

Usuarios viendo este hilo

Ahora hay 1 usuarios viendo este hilo. (0 miembros y 1 visitantes)

Hilos similares

  1. Otras carreras Diferencia entre cuadrivectores del espacio curvo y del espacio Loretz-Minkowski.
    Por Gravity en foro Relatividad y cosmología
    Respuestas: 3
    Último mensaje: 04/04/2017, 23:30:56
  2. Divulgación Expansión del espacio versus creación de espacio
    Por C1945 en foro Relatividad y cosmología
    Respuestas: 31
    Último mensaje: 04/09/2012, 08:47:15
  3. Respuestas: 1
    Último mensaje: 03/12/2010, 23:54:08

Etiquetas para este hilo

Permisos de publicación

  • No puedes crear hilos
  • No puedes responder
  • No puedes adjuntar archivos
  • No puedes editar tus mensajes
  •