使用平均RGB值的颜色强度

时间:2019-04-04 19:40:59

标签: colors rgb linear-gradients rgba srgb

我正在一个项目中,我需要计算各种纸条上的颜色渐变。我已经使用RGB颜色检测器应用程序(可在Google PlayStore上购买)来获取RGB值。现在将其绘制出来,我将得到简单的平均RGB值:(R + G + B)/ 3,并获得一个强度值。可以使用它还是应该使用其他方法来获得强度的单个值。

我得到的颜色渐变范围从深黄色到白色。随着所用化学品浓度的增加,纸张会发生变色。 [无法透露化学信息,对不起]

1 个答案:

答案 0 :(得分:0)

(R + G + B)/ 3差,光谱加权良好

(R + G + B)/ 3几乎对于每次使用都是错误的数学运算。它恰好是用于设置颜色的“ HSI”控件的一部分,但该控件远非感知均匀性。

正确的数学方法是相当简单的-但是由于您没有明确定义所需或正在尝试的工作,因此很难为您猜测最佳方法。

我会做一些假设。听起来您正在扫描某种石蕊试纸条,并试图将数据以某种化学形式从某种化学浓度变成多深的形式放入可用的形式。

听起来也好像您正在寻找一些绝对值,而不是与试纸条A和试纸条B的差。色差数学与某些更绝对的量度有点不同。

但是,为了进行研究,试纸和受保护的主参考样品之间的色差可能是更好的做法,尤其是当您未在校准的查看/测试环境中使用真正的校准分光光度计时。

捕获

数据捕获的质量与数据的可用性有很大关系,而捕获室照明,照相机或仪表的质量是其中的重要部分。

房间颜色 理想情况下,这意味着房间会被漆成平坦或无光泽的中性灰色,LRV约为20,例如Glidden:

GREY CHIP

恒定照明 然后,您需要将杂散光阻挡在房间或至少测量区域之外。 没有自然光! 理想情况下,您将具有经过校准的光源,但至少要具有与高CRI一致的光源。

一致性样品照明 光线与样品表面的距离必须相同,并且必须控制环境光的条件,以便样品始终接收相同的光线。

一致性测量和设备 如果您使用手机拍摄图像,则可能会受到自动曝光的支配。如果您正在使用的Google应用程序接管并提供一致的曝光率,那很重要。否则,您最好获得尼康dSLR,并在手动曝光模式下使用它(总是!),并始终将其设置为相同曝光。

同时捕获示例和参考 换句话说,参考样本的理想位置是平均样本的LRV左右。出于其他原因,一张18%的灰卡可能很不错,因为它们便宜且易于替换,并且具有良好的一致性。

如果涉及颜色,则需要XRite colorChecker图表。

enter image description here 5)

捕获示例时 如果要拍照,则需要 每次 < / p>

转化

如果要通过摄影进行此操作,则要尽可能保持一致,相同的曝光,并在相机中使用 sRGB配置文件(请勿使用Adobe98,因为它较大。色域,因此准确度较低,而E误差较高。)

将图像导入图像应用程序并采样颜色。再次使用sRGB配置文件,将颜色选择器设置为对10像素X 10像素(总共100像素)左右的区域进行平均采样。

sRGB颜色数据是伽马编码的-您需要以线性亮度(Y)或可能是感知空间的形式(例如CIELAB)使用它。

IF ...

如果只想对每个样本的亮度进行绝对测量,则可以将sRGB数据转换为亮度(CIEXYZ中的Y),然后使用该图进行比较。但是请注意,亮度相对于光线是线性的,因此它在感知上并不均匀。

要获得感知均匀性,您需要CIELAB,而在CIELAB中,您可以根据两种颜色之间的 差异 进行准确的计算。

转换步骤和数学(按此顺序)

1)转换

将十六进制或整数颜色值转换为浮点数,黑色为0,白色为1.0。

2)线性化

线性化sRGB颜色数据(即删除伽玛曲线)

3)应用频谱加权

将光谱加权系数应用于每个通道,然后将它们加在一起得出Y(亮度)。

我描述了这三个步骤in detail in this post.

4)转换为L * a * b *

如果要使用高质量的色差方程,则需要从CIEXYZ转换为CIELAB。

5)使用CIEDE2000进行区别

一旦在LAB空间中,然后使用CIEDE2000方程式进行色差。

第4步和第5步的数学is available here as code snippets.