光谱与色度分析器|制造业通用工具
这个工具解决什么问题
设备通信类工具的难点在于协议细节,这里按常见字段做了解析。
拿到一条光谱曲线,要同时回答:这是蓝光芯片还是白光、峰值与主波长多少(判断波长档与荧光粉配比)、色坐标落在哪、相关色温多少、偏离黑体轨迹多少(Duv)、相对目标色坐标偏了几步。手工算色坐标要先查 CIE 色匹配函数再做积分,非常费时。
输入数据格式
数据文件 spectrum_sample.csv,列顺序为:sample_id、wavelength_nm、relative_power、target_x、target_y。
示例首行:M-465nm单色,380,0.0,0.1355,0.0399
示例输出(真实运行结果节选)
================================================================================================================ LED/光源光谱与色度分析报告(CIE 1931 2° 标准观察者) ================================================================================================================ 一、光谱特征 ---------------------------------------------------------------------------------------------------------------- 样品 峰值λ(nm) 主波长(nm) 半波宽FWHM 质心λ(nm) 相对总功率 LED-冷白 450.0 487.3 48.6 nm 531.5 37892 LED-暖白 630.0 584.2 192.1 nm 603.5 51598 LED-暖白-偏色批 630.0 585.0 190.1 nm 603.6 53492 M-465nm单色 465.0 465.0 5.2 nm 465.0 1088 二、色度指标 ---------------------------------------------------------------------------------------------------------------- 样品 x y u' v' CCT(K) Duv 色纯度 LED-冷白 0.3123 0.3265 0.1985 0.4669 6469 +0.0024 7.6% LED-暖白 0.4301 0.3923 0.2512 0.515
一句话
从一条光谱算出峰值/主波长、半波宽、色坐标、色温、Duv 与色纯度(内置 CIE 1931 表)。
运行环境与快速开始
纯 Python 标准库,零第三方依赖,Python 3.8+ 开箱即跑。
python spectrum_colorimetry.py # 首次运行会用同目录的示例数据跑出报告 python spectrum_colorimetry.py 你的数据.csv # 需要时可在脚本内改成读取自己的文件
运行后在控制台打印完整中文报告,并写出 示例输出报告.txt。
输入数据格式
CSV 列为:sample_id、wavelength_nm(建议 380~780 nm,5 nm 间隔)、relative_power(相对光谱功率)、target_x、target_y(目标色坐标,可留空)
同目录的 spectrum_sample.csv 即为可直接运行的示例数据。
输出说明
① 光谱特征表(峰值波长、主波长、半波宽 FWHM、质心波长、相对总功率);② 色度表(x、y、u'、v'、CCT、Duv、色纯度);③ 与目标色坐标的 Δu'v' 与 SDCM 近似;④ 自检(黑体轨迹与单色标准值对照);⑤ 判定与建议
算法口径(关键公式)
内置 CIE 1931 2° 标准观察者色匹配函数(5 nm 间隔,任意波长线性插值);X = ∫φ(λ)x̄(λ)dλ(梯形积分),x = X/(X+Y+Z);u' = 4x/(−2x+12y+3),v' = 9y/(−2x+12y+3);色温用普朗克公式逐温度生成黑体轨迹,取与样品 u'v' 最近点并做抛物线内插,Duv 为到轨迹的带符号距离(正=偏绿);主波长为白点向样品色坐标射线与光谱轨迹的交点。
参数与调整点
· 输入光谱范围越宽越好:截断到 400~700 nm 会让 x 偏差 0.002 以上。 · target_x / target_y 用于计算色容差;不填则该节自动跳过。 · SDCM 近似按 1 步 ≈ 0.0011(u'v')换算,仅用于快速筛查。
常见误判与注意事项
1. 色坐标对光谱两端很敏感,务必测 380~780 nm 全范围并按 5 nm 或更密采样。 2. 主波长以等能白为参考点;若客户按 CCT 匹配的白点定义,数值会有百皮米级差异。 3. Duv 比 CCT 更能反映「看起来绿不绿」:CCT 相同、Duv 差 0.006 的两颗灯珠肉眼可辨。 4. 正式判定色容差请用标准椭圆参数表,本工具的 SDCM 为近似口径。 5. 工具内置自检:单色 465 nm 的标准色坐标为 (0.1355, 0.0399),黑体 6500 K 为 (0.3135, 0.3237)。
附赠
· 附赠提示词.txt:3 条同主题 AI 提示词,可直接投喂给任意大模型继续扩展分析。
可调参数与计算口径
脚本顶部集中了主要阈值与常量:CSV_NAME="spectrum_sample.csv"、REPORT_NAME="示例输出报告.txt"、CMF_RAW="""、H_PLANCK=6.62607015e-34、C_LIGHT=2.99792458e8、K_BOLTZ=1.380649e-23。改完直接重跑即可,不必改动计算逻辑。
会生成哪些文件
运行后除控制台输出外,还会生成:spectrum_sample.csv、示例输出报告.txt。
脚本里的主要处理步骤
cmf_at():线性插值取色匹配函数值,超出 380~780 返回 0planck_rel():普朗克黑体辐射的相对光谱功率(只取形状,常数项可省)xy_of_spectrum():pairs: [(wl, power)],返回 X, Y, Z, x, ylocus_table():黑体轨迹:1000~25000 K 的黑体 u'v' 与对应温度make_sample():四个样品:465 nm 单色(用于自检)、冷白约 6500 K、暖白约 3000 K、暖白偏色批(用于演示拒收)。
以上步骤在脚本中是分开的函数,可以单独调用或按需替换其中一段,不必整体重写。
工具中出现的字段与提示
- ,构建黑体轨迹,取与样品 u
- 线性插值取色匹配函数值,超出 380~780 返回 0
- 普朗克黑体辐射的相对光谱功率(只取形状,常数项可省)
- pairs: [(wl, power)],返回 X, Y, Z, x, y
- 黑体轨迹:1000~25000 K 的黑体 u
- 与对应温度
- 从白点向样品色坐标引射线,与光谱轨迹折线求交点
下载与文件清单
压缩包内包含:主程序脚本、示例数据文件、示例输出报告、中文说明文档,以及同主题 AI 提示词一套。解压后按说明运行即可,示例数据可直接试跑。
主程序文件:spectrum_colorimetry.py。
本站工具免费下载,无需注册。工具为 Python 脚本,Python 3.8 及以上环境可直接运行,核心功能尽量不依赖第三方库。
常见问题
输入数据要准备成什么样?
按 示例首行中的列顺序准备即可,共 5 列:sample_id、wavelength_nm、relative_power、target_x、target_y。列为空或格式不符时结果会失真,建议先用示例数据试跑一遍。
阈值可以改成我们自己的标准吗?
可以,脚本顶部已把主要阈值与常量集中声明,按自己产线的标准修改后重跑即可,不需要改计算逻辑。
附赠的提示词怎么用?
把提示词与自己的数据一起交给大模型,可以让它按同一套口径帮你改写分析流程或扩展报告字段。
示例数据能直接跑吗?
可以。示例数据与主程序在同一压缩包内,解压后直接运行即可看到完整输出,确认无误再替换成自己的台账。





