使用平均 RGB 值的颜色强度
Color Intensity using Average RGB values
我正在做一个项目,我需要计算各种纸条上的颜色渐变。我已经使用 RGB 颜色检测器应用程序(在 Google PlayStore 上可用)来获取 RGB 值。现在绘制它我简单的平均 RGB 值:(R+G+B)/3 并获得单个值作为强度。是否可以使用它或者我应该使用其他方法来获取强度的单个值。
我得到的颜色渐变是从深黄色到白色。随着所用化学品浓度的增加,纸张会发生变色。 [无法透露化学品,抱歉]
(R+G+B)/3 不好,光谱加权好
(R+G+B)/3 几乎每次使用都是不正确的数学运算。它恰好用作设置颜色的 "HSI" 控件的一部分,但该控件远非感知均匀性。
正确的数学计算相当简单 — 但由于您尚未明确定义您需要或正在尝试做什么,因此很难猜出最适合您的方法。
我会做一些假设。听起来您正在扫描某种石蕊试纸,并试图将数据转化为某种可用的形式,即它们从特定化学浓度变得多暗。
听起来您正在寻找一些绝对值,而不是条带 A 和条带 B 的差异。色差数学与一些更绝对的度量有点不同。
但是,对于研究,条带和受保护的主参考样品之间的色差可能是更好的做法,尤其是当您没有在校准的 viewing/test 环境中使用真正校准的分光光度计时。
捕获
数据捕获的质量与数据可用性有很大关系,捕获室照明和相机或仪表的质量是其中很大一部分。
房间颜色
理想情况下,这意味着房间漆成平坦或哑光的中性灰色,LRV 约为 20,例如 Glidden:
持续照明
然后你想要从房间或至少测量区域阻挡杂散光。 没有自然光!! 理想情况下,您将拥有经过校准的光源,但至少具有与高 CRI 一致的光源。
一致的样本照明
光线需要与样品表面保持相同的距离,并且必须控制环境光条件,以便样品始终接收到相同的光线。
一致的测量和设备
如果您使用 phone 拍摄图像,您可能会受到 auto-exposure 的摆布。如果您正在使用的 Google 应用接管并提供一致的曝光率,那很重要。否则,你最好买一台尼康数码单反相机,并在手动曝光模式下使用它(总是!)并始终设置为相同的曝光。
同时捕获样本和参考
换句话说,有一个参考样本最好在平均样本的 LRV 附近。一个 18% 的灰卡可能是很好的选择,如果没有其他原因,只是因为它们价格低廉且易于更换且具有良好的一致性。
如果涉及颜色,那么您需要 XRite colorChecker 图表。
5)
当您捕获样本时
如果您要拍照,那么您希望图像帧中的参考样本(即灰卡或色卡)每次都处于相同位置和相同照明 。
转化率
如果您是通过摄影来做到这一点,那么您希望尽可能保持一致,曝光相同,并在相机中使用 sRGB 配置文件(不要使用 Adobe98,因为它是一个更大的色域,因此随着 delta E 误差的增加而不太准确。)
将图像导入图像应用程序并对颜色进行采样。再次使用 sRGB 配置文件,将颜色选择器设置为对大约 10px X 10px(总共 100 像素)的区域进行平均采样。
sRGB 颜色数据是伽马编码的——你需要它在线性亮度 (Y) 或可能是感知 space 像 CIELAB。
如果...
如果你只是想对每个样本的亮度进行绝对测量,那么你可以将sRGB数据转换为亮度(CIEXYZ中的Y),然后使用该数字进行比较。但是请注意,亮度相对于光是线性的,因此它在感知上并不均匀。
为了感知均匀性,您需要 CIELAB,而在 CIELAB 中您可以准确计算两种颜色之间的 差异 .
转换步骤和数学(按此顺序)
1) 转换
将十六进制或整数颜色值转换为浮点数,其中 0 表示黑色,1.0 表示白色。
2) 线性化
线性化 sRGB 颜色数据(即去除伽马曲线)
3) 应用光谱加权
将光谱加权系数应用于每个通道,然后将它们相加以获得 Y(亮度)。
我描述这三个步骤
4) 转换为 L* a* b*
如果要使用高质量的色差方程,则需要从 CIEXYZ 转换为 CIELAB。
5) 使用 CIEDE2000 求差
进入实验室后 space,然后使用颜色 d 的 CIEDE2000 方程参考。
第 4 步和第 5 步的数学运算is available here as code snippets.
我正在做一个项目,我需要计算各种纸条上的颜色渐变。我已经使用 RGB 颜色检测器应用程序(在 Google PlayStore 上可用)来获取 RGB 值。现在绘制它我简单的平均 RGB 值:(R+G+B)/3 并获得单个值作为强度。是否可以使用它或者我应该使用其他方法来获取强度的单个值。
我得到的颜色渐变是从深黄色到白色。随着所用化学品浓度的增加,纸张会发生变色。 [无法透露化学品,抱歉]
(R+G+B)/3 不好,光谱加权好
(R+G+B)/3 几乎每次使用都是不正确的数学运算。它恰好用作设置颜色的 "HSI" 控件的一部分,但该控件远非感知均匀性。
正确的数学计算相当简单 — 但由于您尚未明确定义您需要或正在尝试做什么,因此很难猜出最适合您的方法。
我会做一些假设。听起来您正在扫描某种石蕊试纸,并试图将数据转化为某种可用的形式,即它们从特定化学浓度变得多暗。
听起来您正在寻找一些绝对值,而不是条带 A 和条带 B 的差异。色差数学与一些更绝对的度量有点不同。
但是,对于研究,条带和受保护的主参考样品之间的色差可能是更好的做法,尤其是当您没有在校准的 viewing/test 环境中使用真正校准的分光光度计时。
捕获
数据捕获的质量与数据可用性有很大关系,捕获室照明和相机或仪表的质量是其中很大一部分。
房间颜色 理想情况下,这意味着房间漆成平坦或哑光的中性灰色,LRV 约为 20,例如 Glidden:
持续照明 然后你想要从房间或至少测量区域阻挡杂散光。 没有自然光!! 理想情况下,您将拥有经过校准的光源,但至少具有与高 CRI 一致的光源。
一致的样本照明 光线需要与样品表面保持相同的距离,并且必须控制环境光条件,以便样品始终接收到相同的光线。
一致的测量和设备 如果您使用 phone 拍摄图像,您可能会受到 auto-exposure 的摆布。如果您正在使用的 Google 应用接管并提供一致的曝光率,那很重要。否则,你最好买一台尼康数码单反相机,并在手动曝光模式下使用它(总是!)并始终设置为相同的曝光。
同时捕获样本和参考 换句话说,有一个参考样本最好在平均样本的 LRV 附近。一个 18% 的灰卡可能是很好的选择,如果没有其他原因,只是因为它们价格低廉且易于更换且具有良好的一致性。
如果涉及颜色,那么您需要 XRite colorChecker 图表。
当您捕获样本时 如果您要拍照,那么您希望图像帧中的参考样本(即灰卡或色卡)每次都处于相同位置和相同照明 。
转化率
如果您是通过摄影来做到这一点,那么您希望尽可能保持一致,曝光相同,并在相机中使用 sRGB 配置文件(不要使用 Adobe98,因为它是一个更大的色域,因此随着 delta E 误差的增加而不太准确。)
将图像导入图像应用程序并对颜色进行采样。再次使用 sRGB 配置文件,将颜色选择器设置为对大约 10px X 10px(总共 100 像素)的区域进行平均采样。
sRGB 颜色数据是伽马编码的——你需要它在线性亮度 (Y) 或可能是感知 space 像 CIELAB。
如果...
如果你只是想对每个样本的亮度进行绝对测量,那么你可以将sRGB数据转换为亮度(CIEXYZ中的Y),然后使用该数字进行比较。但是请注意,亮度相对于光是线性的,因此它在感知上并不均匀。
为了感知均匀性,您需要 CIELAB,而在 CIELAB 中您可以准确计算两种颜色之间的 差异 .
转换步骤和数学(按此顺序)
1) 转换
将十六进制或整数颜色值转换为浮点数,其中 0 表示黑色,1.0 表示白色。
2) 线性化
线性化 sRGB 颜色数据(即去除伽马曲线)
3) 应用光谱加权
将光谱加权系数应用于每个通道,然后将它们相加以获得 Y(亮度)。
我描述这三个步骤
4) 转换为 L* a* b*
如果要使用高质量的色差方程,则需要从 CIEXYZ 转换为 CIELAB。
5) 使用 CIEDE2000 求差
进入实验室后 space,然后使用颜色 d 的 CIEDE2000 方程参考。
第 4 步和第 5 步的数学运算is available here as code snippets.