2012-08-07 11 views
7

Czy istnieje algorytm do określenia długości fali koloru z podaniem wartości barwy (od 0 do 360 stopni). Czy istnieje funkcja wbudowana w MATLAB dla tego samego?Odcień do odwzorowania długości fali

+2

Technicznie istnieje wiele sposobów na uzyskanie odcienia, jeśli chcesz mieszać długości fal, a niektóre purples nie mogą być reprezentowane przez jedną długość fali w ogóle. –

+0

@MarkRansom, który byłby najłatwiejszy w Matlabie? – SegFault

+0

Nie mogę powiedzieć nic konkretnego o Matlabie. Prawdopodobnie będziesz musiał przekonwertować przestrzeń kolorów. Możesz znaleźć oficjalną tabelę kolorymetryczną CIE, która będzie przydatna: http://www.cie.co.at/index.php/LEFTMENUE/index.php?i_ca_id=298 –

Odpowiedz

0

Krótka odpowiedź: NIE. Dany kolor może być generalnie wytwarzany przez potrójną nieskończoność długości fali.

+0

Czy możesz wyjaśnić to zdanie? – rhavin

+0

Zobacz wyjaśnienie na stronie: https://en.wikipedia.org/wiki/Color_vision#Mathematics_of_color_perception –

7

Podczas gdy Mark Ransom i Franco Callari mają całkowitą rację, że nie można odzyskać spektrum koloru percepcyjnego, ani jednoznacznie nie odwzorować wartości odcienia na długości fal, można zdecydowanie złożyć coś razem, jeśli po prostu chcemy uzyskać odpowiednią monochromatyczną długość fali.

Kolejnym problemem jest część cyklu barw od 270 do 360. Nic nie wskazuje na magenta w widmie światła, więc załóżmy, że używamy tylko wartości barwy od 0 do 270.

Oszacowanie, że użyteczna część widzialnego spektrum ma 450-620 nm, o długości fali L (w nm) i wartość odcienia H (w stopniach), można improwizujesz następująco:

L = 620 - 170/270 * H 

620 jest maksymalna długość fali, 170 mieści się w zakresie długości fali 270 i jest zakres barwy.

Myślę, że to powinno być we właściwym kierunku, ale sprawdziłem tylko 4 lub 5 kolorów. Możesz uzyskać lepsze wyniki, porównując dane wejściowe hues i odpowiadające im kolory na visible spectrum chart, a następnie nieco je dopasowując.

+0

Czy masz odniesienia do tej formuły. –

+0

@AkshayHazari: Możesz sprawdzić numery, których używałam w podręczniku fizyki. Jeśli chodzi o samą formułę, nie wymyśliłem jej. Ale wyjaśniłem, jak to wyprowadziłem. – Junuxx

+0

Posiadałem funkcję rozpoznawania dominującego koloru na obrazku poprzez binowanie kolorów obrazu i sprawdzanie, który kolor jest najbliżej. Gdybym był w stanie uzyskać długość fali lub pojedynczą wartość reprezentującą kolor, znacznie zmniejszyłoby to złożoność. Czy jest jakiś sposób, żebym mógł odrobinę to poprawić i użyć, jak dotąd niczego nie znalazłem, blisko reprezentowania wartości rgb lub odcienia, tak jak ty. –

0

cant dostarczyć proste rozwiązanie, ale jest coś, co należy wziąć pod uwagę:

  • Widoczna część Spektrum jest mniej więcej pomiędzy 380nm (UV-border) i 780nm (IR-border). Ale to, co widzisz (odcień), zależy od wyzwolonych komórek stożka. Powyżej 660 nm, stożek M nie jest w ogóle wyzwalany, więc wszystko pomiędzy 660nm a 780nm jest barwy 0 °.
  • przy 580nm masz żółty z odcieniem 60 °, najczystszy zielony ma około 535nm, czyli 120 °, a najczystszy niebieski (240 °) ma około 457nm.
  • jeśli zastosujesz funkcję liniową, kolor żółty powinien wynosić 597nm - a tak nie jest, więc potrzebujesz bardziej złożonego podejścia.
  • powyżej niebieskiego, czerwony stożek wciąż jest wyzwalany, dopóki nie zobaczymy fioletu, ale nie osiągniemy ponownie czerwieni na wyższych częstotliwościach, więc nie można przekroczyć około 300 °.
  • Zakres barw od 300 ° do 360 ° nie ma współczynnika ε równego dwukrotności w widzialnym spektrum, można go symulować jedynie poprzez mieszanie światła o wysokiej częstotliwości (niebieskiego lub fioletowego) z czerwonym światłem, co powoduje powstanie czegoś między purpurowym a czerwonym na fioletowym linia.