更新记录
1.0.0(2026-11-05)
首个版本:色坐标 xy ↔ uv ↔ u'v' 双向换算;相关色温按黑体轨迹最近点求解(标准照明体 A 还原 2856K、D65 还原 6504K);Duv 有符号法向距离(D65 得 +0.0032、A 得 0);单点判定给 Δu'v'、容差倍数与合格/临界/超差三档,并描述偏绿偏红;色度图数据含轨迹采样、容差圈、目标点与落点;批量分选按档标称色温判定,出各档数量、占比、档内良率与最远一颗;明细 12 列与分档汇总 9 列 CSV 导出(带 BOM、零存储权限)。UTS→Kotlin 编译通过(index.kt 1356 行与 classes.dex 61336 字节已生成),107 项回归测试全部通过;真机未执行(设备 adb 状态 unauthorized),市场截图为 H5 渲染并标注示例数据。
平台兼容性
uni-app
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| × | √ | × | × | √ | × | √ | × | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
光源色度与色差判定
给 LED 封装厂与灯具厂的品质、工艺和出货检验:把分光计上的一串色坐标变成「这颗灯珠合不合格、这批货能不能出」。
算相关色温 CCT、Duv、与目标色点的 Δu'v' 色偏差,直接判合格 / 临界 / 超差,并说清是偏绿还是偏红;一批色坐标按色温档自动归集,出各档数量、占比与档内良率,导出明细与分档两份 CSV。
纯本地计算,不联网、不上传。仅支持 Android。
购买前必读
适合你,如果:
- 出货抽检时要按客户色容差判灯珠,靠人眼比对或手工查表太慢,还容易两拨人判得不一样;
- 客户给的是「3000K ± 一定色偏差」,你需要把分光计读到的 x、y 直接变成合格与否;
- 一批几千颗灯珠要分档出货,想知道每档多少颗、哪一档良率低、最差的是哪一颗;
- 车间没有 Minitab,也不想为看一眼色温专门开电脑。
不适合你,如果:
- 需要 ANSI C78.377 的 4 阶 / 5 阶椭圆(SDCM)档位判定 —— 本插件的容差是 Δu'v' 半径,由你自己按客户要求设定,不内置标准椭圆参数表;
- 需要显色指数 CRI / TM-30 / 光谱功率分布分析 —— 这些要完整光谱数据,本插件只吃色坐标;
- 需要直接驱动分光计或色差仪 —— 本插件不碰蓝牙与硬件,读数由你的代码传进来;
- 用 iOS —— 当前只有 Android 实现。
解决什么问题
-
色温对了,颜色还是不对。 两颗都标 3000K 的灯珠,可能一颗偏绿、一颗偏粉,色温完全相同。只看色温会漏判,必须同时看 Duv(偏离黑体轨迹的方向与距离)和 Δu'v'(与目标色点的实际距离)。
-
一批货到底良率多少,说不清。 手工在 Excel 里挑,挑完还得数。本插件按色温档归集,直接给「3000K 档 35 颗、档内良率 94.3%」,并指出最远的那一颗。
-
判完不知道为什么。 结论不只是一个「不合格」,还会说「偏绿黄、超容差 1.47 倍」,指向荧光粉批次或点胶量,而不是让人对着数字猜。
与同类的边界
与本店已上线的插件不重叠:
| 已有插件 | 它做什么 | 本插件的区别 |
|---|---|---|
| szhzy-spc-capability | 按测量值算过程能力与判异 | 它管尺寸类特性的统计过程,本插件管色度坐标的色温与色差,算法与输入都不同 |
| szhzy-tolerance-chain | 按公差链算装配间隙 | 它算机械尺寸链,本插件算光学色度,单位与模型无关 |
| szhzy-gs1-barcode | 条码内容解析 | 它解条码字段,本插件解色坐标 |
| szhzy-xlsx-import / xlsx-export | 表格读写 | 本插件不解析 xlsx,吃的是色坐标数组或三列文本 |
与市场同类产品的差异:
- 分光计自带的 PC 软件(如 GL Spectrosoft 一类):功能全,但绑定仪器、按套卖(千元级),只能在实验室电脑上跑,出来的是一堆曲线和坐标,还要人自己判。
- 通用色彩 App(如 Tristimulus 一类,$4.99):面向设计师,做单色换算与 ΔE 对比,不管产线分档,也不出良率。
- 免费在线色温计算器:只给一个色温数字,不给 Duv、不给容差判定,更不能批量。
- Minitab / Excel 模板:要手工搭表,公式一改就错,且无法嵌进自己的 App。
本插件不做光谱分析、不做仪器驱动、不做色度图导出图片 —— 只把「色坐标 → 色温 + 色偏差 + 合格判定 + 分档良率」这一段做对,且结果可手算复核。
快速上手
1. 装插件
把 szhzy-led-chroma 放进项目的 uni_modules 目录,重新编译自定义基座。标准基座不含 UTS 插件,必须用自定义基座运行。
2. 判一颗
import { ledChroma } from '@/uni_modules/szhzy-led-chroma'
const r = ledChroma({
x: 0.4287, // 分光计读到的色坐标
y: 0.4012,
targetCct: 3000, // 目标色温;也可以改传 targetX + targetY 指定目标色点
limit: 0.005 // 容差:Δu'v' 半径,按客户要求填
})
if (r.ok) {
r.cct // 3021.4 相关色温
r.duv // 0.0018 Duv,正数偏绿、负数偏粉
r.delta // 0.0073 与目标色点的 Δu'v'
r.ratio // 1.47 用了容差的多少倍
r.dirText // 偏绿黄
r.level // fail / warn / pass
r.hint // 超出容差 1.5 倍,按不合格处理或转档降级使用
}
3. 分一批
const b = ledBatch({
items: [
{ code: 'B2409-01', x: 0.4287, y: 0.4012 },
{ code: 'B2409-02', x: 0.4291, y: 0.4008 }
],
bins: [
{ name: '2700K', minK: 2580, maxK: 2870, targetK: 2700 },
{ name: '3000K', minK: 2870, maxK: 3220, targetK: 3000 }
],
targetCct: 3000,
limit: 0.005
})
b.yieldPct // 92.7 一次合格率
b.bins // [{ name:'3000K', count:35, share:85.4, yieldPct:94.3 }, ...]
b.worstCode // B2409-35 最远的一颗
每档带 targetK 时按自己的标称色温判定,不会把档与档之间的正常色温差算成超差。
4. 导出
ledExport({ items, bins, targetCct: 3000, limit: 0.005, kind: 'rows', fileName: '色度明细.csv' })
ledExport({ path: '/storage/emulated/0/Download/抽检.csv', bins, kind: 'bins', fileName: '分档汇总.csv' })
默认落应用外部私有目录,不需要任何存储权限;CSV 带 UTF-8 BOM,Excel 双击不乱码。
数据怎么给
三种方式,任选:
items: [{ code, x, y }]—— 结构化数组,推荐;text—— 直接给文本,形如编号,X,Y,也认名称 / 色坐标X / 色坐标Y这类中英文表头;path—— 给 CSV 路径或content://授权 URI,编码可选(默认 UTF-8)。
分隔符支持逗号、制表符、分号、竖线;无表头时按「前两列是 x、y」读,两列纯数值时自动编号。
口径与公式(可手算核对)
色坐标换算
u = 4x / (-2x + 12y + 3),v = 6y / (-2x + 12y + 3)(CIE 1960 UCS);
u' = u,v' = 1.5v(CIE 1976 UCS)。
相关色温
黑体轨迹用有理式近似(Kim 等人的拟合式),对轨迹点逐点求与实测点的距离,先 25 K 粗扫再区间收缩,得最近点色温。
校验:标准照明体 A 的色坐标 (0.44757, 0.40745) 算得 2856 K;D65 (0.31272, 0.32903) 算得 6504 K。
Duv
色点到轨迹的有符号距离,沿轨迹切线的法向投影。切向取「色温升高方向」,正值表示色点在轨迹上方(偏绿),负值表示下方(偏粉)。
校验:D65 的 Duv 为 +0.0032,照明体 A 的 Duv 为 0(它在轨迹上)。
容差判定
Δu'v' = √(Δu'² + Δv'²),ratio = Δu'v' / limit:
| ratio | 判定 | 处理 |
|---|---|---|
| ≤ 1.0 | 合格 | 正常出货 |
| 1.0 – 1.25 | 临界 | 复测后隔离或让步接收 |
| > 1.25 | 超差 | 降档或不判合格 |
1.25 这条线是本插件对「压线」的处理约定,不是标准值;判定用的 limit 始终由你按客户要求给。
手算一遍(演示数据)
演示批次里那颗超差样点色坐标约 (0.4376, 0.4043),目标 3000 K:
- 换算 u ≈ 0.2487、v ≈ 0.3448,u' ≈ 0.2487、v' ≈ 0.5172;
- 轨迹最近点约 2924 K,Duv ≈ +0.0016(偏绿);
- 与 3000 K 目标点距 Δu'v' ≈ 0.0073,容差 0.005,ratio ≈ 1.47 → 超差。
API
| 方法 | 用途 | 关键参数 |
|---|---|---|
ledChroma(options) |
单点判定 | x, y, targetCct 或 targetX+targetY, limit |
ledCurve(options) |
色度图数据 | fromK, toK, step, targetCct, limit, segments, items |
ledBatch(options) |
批量分选 | items 或 text/path, bins, targetCct, limit |
ledParse(options) |
只解析不算 | text 或 path, charset |
ledExport(options) |
导出 CSV | kind(rows / bins), fileName, dir, 其余同 ledBatch |
ledDefaults() |
默认参数 | 无 |
所有方法返回 { ok, code, message, ... },不抛异常。
导出的 CSV 列
明细:编号、色坐标X、色坐标Y、u'、v'、色温K、Duv、目标距离Δu'v'、容差倍数、偏差方向、色温档、判定。
分档汇总:色温档、下限K、上限K、数量、占比%、合格、临界、超差、档内良率%,末行为合计。
错误码
| code | 含义 |
|---|---|
BAD_POINT |
缺 x 或 y,或不是数字 |
POINT_OUT_OF_GAMUT |
色坐标不在色度图内(x、y 应为正数且 x + y < 1) |
NO_TARGET |
既没给 targetCct,也没给 targetX/targetY |
NO_ROWS |
没有解析到任何色坐标 |
BAD_RANGE |
色度图色温范围不合法 |
FILE_NOT_FOUND / READ_FAILED |
文件不存在或读失败 |
CHARSET_UNSUPPORTED |
编码不支持 |
WRITE_FAILED / NO_OUTPUT_DIR |
写文件失败或拿不到输出目录 |
能力边界与已知限制
- 只处理色坐标,不处理光谱;CRI、TM-30、色品坐标图导出图片均不支持;
- 不内置 SDCM / ANSI C78.377 椭圆表,容差是自定义的 Δu'v' 半径;
- 色温适用范围 1000–25000 K,超出范围仍给结果但意义不大;
- Duv 按最近点法向投影计算,与仪器厂商的 Duv 口径可能有小数点后第四位的差异,交接前建议用同一批样点对齐一次;
- 单次批量建议不超过 5000 颗(纯 JS 循环,手机端 5000 颗约 1–2 秒)。
验证状态
| 项目 | 状态 |
|---|---|
| 纯逻辑回归测试 | 107 项全部通过(含标准照明体 A/D65/D50 还原、McCamy 交叉验证、Duv 方向、解析与分档边界) |
| UTS → Kotlin 编译 | 通过,产物 index.kt 与 classes.dex 已生成(见发布清单) |
| 真机运行 | 未执行:测试机 adb devices 显示 unauthorized,无法安装自定义基座,也未做真机截图 |
| 市场截图 | H5 渲染,页面已标注「示例数据」,不是真机截图 |
| iOS / 鸿蒙 | 不支持 |
授权
普通授权与源码授权的范围见 license.md。购买前请确认上面的「能力边界」与「验证状态」,本插件按现状提供。

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 13
赞赏 0
下载 12750077
赞赏 1959
赞赏
京公网安备:11010802035340号