如何确定颜色(例如XYZ)是否为不可能? (Wikipedia: Imposible color)
例如,这种颜色是不可能的:
这是不可能的,因为它位于色度图之外:
我怎么知道?
目标是让某人填写该功能:
Boolean IsImaginaryColor(Single X, Single Y, Single Z)
{
//...TODO: Get someone to answer the question.
}
现在我们知道,如果对应的LMS颜色的任何分量为负,则该颜色为虚数。
这是使颜色真实的必要但不充分的条件。您可以让LMS的所有三个分量都为正,但仍然是虚构的颜色。
Boolean IsImaginaryColor(Single X, Single Y, Single Z)
{
//If any component of LMS color is negative,
//then the color is definitely imaginary.
LMSColor lms = XYZtoLMS(X, Y, Z);
if ((lms.L < 0) or (lms.M < 0) or (lms.S < 0))
return true;
//The color may still be imaginary,
//but i don't know how to solve that problem
//So as a first approximation i'll say it's real
return false;
}
LMSColor XYZtoLMS(Single X, Single Y, Single Z)
{
//perform Matrix multiplication:
//
// LMS = M * XYZ
//
// Where M is the M_CAT02 transformation matrix from CIECAM02
//
// 0.7328, 0.4296, -0.1624
// -0.7036, 1.6975, 0.0061
// 0.0030, 0.0136, 0.9834
LMSColor result;
result.L = 0.7328*X + 0.4296*Y + -0.1624*Z
result.M = -0.7036*X + 1.6975*Y + 0.0061*Z
result.S = 0.0030*X + 0.0136*Y + 0.9834*Z
}
在xy
颜色平面中,这给出了不可能的颜色的良好的第一近似值(以及很好的视觉指示):
但是计算仍然给出了色度图之外的颜色*(从技术上讲,它们不在“光谱轨迹”之内)。因此很显然,仅检查LMS中的不利成分是不完整的。
我正在渲染颜色选择器。例如:
这类似于您在Photoshop中已经可以执行的操作:
所以在这种情况下,我选择了颜色:
该颜色(假设D65白点)对应于 XYZ 颜色:
您可以判断真实色彩是否在sRGB色域之外,如果其成分之一是:
此 XYZ 颜色位于sRGB色彩空间之外,因为其中一个成分是负数:
-234.7
)(sRGB) Photoshop已经知道某种颜色是否在sRGB色域之外,并将显示 gumut 警告:
我已经知道一种颜色是否在sRGB色域之外。
但是现在我想知道一种颜色是否是虚构的,因此我可以继续显示色域,但隐藏完全不可能的颜色。概念模型可能是:
警告::我不不知道哪些颜色实际上不可能。这只是概念的想法。
所以我需要知道的是颜色是否不可能。
不可能的颜色上的Wikipedia页面指出,尽管sRGB颜色空间的原色都位于光谱轨迹内-所有的真实色也都位于光谱位点内:
ProPhotoRGB颜色空间确实使用了一些不可能的基色:
ProPhoto RGB color space使用虚拟的绿色和蓝色基色来获得比三个真实基色更大的色域(三角形内的空间)。但是,某些真实颜色仍然无法再现。
因此,现在我有一个具体示例说明不可能的颜色:ProPhoto RGB颜色空间的绿色主基色:
| Color | CIE x | CIE y |
|-------|--------|--------|
| red | 0.7347 | 0.2653 |
| green | 0.1596 | 0.8404 | <--- this one
| blue | 0.0366 | 0.0001 |
| white | 0.3457 | 0.3585 |
在给定不同颜色空间的情况下,这种不可能的颜色是:
给出XYZ颜色,我怎么能说那是不可能的?例如:
15.96
,84.04
,0
请务必注意两者之间的区别
一个快速的单图底漆将是:
我已经知道如何判断特定 色域 之外是否存在某种颜色。
我想知道光谱位点之外是否还存在一种颜色。
换句话说:我想知道它是否是虚构的。
Bruce Lindbloom上有一个漂亮的图形,当您随意选择将a
和b
的分量值限制为+-128时,会引发Lab颜色空间之外的颜色问题:< / p>
答案 0 :(得分:1)
这是我在此处给出的答案的重复:Determine that a Luv Color is non-imaginary与https://stackoverflow.com/a/48396021/931625相关
我认为安全的方法是计算XYZ体积边界,并检查您在内部还是外部。