Boundaries of the visible gamut in a CIE color space

亡梦爱人 提交于 2019-12-06 05:54:32

mmm... this seems to be a not-so-good formulation of a valid question.

As boscarol pointed it out, the boundary of the human gamut is determined by the "color matching functions" that you will decide to use, which refer to the type of "standard observer" you need, i.e., 2° (1931, often used) or 10° (1964, a bit rare), or something new like cvrl.org proposed 2006 observers (2° or 10°)

To get the points in the CIE xy 1931 chromaticity diagram that you put in your message, you have to apply the conversion XYZ to Yxy to the 3 color matching functions x_bar, y_bar and z_bar that you will find in the standard's observer CMF data, for ex. here: http://www.cvrl.org/ then check CMFs and pick one file to download.

The coordinates of the spectrum locus (the limits of the human observer's gamut) are, for each wavelength, the xy coordinates that you will obtain from the XYZ to Yxy transformation, which goes, for ex. in 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

EDIT I forgot to mention that the spectrum locus is only the curve part of the limit. The straight line at the bottom is called the "line of purples" and to get its xy coordinates in the diagram, you can simply trace a straight line between the point that corresponds to 380 nm (blue-violet) and the one for 730 nm (extreme red).

The bad point of this technique is that it will only give you limits of chromaticity (2D), while a real device or so gamut should be in 3D

To solve this problem is more complicated, there are some algorithms availlable to plot a gamut in the CIE L*a*b* color space for example, which are described somewhere on this website:

http://www.brucelindbloom.com/index.html?LabGamutDisplayHelp.html

good luck!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!