A community, open database of CCMX-style 3×3 correction matrices that turn a
camera into a colorimeter for display measurement. Each correction maps a specific
camera's raw RGB to accurate CIE XYZ for a specific display, keyed by
(camera device × lens × display).
一个社区开源的 CCMX 风格 3×3 校正矩阵 数据库,用于把相机当作色度计来测量显示器。
每条校正把某相机的原始 RGB 校正为某显示器下准确的 CIE XYZ,按
(相机设备 × 镜头 × 显示器) 区分。
Tool-agnostic. Any application that uses a camera as a colorimeter can consume these corrections — the format below is self-contained. 与工具无关。任何"用相机当色度计"的应用都可使用这些校正——下述格式自包含。
📷 Scope: fixed-lens cameras only / 适用范围:仅固定镜头相机 A correction is bound to the camera's spectral response. This is stable only for fixed-lens cameras (e.g. phone/tablet cameras), where a per-
(model × lens × display)correction is meaningful and shareable. Interchangeable-lens cameras (DSLR/mirrorless) are generally out of scope: each lens alters the transmission spectrum, so a single matrix is not portable across lens/body combinations. 校正与相机的光谱响应绑定,只有固定镜头相机(如手机/平板摄像头)才稳定,按(机型 × 镜头 × 显示器)的校正才有意义、可共享。可换镜头相机(单反/微单)一般不在 接收范围:每支镜头都会改变透过光谱,单一矩阵无法在不同镜头/机身组合间通用。
A camera's spectral response differs from the CIE standard observer and varies by model, and it reacts differently to each display technology (WOLED / QD-OLED / IPS …). A single generic matrix is not accurate enough, so corrections are calibrated per device and display against a trusted reference instrument (spectroradiometer / colorimeter).
相机的光谱响应不同于 CIE 标准观察者、且因机型而异,并对不同显示技术(WOLED / QD-OLED / IPS …) 表现不同。单一通用矩阵不够准,因此需对参考仪器(光谱仪 / 色度计)按设备与显示分别标定。
⚠️ A 3×3 matrix works for additive displays. For non-additive panels (WRGB OLED, QD-OLED) it is only an approximation and is flaggednonAdditiveWarning=true; those are better served by spectral (CCSS) corrections. 3×3 矩阵对加性显示有效;对非加性面板仅为近似,会标记nonAdditiveWarning=true。
{deviceIdentifier}_{lensID}_{displayID}.json
e.g. iPhone17,1_main_PA32UCG.json
deviceIdentifier— camera device hardware id (e.g. Appleuname→iPhone17,1).lensID—main/ultrawide/telephoto/front.displayID— identifier of the calibrated display.
Each file is a JSON bundle. The matrix maps camera linear RGB → absolute XYZ:
XYZ ≈ M · max(cameraRGB − blackLevel, 0).
{
"version": "1.0",
"deviceIdentifier": "iPhone17,1",
"deviceModel": "iPhone 16 Pro",
"calibrationDate": "2026-06-18T10:00:00Z",
"display": {
"id": "PA32UCG",
"name": "ASUS ProArt PA32UCG",
"manufacturer": "ASUS",
"displayType": "miniLED"
},
"matrices": {
"main": {
"row0": [484.37, 78.90, 135.76],
"row1": [144.97, 335.40, -19.89],
"row2": [5.59, -107.75, 896.88],
"cameraIdentifier": "iPhone17,1_main",
"displayID": "PA32UCG",
"lensID": "main",
"calibrationDate": "2026-06-18T10:00:00Z",
"calibrationISO": 54.0,
"calibrationExposure": 0.0126953125,
"validation": { "deltaEMean": 0.67, "deltaEMax": 2.03, "patchCount": 24 },
"blackLevel": { "offset": [2111.7, 2111.7, 2111.6], "enabled": true }
}
},
"metadata": {
"displayTechnology": "miniLED",
"whitePointXY": [0.3127, 0.3290],
"referenceInstrument": "i1Display Pro",
"author": "your-handle",
"license": "CC0",
"nonAdditiveWarning": false
}
}Field notes / 字段说明
matricesis keyed bylensID; each entry is one 3×3 (row0/row1/row2) plus optionalblackLevel,validation(CIEDE2000) and capture settings.metadatais optional & backward-compatible (older files omit it).displayTechnology∈woled | qdOLED | oled | ipsWhiteLED | ipsWideGamut | va | miniLED | other.
- Measure patches on the target display with a reference instrument and fit a 3×3 (least squares; validate with CIEDE2000). 用参考仪器逐块测量目标显示并拟合 3×3(最小二乘;CIEDE2000 验证)。
- Save a JSON file named per the convention above and fill
metadata(author,license— preferablyCC0—,referenceInstrument,displayTechnology). 按规范命名并填写metadata。 - Open a Pull Request. 提交 Pull Request。
Submissions are generally accepted only for fixed-lens cameras (e.g. phone cameras). Interchangeable-lens (DSLR/mirrorless) data is out of scope — see Scope above. 一般只接受固定镜头相机(如手机摄像头)的数据;可换镜头(单反/微单)不在范围内,见上文适用范围。
Some apps offer an in-app acquisition flow that exports a ready-to-submit JSON. 一些 app 提供应用内采集流程,可直接导出符合规范的 JSON。
Clone or pull this repo and read the JSON files; map the fields into your own pipeline. 克隆/拉取本仓库并读取 JSON,将字段映射进你自己的流程。
git clone <this-repo-url>
# corrections are flat *.json files at the repo root, named {device}_{lens}_{display}.json
# 校正为仓库根目录的扁平 *.json 文件,命名为 {设备}_{镜头}_{显示}.jsonUnless a file's metadata.license states otherwise, corrections here are dedicated to the
public domain under CC0 1.0. See LICENSE.
除非文件 metadata.license 另有声明,本仓库校正数据以 CC0 1.0 公共领域奉献,见 LICENSE。