Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 颜色减法RBG或CIElab_Java_Android_Algorithm_Colors_Rgb - Fatal编程技术网

Java 颜色减法RBG或CIElab

Java 颜色减法RBG或CIElab,java,android,algorithm,colors,rgb,Java,Android,Algorithm,Colors,Rgb,我在这里读了几个主题,根据答案,没有确切的答案。无论如何,让我们假设我们有RGB颜色选择器(0-255,0-255,0-255)和两种颜色,一种是原始的未混合的,另一种是混合的,那么如何精确地减去以找到添加的颜色?它真的起作用了吗 z-y=x 有研究公式吗 另一个问题是,如果应用CIElab变换来获得色调饱和度亮度,那么我如何应用这些来减去颜色?你是说添加颜色混合 在这种情况下,只添加灯光。所以,它只是光强度的加减,所以RGB很好。但是你需要线性的色彩空间。因此,您需要“取消应用”gamma,进

我在这里读了几个主题,根据答案,没有确切的答案。无论如何,让我们假设我们有RGB颜色选择器(0-255,0-255,0-255)和两种颜色,一种是原始的未混合的,另一种是混合的,那么如何精确地减去以找到添加的颜色?它真的起作用了吗

z-y=x

有研究公式吗


另一个问题是,如果应用CIElab变换来获得色调饱和度亮度,那么我如何应用这些来减去颜色?

你是说添加颜色混合

在这种情况下,只添加灯光。所以,它只是光强度的加减,所以RGB很好。但是你需要线性的色彩空间。因此,您需要“取消应用”gamma,进行加法或减法运算,然后再次应用gamma

有关应用伽马和取消应用伽马的公式,请参见:
C
是通道(R、G、B各一个),
C_线性
是线性空间(可以在其中添加和减去强度),
C_srgb
是我们在计算机上使用的通道值。注意:应使用255进行除法和乘法,以将值从0规范化为1


对于正常的颜色混合(油漆、墨水、染料等),这是复杂的,但在这种情况下,可以选择CIExyz:事实上,在这样的空间中,混合的结果在两个原始色度之间。不幸的是,模型没有告诉您结果将在这条线之内。通常需要更多关于每种颜色的数据(通常不是RGB三元组,一个大约60个项目的向量[因此每5nm一个数据])

关于RGB计算机颜色的半相关视频:这可能很有用。答案是你必须反转混合算法。但问题是某些颜色混合是不可逆的(部分原因是)。例如,考虑颜色<代码> z <代码>可以通过混合<代码> w <代码> > <代码> y>代码>,并混合<代码> x<代码> > <代码> y>代码>。如果您知道
z
y
,那么就无法知道第三种颜色是
w
还是
x
@user3386109以前从未想过,有什么解决方案吗?我已经读过模块化1,但idk如果合适的话。在比较一种亮度之前,最好先对所有颜色进行规格化,然后在最大饱和度下进行比较,这样比较时就不需要灰度混合,谢谢!几个问题:sRGB是我们所有设备上的标准/默认设置,对吗?另一个问题:为什么CIExyz优于CIElab?后者有接近人眼和巨大的色彩空间吗?我如何精确地减去颜色?维基上有一个公式,但它是关于求和的。我能把它颠倒过来吗?每种颜色都有亮度L,我如何获得它们?有白色参考坐标吗?sRGB是HTML使用的标准,在此之前,是计算机屏幕的标准(由微软公司于199x年定义)。CIExyz和CIELab只是不同的颜色空间,只是相同颜色的不同表示。CIExyz从未被使用过(但正如我所写的,它很有用)。CIExyY更常见(更直观)。但通常图形上只有x,y(颜色空间比较的标准图形。xy是定义色度的标准图形(例如,对于sRGB)。使用CIELab将颜色从一个空间转换到另一个空间(实验室也类似于视频组件)。白色参考由标准给出。sRGB的白色与其他标准不同(这还取决于观众对周围环境的预期亮度)。参见。L是用白色定义的。通常我们将其定义为1、100或255(作为参考,而不是绝对值)。白色是屏幕上更亮的点。但白色是由R、G、B(在正常屏幕上)构成的,因此可以计算每种颜色(在屏幕上)的最大亮度,总是与白色亮度相比较。你能解释一下为什么CIExyz混合结果是一条线吗?根据公式,我应该得到结果的色点坐标(xmix,ymix)。你能解释一下wiki混合公式中的亮度,其中的L-亮度和Y-亮度相同吗?(同一链接)@JayJayAbrams:(线性)RGB和XYZ是圆锥体灵敏度的线性组合,因此混合是线性的[变换只是矩阵乘法]。XYZ的构造(仅使用X或Y或Z,并使用相同的分母)保持混合(但不在中间)。亮度:Y被定义为与亮度相似,因此它们非常相似(Y是固定的,亮度是一个物理量,因此新数据可能会稍微改变它,但可能会保留它)。警告:亮度有很多混淆(经常被错误使用)。Y'不是Y。请始终检查标准中的定义。