3 个版本
0.0.2 | 2024 年 8 月 9 日 |
---|---|
0.0.1 | 2024 年 8 月 9 日 |
0.0.0 | 2024 年 8 月 2 日 |
#264 in 算法
332 每月下载量
120KB
1.5K SLoC
概述
色度学库是一个用于照明和工程项目中颜色计算的库。它可以用于 Rust 项目,并提供 JavaScript/WebAssembly 接口。该库实现的算法试图遵循国际照明委员会、国际颜色联盟、照明工程学会等机构的建议。
以下是该库中主要对象的简要概述,以及一些用于 Rust、Deno/TypeScript 和 Web 应用的示例。有关详细文档,请参阅 Rust 的 crates.io 或 JavaScript 运行时应用的 jsr.io。
Rust 应用中的使用
要在 Rust 应用中使用此库,请运行以下命令
cargo add colorimetry
或将此行添加到您的 Cargo.toml 文件中的依赖项
colorimetry = "0.0.1"
使用 Spectrum
用于光谱数据
该库中所有光谱计算都使用 Spectrum
类,该类包含光谱数据和光谱类型。出于实际考虑,它使用从 380 到 780 纳米的波长域,间隔为 1 纳米,如 CIE15:2004 中建议的那样。这导致与旧数据存在一些不一致,因为在过去,通常使用其他波长域进行积分。特别是,标准光源 D65、D50 和 A 的色度坐标与发布值略有不同。
以下示例使用 CIE 1931 标准观察者计算了 Planckian(基于热辐射的)光源(相关色温为 3000 开尔文)的照度和 CIE 1931 (x, y) 色度坐标。
use crate::colorimetry::{Spectrum, CIE1931};
use approx::assert_ulps_eq;
let p3000 = Spectrum::planckian_illuminant(3000.0);
let [l, x, y] = CIE1931.xyz(&p3000).lxy();
assert_ulps_eq!(l, 20.668_927, epsilon = 1E-6);
assert_ulps_eq!(x, 0.436_935, epsilon = 1E-6);
assert_ulps_eq!(y, 0.404_083, epsilon = 1E-6);
除了 Spectrum::planck
构造函数外,Spectrum
还有许多其他构造函数。例如,Spectrum::d65
、Spectrum::d50
和 Spectrm::a
提供了 CIE D65、D50 和 A 标准光源的光谱分布。
CIE 标准色度学观察者
CIE1931
是 Observer
类的一个实例,代表色度学标准观察者,还包括 CIE 1976 10º 标准观察者和 CIE 2015 2º 和 10º 锥形基本推导观察者。其他实例包括 CIE1976
,用于 CIE 10º 标准观察者,以及 CIE2015
和 CIE2015_10
,分别用于从锥形基本推导出的 2º 和 10º 观察者。
其主要功能 CIE1931.xyz
接收一个 XYZ
类的实例作为单一参数,封装了 X、Y 和 Z 三刺激值。同样,可以使用 CIE1931.lab_d65
和 CIE1931.lab_d50
方法来获取从颜色样品测量的光谱的 CIELAB 坐标。这些结果会产生一个 Lab
类的实例。
XYZ
三刺激值
Lab
颜色模型
RGB
颜色空间
与 Deno/TypeScript 一起使用
在 Web 应用中使用
许可证
所有内容版权©2024 Harbers Bik LLC,并许可以下之一:
- Apache License,版本 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT?)
任选其一。
贡献
除非你明确声明,否则任何有意提交以包含在作品中的贡献,根据 Apache-2.0 许可证的定义,应如上所述双重许可,不附加任何额外条款或条件。
依赖项
~6MB
~144K SLoC