sRGB-> CIEXYZ-> discard亮度的结果是否可以转换回sRGB?

| 我正在为小马探测器编写除影功能。在将sRGB的PNG图像转换为CIE XYZ之后,我按照说明移除了亮度: 当我尝试将图像转换回sRGB以进行显示时,我得到的RGB值超出了sRGB色域(我得到的值大于255)。这是正常现象,还是我应该继续寻找错误?注意:转换为XYZ且不做任何修改就不会产生毛刺。 插图(左上:原始,左下:红色和蓝色色调的字节值wraparaund): 为了完整起见:右上:色彩比率,右下:转换为HSV并均衡值。     
已邀请:
        最终的转换不会删除亮度,它会创建两个新值x,y,它们共同定义了色度,而Y包含了亮度。这是您的说明链接中的关键段落(在您链接的公式之前):   CIE XYZ颜色空间原为   故意设计使Y   参数是对   颜色的亮度或亮度。   然后颜色的色度为   由两个指定的派生   参数x和y,三个中的两个   归一化值是函数   所有三个三刺激值X,Y,   和Z: 这意味着如果您拥有一个具有单一颜色的表面图像,但该表面的一部分在阴影中,则在xyY空间中,x和y值应相同(或非常相似),表面上的所有像素,无论是否在阴影中。 从最终转换中获得的xyz值不能直接转换回RGB,就好像它们是XYZ值一样(请注意大写)。因此,请回答您的实际问题:如果您将xyz值当作XYZ值使用,则代码中没有错误。使用链接的公式将其转换为RGB无效。 现在,如果您想从整个图像中去除阴影,您可以执行以下操作: 通过将每个值除以255(假设为24位RGB),将RGB值缩放为[0-1]范围内的浮点值。转换为浮点对精度有很大帮助! 将图像转换为xyY 用一个值(例如0.5)替换所有Y值,但请进行实验。 反转从xyY到XYZ的转换: 然后到RGB: 然后以[0..255]间隔重新缩放RGB值。 这应该给您一个非常无聊但没有阴影的原始图像版本。当然,如果您的目标是检测单色区域,则也可以对xyY图像中的xy值执行此操作,并使用在原始图像上检测到的区域。     

要回复问题请先登录注册