这意味着,如果您有一个单色表面的图像,但表面的一部分处于阴影中,则在 xyY 空间中,无论像素是否处于阴影中,表面上所有像素的 x 和 y 值应该相同(或非常相似)。CIE XYZ 色彩空间是有意设计的,使得 Y 参数是颜色的亮度或明度的度量。然后通过两个派生参数 x 和 y 指定颜色的色度,它们是三个三刺激值 X、Y 和 Z 的函数中的两个归一化值:
从最终转换中得到的xyz值不能直接翻译回RGB,如同它们是XYZ值一样(请注意大写)。因此,回答你的实际问题:如果你正在使用xyz值,就好像它们是XYZ值一样,那么你的代码中没有错误。使用你连接的公式将其转换为RGB是行不通的。
现在,如果你想要真正地从整个图像中移除阴影,你需要:
这应该会给你一个非常无聊但没有阴影的原始图像版本。当然,如果你的目标是检测单色区域,你也可以在xyY图像的xy值上执行此操作,并在原始图像上使用你在那里检测到的区域。