2011-01-06 15 views

Respuesta

3

Me parece que

if (B>R) { 
    color=cool 
} else { 
    color=warm 
} 

es una muy buena aproximación. Puede comprobar esto en su rueda de color usando: http://www.colorzilla.com/firefox/

+1

Quizás sea una buena aproximación, pero tendrá que factorizar el valor verde en algún lugar si quiere determinar esto con precisión ... Por ejemplo, (50, 200, 0) produce un bonito color verde medio que probablemente se consideraría un color "cool". –

+0

No me sentí completamente cómodo ignorando el verde, pero me parece que las clasificaciones como "cálido" y "genial" son lo suficientemente subjetivas como para que "determinar con precisión" sea un exceso de ingeniería ... Supongo que depende de los requisitos. –

+0

Tiene toda la razón sobre la subjetividad. La cultura, a través del lenguaje, determina lo que las personas conocen como diferentes colores y variantes del mismo color. Por ejemplo, algunos idiomas usan la misma palabra para verde y azul, e incluso la misma palabra para azul y negro (por ejemplo, http://en.wikipedia.org/wiki/Distinguishing_blue_from_green_in_language). Pero si la gente realmente * ve * diferentes o los mismos colores es otro asunto (por ejemplo, http://en.wikipedia.org/wiki/Linguistic_relativity_and_the_color_naming_debate). –

41

Tomando la imagen se ha vinculado a una referencia de lo que es "caliente" y "frío", obtenemos lo siguiente.

Colour wheel

  • El color más caliente es completamente rojo (R = 255, G = 0, B = 0).
  • El color más frío es completamente azul (R = 0, G = 0, B = 255).

Cuanto más R tengas, cuanto más cálido sea el color, y cuanto más B tengas, más frío será el color. El G te lleva a través de tonos de turquesa, verde y amarillo, cada uno de ellos cada vez más cálido. Cuando G es cero, te mueves en la diagonal inferior izquierda del círculo cuando R y B cambian. Cuando G se acerca a 255, cruzas la diagonal superior derecha cuando R y B cambian.

Sin embargo, los colores cálidos y fríos adyacentes tienen una cantidad diferente de verde en ellos. El rojo inmediatamente debajo de la línea diagonal tiene menos verde que el rojo inmediatamente encima. El azul inmediatamente debajo de la línea diagonal tiene menos verde que el azul inmediatamente sobre él. Esta rueda de color parece que no representa demasiado bien el espacio RGB, especialmente en el extremo azul del espectro.

En última instancia, lo que percibes como cálido y frío depende de la configuración de tu monitor y de las condiciones de iluminación. Mucho de esto es también tu percepción y cognición, lo que piensas que es cálido o frío. En una imagen, los contrastes de color afectarán tu juicio. Un color "intermedio" junto a un color claramente frío se verá cálido, pero si el mismo color está junto a un color claramente cálido, se verá genial. Tomar un vistazo a esta rueda de color:

colourwheel

Aquí, se muestra cada color de 24 bits (8 bits para cada uno de R, G, y B), y los valores RGB para la parte superior, derecha Se muestran los colores inferior, inferior e izquierdo. En mi opinión, hay más colores "fríos" que "cálidos". Espero que esto te ayude a decidir cuáles son los valores RGB para lo que percibes como colores fríos y cálidos.

Bonificación: En la imagen de arriba, también puede ver los colores expresados ​​en el modelo de color de matiz, saturación y valor (HSV). Hue básicamente codifica el color. La saturación codifica qué tan "lleno" es el color; menos saturación lo hace más "sombrío", es decir. blanco. El valor codifica cuán oscuro es: menos valor lo hace más negro, y también hace que el blanco de la saturación sea más gris. Hue va de 0 a 360 y corresponde al ángulo de un círculo, siendo 0 totalmente rojo, 90 es una especie de verde neón, 180 es azul brillante, 270 es púrpura azulado y 360 vuelve a rojo. S y V van de 0 a 100 e influirán en la sombra exacta; estos ejemplos son con S = V = 100.

En mi opinión, los valores H en los rangos 0-80 y 330-360 son cálidos, mientras que H> 80 y H < 330 están fríos (aproximadamente).

Es posible que desee abrir el selector de color en su programa de pintura favorito.Por lo general, pueden mostrar HSV y RGB uno al lado del otro y le permiten jugar con una rueda de colores y ver los efectos en los números HSV y RGB. Si aún no tiene uno, sugeriría GIMP. Tiene la rueda de colores que he estado usando para obtener los números para esta respuesta.

Bonus 2: Todo lo anterior supone una valoración subjetiva de lo que es caliente y lo que es fresco. Creo que la única manera de hacer una medición objetiva de la temperatura de color es medirla y expresarla en una escala de temperatura. A menudo Kelvin parece ser usado. Esta medida tiene en cuenta no solo el tono del color, sino también su brillo (o la cantidad de luz que emite). Si tiene un monitor moderno, probablemente tenga una configuración de temperatura con algunos valores Kelvin para elegir. Es posible calcular la temperatura de cada color RGB en su pantalla, siempre que conozca la temperatura de su blanco (el balance de blancos). Sin embargo, este cálculo es muy complejo y no sé cómo hacerlo. Puede encontrar Bruce Lindbloom una buena fuente para obtener más información, o cualquier libro sobre ciencia del color. Pero creo que esto es más de lo que esperaba con su pregunta ... ;-)

+1

+1 Una excelente respuesta a una pregunta desafiante. –

+1

Simplemente diría: conviértase en HSV/HSL y luego simplemente determine la calidez basada en H. No hay necesidad de pensar qué hacer con el verde :-) – user562374

+0

@ user562374: Estoy completamente de acuerdo y lo habría publicado como respuesta (completo con código de conversión de muestra), excepto que la pregunta explícitamente requiere una solución para el espacio de color RGB. –

1

ya ha respondido, pero necesita añadir lo siguiente:

Si usted está interesado en dependencias de la temperatura de color y físicas entonces este es la escala que busca:

Black body Temperature color

es el color de la luz emitida desde cuerpo negro de temperatura dada. En astronomía se usa para la clasificación del color de las estrellas (como BV color index).

También se puede utilizar para mediciones indirectas de temperatura.

Cuestiones relacionadas