我想知道是否有任何数学方法来确定可见光谱/色域的边界(例如,Lab,XYZ)。提前谢谢你!

发布于 2015-04-18 00:06:18
嗯..。这似乎是一个不太好的公式,一个有效的问题。
正如boscarol所指出的,人类色域的边界是由您将决定使用的"color matching functions"决定的,它指的是您需要的"standard observer"类型,即2° (1931, often used)或10° (1964, a bit rare),或类似于cvrl.org proposed 2006 observers (2° or 10°)之类的新东西。
要获取您在消息中放置的CIE xy 1931 chromaticity diagram中的点,您必须将转换XYZ to Yxy应用到标准的观察者CMF数据中的3种颜色匹配函数x_bar, y_bar and z_bar中。这里:http://www.cvrl.org/然后检查CMFs并选择一个文件下载。
spectrum locus (人类观察者的范围的极限)的坐标是,对于每个波长,您将从XYZ to Yxy转换获得的xy坐标,对于ex。在Python 2.7中:
def XYZ_to_Yxy(X,Y,Z):
"""for each wavelength of the CMFs, you will replace X, Y, Z by x_bar, y_bar, z_bar here..."""
x = X/(X+Y+Z)
y = Y/(X+Y+Z)
return Y,x,y编辑我忘记提到,spectrum locus只是曲线部分的限制。底部的直线称为"line of purples",为了在图中得到它的xy坐标,您可以简单地在对应于380 nm (蓝-紫)和730 nm (极端红色)的点之间跟踪一条直线。
这种技术的缺点是,它只会给您chromaticity (2D)的限制,而真正的设备应该在3D中。
为了解决这个更复杂的问题,有一些算法可以在CIE L*a*b* color space中绘制一个范围,例如,在这个网站的某个地方描述了这些算法:
http://www.brucelindbloom.com/index.html?LabGamutDisplayHelp.html
祝好运!
https://stackoverflow.com/questions/22759297
复制相似问题