从RGB到xyY空间采样颜色

时间:2019-10-22 05:54:05

标签: image matlab colors rgb color-scheme

我正在尝试从RGB图像中采样一种颜色,并将其转换为相应的XY坐标。通过先从xyY坐标开始获取RGB图像,然后将其转换为RGB,即:

如果我在xyY空间中具有坐标B =(0.011,0.733),则在Matlab中使用函数xyz2rgb将产生以下类型的输出(-1.0906,1.1497,0.3837),其中三刺激之一值是负数。我在RGB中使用了这种颜色来产生彩色图像。在将获得的矩阵映射到[0,1]范围并将彩色图像保存为 jpg 文件之后,我再次在其中打开它并尝试从此处采样相同的颜色。 RGB颜色坐标等于原始颜色坐标,而是(0.348,0.633,0.298),通过rgb2xyz不会得到预期的原始点B。

如何克服这种差距?有没有一种方法可以使我从非负值的RGB三元组开始返回到B点?

编辑:我的理解是xyY中的点B在RGB色域之外,在转换时,其中一个值变为负数。但是,它仍然可以正确显示在图像中,但是当从图像中恢复该颜色时,RGB坐标都为正,因此无法恢复点B。显然有两个“标度”的RGB?一个允许负值,另一个在[0,1]范围内?

1 个答案:

答案 0 :(得分:0)

我通过裁剪xyz2rgb转换的结果(即将负值等于0且大于1的值等于1)解决了该问题,消除了归一化以产生视频帧的问题。通过此解决方案,我直接比较了RGB中的颜色,而无需再次在xyY空间中进行转换。

相关问题