#图形 #颜色 #计算机视觉 #色度学

colorspace

一个涵盖光谱、RGB、XYZ、L*a'b'及其转换的色度学crate

1个不稳定版本

0.1.0 2020年5月31日

#139多媒体

Apache-2.0

1MB
10K SLoC

colorspace

Build Status Latest Version Docs Badge

一个用于Rust中色度学的crate。这个crate包含用于处理颜色的类型和函数。预期用途是支持渲染应用程序(我用它来管理光谱路径追踪中的颜色),但如果你想要能够在光谱、XYZ、L'a'b'和RGB空间(例如sRGB、ACES、DCI P3和ALEXA宽色域)之间进行转换,那么这个crate就是为你准备的。

这个crate仍然处于WIP状态但相当稳定。可能会发生一些小的重构,但核心类型是完整且稳定的。未来的开发将主要关于增加功能和尽可能多的操作使用SIMD。我还打算在某个时候集成OCIO。

类型

三刺激值

库包含两个用于处理颜色值的主要类型。 XYZfRGBf 可以是单精度或双精度,并定义了所有预期的数学运算。

RGBu8RGBu16 类型仅用于存储(例如写入图像或将它们传递给OpenGL进行显示)并且不定义任何操作。要使用它们进行数学运算,必须首先转换为 RGBf

光谱功率分布

SPD 被定义为波长和关联值的两个 Vec 对。库在 illuminant 模块中提供了CIE发光体的光谱数据,并在 color_checker 模块中提供了颜色检查图的数据。

示例

将32位sRGB颜色切片转换为8位DCI-P3

use colorspace::*;
let srgb = &color_space_rgb::model_f32::SRGB;
let dci_p3 = &color_space_rgb::model_f32::DCI_P3;
let mut px_dci_p3_u8 = vec![rgbu8(0, 0, 0); px_srgb.len()];
rgb_to_rgb(srgb, dci_p3, &px_srgb, &mut px_dci_p3_u8);

光谱到8位,伽马编码的sRGB转换

use colorspace::*;

// Convert the spectral data for a measured MacBeth chart swatch to XYZ
// using the CIE 1931 2-degree CMFs and a D65 illuminant
let xyz = colorchecker::SPECTRAL["dark_skin"]
.to_xyz(&illuminant::spd::D65, &cmf::CIE_1931_2_DEGREE);

// Convert the XYZ value to scene-referred (i.e. linear) sRGB by first creating
// the conversion matrix and then applying it
let model_srgb = &color_space_rgb::model_f64::SRGB;
let xf_xyz_to_srgb = xyz_to_rgb_matrix(model_srgb.white, model_srgb);
let rgb = xyz_to_rgb(&xf_xyz_to_srgb, xyz);

// Convert the scene-referred sRGB value to an 8-bit, display-referred
// value by applying the opto-electrical transfer function and using RGBu8's
// From<RGBf32> impl
let rgb: RGBu8 = model_srgb.encode(rgb).into();

assert_eq!(rgb, rgbu8(115, 82, 68));

许可

版权 [2018-2020] [Anders Langlands] colorspace 在Apache License,版本2.0下授权 https://apache.ac.cn/licenses/LICENSE-2.0

这个crate包含一些从Mansencal等人优秀的颜色科学python库中获取的数据:https://www.colour-science.org 版权 (c) 2013-2018,颜色开发者

大多数转换算法基于布鲁斯·林德布鲁姆网站发布的那些:http://www.brucelindbloom.com 版权所有 © 2001 - 2018 布鲁斯·贾斯汀·林德布鲁姆。

BabelColor 颜色检查数据版权所有 © 2004-2012 丹尼·帕斯卡勒 (www.babelcolor.com);经许可使用。 http://www.babelcolor.com/index_htm_files/ColorChecker_RGB_and_spectra.xls http://www.babelcolor.com/index_htm_files/ColorChecker_RGB_and_spectra.zip

包含来自 https://github.com/imallett/simple-spectral 的数据,与 EGSR 2019 论文“Mallett & Yuksel - 使用 sRGB 反射率进行渲染的频谱主成分分解”配套。

依赖关系

~6.5MB
~125K SLoC