2016-03-23 8 views
1

Ich versuche, die CIE 1931 Farbskala mit Mathe zu plotten.Wie kann man feststellen, ob eine xyY-Farbe innerhalb des CIE-1931-Gamuts liegt?

Ich nehme eine xyY-Farbe mit Y auf 1,0 fixiert dann variieren x und y von 0,0 bis 1,0.

Wenn ich die resultierenden Farben als ein Bild plotte (dh das Pixel bei (x, y) ist meine xyY Farbe in RGB konvertiert), bekomme ich ein hübsches Bild mit der CIE 1931 Farbskala irgendwo in der Mitte, dies wie:

xyY von 0,0 bis 1,0:

image

Jetzt möchte ich die klassische zungenförmige Bild so meine Frage ist: Wie keulen ich Pixel außerhalb des Bereichs der Farbskala CIE 1931 ?

dh. Wie kann ich feststellen, ob meine xyY-Farbe innerhalb/außerhalb des Farbbereichs der CIE 1931 liegt?

+0

Überprüfen, ob alle Werte für r, g, b innerhalb von 0..1 liegen? –

+0

Überprüfen, ob Ihre RGB-Werte im Bereich [0-1] liegen, würde zeigen, ob sie innerhalb des RGB-Farbumfangs liegen, nicht, wenn sie innerhalb des Spektralbereichs liegen. –

+0

RGB gibt ein Dreieck, nicht den CIE1931 Gamut. – Ayub

Antwort

0

Sie könnten Colour und die colour.is_within_visible_spectrum Definition verwenden:

>>> import numpy as np 
>>> is_within_visible_spectrum(np.array([0.3205, 0.4131, 0.51])) 
array(True, dtype=bool) 
>>> a = np.array([[0.3205, 0.4131, 0.51], 
...    [-0.0005, 0.0031, 0.001]]) 
>>> is_within_visible_spectrum(a) 
array([ True, False], dtype=bool) 

Beachten Sie, dass diese Definition CIE XYZ-Farbwerte erwartet, so dass Sie durch die Verwendung colour.xyY_to_XYZ Definition Ihrer CIE xyY Farbraum-Werte XYZ konvertieren müssten.

+0

Ich schaute auf diesen Code und es definiert die Form als Polygonumriss und überprüft dann, ob der Punkt innerhalb des Polygons ist. Sieht so aus, als ob es keine einfache mathematische Funktion dafür gibt, es sind alles experimentelle Daten. Die Koordinaten des Polygonumrisses werden durch den ["CIE-Standardbeobachter"] (https://en.wikipedia.org/wiki/CIE_1931_color_space#CIE_standard_observer) – Ayub

+0

Alle CIE-Standardbeobachter werden durch diskrete Tabellendaten dargestellt, üblicherweise bei 5 nm oder 1nm, gibt es keine exakte kontinuierliche Funktion, um sie darzustellen. –

+0

Ja, obwohl [diese Jungs] (http://www.ppsloan.org/publications/XYZJCGT.pdf) mit Ihnen nicht übereinstimmen würde ... – Ayub

Verwandte Themen