2011-01-06 12 views

Odpowiedz

3

Wygląda mi na to,

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

jest dość dobrym przybliżeniem. Możesz to sprawdzić na kole kolorów za pomocą: http://www.colorzilla.com/firefox/

+1

Być może dobre przybliżenie, ale musisz podać wartość zieloną gdzieś w tym miejscu, jeśli chcesz to ustalić z jakąkolwiek dokładnością ... Na przykład, (50, 200, 0) tworzy ładny średni zielony kolor, który prawdopodobnie zostanie uznany za "fajny" kolor. –

+0

Nie czułem się całkowicie swobodnie przy ignorowaniu zieleni, ale wydaje mi się, że klasyfikacje takie jak "ciepły" i "chłodny" są na tyle subiektywne, że "określenie z dokładnością" może być nadmiernie inżynieryjne ... Myślę, że to zależy od wymagań. –

+0

Masz całkowitą rację co do subiektywności. Kultura, poprzez język, określa to, co ludzie dostrzegają jako różne kolory i warianty tego samego koloru. Na przykład niektóre języki używają tego samego słowa dla zieleni i niebieskiego, a nawet tego samego słowa dla niebieskiego i czarnego (np. Http://en.wikipedia.org/wiki/Distinguishing_blue_from_green_in_language). Ale to, czy ludzie faktycznie * widzą * różne lub te same kolory, to inna sprawa (np. Http://en.wikipedia.org/wiki/Linguistic_relativity_and_the_color_naming_debate). –

41

Zdjęcie, które łączysz jako odniesienie do tego, co "ciepłe" i "zimne", otrzymujemy następujące.

Colour wheel

  • Najgorętsze kolor jest całkowicie czerwony (R = 255, G = 0, B = 0).
  • Najzimniejszy kolor jest całkowicie niebieski (R = 0, G = 0, B = 255).

Im więcej masz R, tym cieplejszy kolor i im więcej B, tym chłodniejszy kolor. G przenosi Cię przez odcienie turkusu, zieleni i żółci, z których każda jest coraz cieplejsza. Kiedy G wynosi zero, poruszasz się w lewym dolnym ukośnym okręgu, gdy zmieniają się R i B. Gdy G zbliża się do 255, przekraczasz górną prawą przekątną, gdy zmieniają się R i B.

Jednak sąsiednie ciepłe i chłodne kolory mają różną ilość zieleni. Czerwień poniżej linii ukośnej ma mniej zieleni niż czerwień bezpośrednio nad nim. Niebieski bezpośrednio poniżej linii ukośnej ma mniej zieleni niż niebieski bezpośrednio nad nim. Koło kolorów wygląda tak, jakby nie reprezentowało przestrzeni RGB tak dobrze, zwłaszcza na niebieskim końcu widma.

Ostatecznie to, co odbierasz jako ciepło i zimno, zależy od ustawień monitora i warunków oświetlenia. Dużo to także twoja percepcja i poznanie - to, co uważasz za ciepłe lub zimne. Na zdjęciu kontrast kolorów wpłynie na twój osąd. Kolor "pośredni" obok wyraźnie chłodnego koloru będzie wyglądał na ciepły, ale jeśli ten sam kolor jest obok wyraźnie ciepłego koloru, będzie wyglądać fajnie. Spojrzeć na kole kolorów:

colourwheel

Tutaj, każda 24-bitowy kolor pokazane (8 bitów na każdy z R, G i B), a wartości RGB na górze, po prawej , dolne i lewe kolory są wyświetlane. Moim oczom jest więcej "fajnych" kolorów niż "ciepłych". Mam nadzieję, że pomoże ci to określić wartości RGB dla tego, co postrzegasz jako chłodne i ciepłe kolory.

Bonus: Na powyższym rysunku można również zobaczyć kolory wyrażone w modelu kolorów odcień, nasycenie i wartość (HSV). Odcień w zasadzie koduje kolor. Nasycenie koduje "pełny" kolor - mniej nasycenia sprawia, że ​​jest on bardziej "ponury", tj. biały. Wartość koduje ciemność - mniej wartości powoduje, że jest bardziej czarny, a także powoduje, że biel nasycenia jest bardziej szara. Odcień zmienia się od 0 do 360 i odpowiada kątowi okręgu, przy czym 0 jest całkowicie czerwone, 90 jest rodzajem neonowej zieleni, 180 jest jasnoniebieskim, 270 jest niebieskawo fioletowe, a 360 znów przechodzi w czerwień. S i V idą od 0 do 100 i będą miały wpływ na dokładny odcień - te przykłady mają S = V = 100.

Moje oko, wartości H w zakresie 0-80 i 330-360 są ciepłe, natomiast H> 80 i H < 330 są zimne (w przybliżeniu).

Być może zechcesz otworzyć selektor kolorów w swoim ulubionym programie do malowania.Zwykle mogą pokazać HSV i RGB obok siebie i pozwolić ci grać z kołem kolorów i zobaczyć efekty na liczbach HSV i RGB. Jeśli jeszcze go nie masz, proponuję GIMP. Ma koło kolorów, którego używałem, aby uzyskać liczby dla tej odpowiedzi.

Bonus 2: Wszystkie powyższe zakłada subiektywną ocenę tego, co jest ciepłe, a co fajne. Myślę, że jedynym sposobem na obiektywny pomiar temperatury koloru jest zmierzenie go i wyrażenie go w skali temperatury. Często zdaje się, że używa się Kelvina. Środek ten uwzględnia nie tylko odcień koloru, ale także jego jasność (lub ilość emitowanego światła). Jeśli masz nowoczesny monitor, prawdopodobnie ma on ustawienie temperatury z wybranymi wartościami Kelvina. Możliwe jest obliczenie temperatury każdego koloru RGB na ekranie, o ile znasz temperaturę bieli (balans bieli). Jednak to obliczenie jest bardzo skomplikowane i nie wiem, jak to zrobić. Możesz znaleźć Bruce Lindbloom dobre źródło dla dalszych informacji lub jakiejkolwiek książki na temat nauki o kolorach. Ale myślę, że to jest więcej niż się spodziewasz z pytaniem ... ;-)

+1

+1 Doskonała odpowiedź na trudne pytanie. –

+1

Powiedziałbym po prostu: przekonwertuj na HSV/HSL, a następnie po prostu określ ciepło na podstawie H. Nie trzeba zastanawiać się, co zrobić z zielonym :-) – user562374

+0

@ user562374: Całkowicie się zgadzam i zaksięgowałbym to jako odpowiedź (wraz z przykładowym kodem konwersji), z tym wyjątkiem, że pytanie wyraźnie wymaga rozwiązania przestrzeni kolorów RGB. –

1

już odpowiedział, ale trzeba dodać to:

Jeśli jesteś zainteresowany fizycznych temperatury i kolorów zależności to jest skala szukasz:

Black body Temperature color

jest to kolor światła emitujących od czarnego w danej temperaturze. W astronomii jest to używane do klasyfikacji kolorów gwiazd (np. BV color index).

Może być również używany do pośrednich pomiarów temperatury.

Powiązane problemy