Colors 如何判断颜色是否是虚构的/不可能的? 短版
如何判断颜色(如XYZ)是否不可能?() 例如,这种颜色是不可能的:Colors 如何判断颜色是否是虚构的/不可能的? 短版,colors,color-theory,Colors,Color Theory,如何判断颜色(如XYZ)是否不可能?() 例如,这种颜色是不可能的: XYZ:(15.96,84.04,0) xyY:(0.1595,0.8404,0.8404) 实验室:(93,-196,161)(D65白点) 这是不可能的,因为它位于色度图之外: 我怎么知道 错误代码 目标是有人来填补这一职能: Boolean IsImaginaryColor(Single X, Single Y, Single Z) { //...TODO: Get someone to answer the
- XYZ:(15.96,84.04,0)
- xyY:(0.1595,0.8404,0.8404)
- 实验室:(93,-196,161)(D65白点)
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
}
给定不同的颜色空间,这种不可能的颜色是:
- xyY:(0.1596,0.8404,0.8404)
- XYZ:(15.96,84.04,0)
- LMS:(47.80131.431.19)
- 实验室:(93.4679,-195.9973161.1515)
- LCHab:(93.4679253.7415140.5725)
- XYZ:
,15.96
,84.04
0
- 存在于某个色域之外的颜色
- 和想象的颜色
- 色域:一种颜色可能无法在显示器、打印机或手机上显示,但它仍然是一种真实的颜色-您可以通过各种波长和强度的电磁波组合来生成颜色
- 假想的:任何强度、任何波长的电磁波组合都不能在Long、Medium和S短人类锥体中产生这种反应
a
和b
组件值限制为+-128时,会出现实验室颜色空间之外的颜色问题
额外阅读
- 这是我在这里给出的答案的副本:与
我认为安全的方法是计算XYZ体积边界,并检查您是否在内部或外部。显然,我知道您的答案,因为我在问题和Bruce的页面中链接了它。问题是,这两个问题都没有解释如何解决这个问题。有关于使用光谱脉冲的讨论,但没有提到光谱脉冲是什么,矩阵是什么,它们用于什么,它们完成了什么,或者它们如何帮助解决问题。我想他们不会回答这个问题,但这是解决这个问题的一个未命名的多步骤过程中必要的第一步。我需要的是剩下的3个步骤。或者,理想情况下,
Boolean-IsImaginary(单X,单Y,单Z){…}对不起,我刚看到链接。上面的答案为您提供了Python代码,如果运行该代码,将告诉您所请求的内容。事实上,你所要求的太复杂了,不适合一个单一的函数,你在阅读我的答案时可能已经猜到了,解释了这个过程:你可能看到有十几个调用不同的Numpy和color函数来计算边界。这不仅需要大量的代码,远远超出单个功能,而且需要良好的颜色科学理解。
| 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 |