Ans*_*iņš 5 colors computer-vision color-space srgb
我正在为我的小马探测器写阴影去除.在我将PNG图像从sRGB转换为CIE XYZ之后,我按照说明删除了亮度:



当我尝试将图像转换回sRGB进行显示时,我得到的RGB值超出了sRGB色域(我得到的值大于255).这是正常的,还是我应该继续寻找错误?注意:转换为XYZ并返回而不进行修改不会产生任何故障.
插图(左上角:原始,左下角:红色和蓝色色调的字节值包装):

完整性:右上:颜色比率,右下角:转换为HSV并均衡值.
最终的变换不会删除亮度,而是创建两个新值x和y,它们一起定义色度,而 Y 包含亮度。这是您的说明链接中的关键段落(就在您链接的公式之前):
CIE XYZ 颜色空间经过精心设计,以便 Y 参数是颜色亮度或辉度的度量。然后,颜色的色度由两个派生参数 x 和 y 指定,这三个标准化值中的两个是所有三个三刺激值 X、Y 和 Z 的函数:
这意味着,如果您有一个具有单一颜色的表面图像,但表面的一部分位于阴影中,则在 xyY 空间中,x 和 y 值应该相同(或非常相似)表面上的所有像素,无论它们是否在阴影中。
从最终转换中获得的 xyz 值无法像 XYZ 值一样直接转换回 RGB(注意大写)。因此,要回答您的实际问题:如果您将 xyz 值视为 XYZ 值,那么您的代码中就没有错误。使用您链接的公式不能将其转换为 RGB。
现在,如果您想实际删除整个图像中的阴影,您要做的是:



这应该会给你一个非常无聊但无阴影的原始图像版本。当然,如果您的目标是检测单色区域,您也可以对 xyY 图像中的 xy 值执行此操作,并使用您在原始图像上检测到的区域。