ICCV 2019【从颜色科学到相机】03_RGB 不等于 sRGB,Gamma、Lab 和“亮度”
颜色与相机成像专题3RGB 不等于 sRGBGamma、Lab 和“亮度”一次讲清把 RGB 数组除以 255 就是线性图像吗灰度图是否代表场景亮度本文给出可直接用于代码的 sRGB 公式并解释常见色彩空间各自解决什么问题。关键词sRGB、Gamma、CIE Lab、Luminance、Luma1. “这是 RGB 图像”缺少了哪些信息RGB 表示三个分量但要准确解释颜色至少还需要知道基色、白点和传递函数。数值范围、通道顺序以及图像是否经过渲染也很重要。同样的( 0.7 , 0.2 , 0.1 ) (0.7,0.2,0.1)(0.7,0.2,0.1)在 camera RGB、sRGB 和 Display P3 中可能代表不同颜色。把 camera RGB 的数组直接交给默认按 sRGB 显示的软件不构成正确的颜色转换。名称数据含义关键提醒camera RGB设备光谱响应对应的通道值随传感器变化线性 sRGBsRGB 基色、D65 白点下的线性分量仍可能已经过相机渲染编码 sRGB对线性 sRGB 应用规定的传递函数常见 8 位图像通常在此域CIE XYZ标准观察者下的三刺激值注意白点和数值尺度CIE Lab相对于参考白的近似感知均匀表示不存在对所有场景通用的默认白点2. sRGB 规定了什么sRGB 使用规定的红、绿、蓝基色和 D65 白点还规定非线性编码。它使不同设备有机会一致地呈现同一组颜色值但不要求相机忠实还原场景。讲义将 sRGB 与 Rec.709 放在一起介绍容易让人以为二者完全等同。准确地说它们共享基色色度和 D65 白点但传递函数及使用约定不同视频链路还可能涉及不同的量化范围。不能因此混用所有公式。对以 D65 为参考、Y YY通常归一化到 1 的 XYZ转换到线性 sRGB 可写为[ R G B ] [ 3.2404542 − 1.5371385 − 0.4985314 − 0.9692660 1.8760108 0.0415560 0.0556434 − 0.2040259 1.0572252 ] [ X Y Z ] \begin{bmatrix} R \\ G \\ B \end{bmatrix} \begin{bmatrix} 3.2404542 -1.5371385 -0.4985314 \\ -0.9692660 1.8760108 0.0415560 \\ 0.0556434 -0.2040259 1.0572252 \end{bmatrix} \begin{bmatrix} X \\ Y \\ Z \end{bmatrix}​RGB​​​3.2404542−0.96926600.0556434​−1.53713851.8760108−0.2040259​−0.49853140.04155601.0572252​​​XYZ​​如果输入 XYZ 的参考白是 D50通常需要先进行适当的色适应再使用 D65 版本矩阵。不能把不同白点的 XYZ 数值不加说明地代入同一矩阵。3. sRGB 的精确编码和解码把一个线性分量记为u uu编码分量记为v vv以下公式限定在非负、归一化的常规范围内v { 12.92 u , u ≤ 0.0031308 1.055 u 1 / 2.4 − 0.055 , u 0.0031308 v \begin{cases} 12.92u,u\le 0.0031308\\ 1.055u^{1/2.4}-0.055,u0.0031308 \end{cases}v{12.92u,1.055u1/2.4−0.055,​u≤0.0031308u0.0031308​逆变换为u { v / 12.92 , v ≤ 0.04045 ( ( v 0.055 ) / 1.055 ) 2.4 , v 0.04045 u \begin{cases} v/12.92,v\le 0.04045\\ ((v0.055)/1.055)^{2.4},v0.04045 \end{cases}u{v/12.92,((v0.055)/1.055)2.4,​v≤0.04045v0.04045​口语中的“Gamma 约为 2.2”只是近似不能替代标准的分段公式。1 / 2.2 1/2.21/2.2也不等于立方根指数1 / 3 1/31/3讲义对心理物理学的直觉介绍不应作为实现公式。图 1比较线性输入与编码值黑白等权混合的结果。一个很有用的检查点编码值v 0.5 v0.5v0.5对应线性值约为0.214 0.2140.214不是0.5 0.50.5。8 位中灰数值 128 经解码约为0.216 0.2160.216。4. 为什么平均、模糊和插值要关心 Gamma黑与白在光量意义上等权混合应先在线性域计算u m i x ( 0 1 ) / 2 0.5 u_{\mathrm{mix}}(01)/20.5umix​(01)/20.5编码后约为0.735 0.7350.735对应 8 位值约 188。如果直接平均两个编码值得到v 0.5 v0.5v0.5约为 128显示结果更暗。这不是所有图像操作都必须线性化的理由。物理光量混合应在相应线性域完成某些艺术编辑和感知优化则可能有意使用其他空间。应先确定运算目标再选数据表示。下面的实现不依赖图像库输入输出均为浮点数组importnumpyasnpdefsrgb_decode(v):vnp.asarray(v,dtypenp.float64)ifnp.any((v0)|(v1)):raiseValueError(Expected encoded sRGB in [0, 1])returnnp.where(v0.04045,v/12.92,((v0.055)/1.055)**2.4)defsrgb_encode(u):unp.asarray(u,dtypenp.float64)ifnp.any((u0)|(u1)):raiseValueError(Expected linear sRGB in [0, 1])returnnp.where(u0.0031308,12.92*u,1.055*u**(1/2.4)-0.055)print(srgb_decode(0.5))# 约 0.214041print(srgb_encode(0.5))# 约 0.735357实际颜色变换可能产生负值或大于 1 的值。这些值应在明确的色域映射、曝光或输出策略下处理不要在每个中间步骤都盲目裁剪。上面函数为了让教学边界清晰直接拒绝超范围输入。5. Luminance 和 Luma不是同一种“Y”对线性 sRGBXYZ 的相对亮度分量可近似写为Y 0.2126 R 0.7152 G 0.0722 B Y0.2126R0.7152G0.0722BY0.2126R0.7152G0.0722B系数经过四舍五入。若使用较高精度矩阵会出现0.7151522 0.71515220.7151522等更精细的值。而类似下面的公式经常用于非线性编码分量Y ′ 0.299 R ′ 0.587 G ′ 0.114 B ′ Y0.299R0.587G0.114BY′0.299R′0.587G′0.114B′这是一种常见的 BT.601 类 luma 加权形式。Y ′ YY′是用于编码或处理的亮度样分量不等于 CIE 的线性Y YY。灰度转换函数返回的数组不能仅凭名称就解释为物理亮度。还要再问一步即使用正确公式计算了线性化照片的Y YY它通常也只是渲染后图像的相对亮度。没有辐射标定不能宣称得到场景的 cd/m²。6. 为什么还需要 Lab、HSV 和 YCbCrXYZ 便于定义和转换颜色却不感知均匀。同样大小的 XYZ 数值差在不同颜色区域可能产生不同强度的视觉差异。图 2讲义 PDF 第 101 页以 MacAdam 椭圆说明颜色差异的感知尺度并不处处相同。Lab 将颜色表示为明度L ∗ L^*L∗和两条对立色轴a ∗ , b ∗ a^*,b^*a∗,b∗通常用于颜色差异分析。给定参考白( X n , Y n , Z n ) (X_n,Y_n,Z_n)(Xn​,Yn​,Zn​)例如L ∗ 116 f ( Y / Y n ) − 16 L^*116f(Y/Y_n)-16L∗116f(Y/Yn​)−16其中f ff是低值区线性、高值区立方根的分段函数。L ∗ L^*L∗是 lightness明度不是物理 luminance。Lab 转换必须明确参考白。ICC 工作流常见 D50部分图像库常用 D65不能把任一实现的习惯写成 Lab 的普遍默认值。不同库还可能把L ∗ L^*L∗映射到 0255并给a ∗ , b ∗ a^*,b^*a∗,b∗添加偏移。HSV 便于按色相、饱和度等直觉属性操作但不是感知均匀空间。YCbCr 常用于图像与视频编码以 luma 和色差信号组织信息具体矩阵、范围与标准应明确。CIEDE2000 是基于 Lab 的色差公式。它不是百分制分数也没有普遍的 0100 硬上界。“小于 2 就看不出差别”只能作为特定观察条件下的经验说法。7. 写代码前的五项检查输入是 RGB 还是 BGR整数还是浮点范围是什么数据属于 camera RGB、sRGB、P3 还是其他空间当前处于线性域还是编码域白点、观察者、ICC 配置是否一致目标是物理运算、显示呈现还是感知距离参考与出处Michael S. Brown PDF 第 85105、165、190 页。sRGB 的标准依据为 IEC 61966-2-1本文给出常用标准矩阵与分段传递函数未将讲义中的近似式作为精确实现。本文对 Rec.709、参考白、Lab 与 CIEDE2000 范围作了必要的限定和校正。上一篇光谱与 CIE 颜色科学下一篇RAW 与传感器前端处理

相关新闻

FLAC转MP3全指南:编码参数、批处理与避坑实战

FLAC转MP3全指南:编码参数、批处理与避坑实战

简介:FLAC转MP3大师 v7.0 是一套面向音频处理与多媒体格式转换场景的实用工具,主要帮助用户将 FLAC 无损音频转换为高品质 MP3 音乐,同时兼容 WMV、MP4、MOV、MPG、WAV、WMA 等常见音视频格式转 MP3 的需求,适合日常整理无损音乐、…

2026/10/17 17:53:37 阅读更多 →
ContextCapture倾斜摄影三维建模:从下载安装到重建避坑

ContextCapture倾斜摄影三维建模:从下载安装到重建避坑

简介:这是一份ContextCapture软件下载地址获取资源,面向测绘工程、三维建模与倾斜摄影实景制作用户,为需要安装软件却苦于找不到可靠渠道的工程师、学生及项目团队提供经过实测验证的下载入口。压缩包整体仅2KB,结构非常精简&…

2026/10/17 14:33:36 阅读更多 →
2026 国内加速版 OpenClaw 安装:把下载源改到 TaoToken 的完整配置

2026 国内加速版 OpenClaw 安装:把下载源改到 TaoToken 的完整配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 16:18:31 阅读更多 →

最新新闻

ATOMIC常识知识库:if-then推理如何让机器更懂人间常识

ATOMIC常识知识库:if-then推理如何让机器更懂人间常识

1. 从标题拆解:这个项目到底在解决什么问题第一次看到“ATOMIC:An Atlas of Machine Commonsense for If-Then Reasoning”这个标题,我脑子里蹦出来的第一个念头是:终于有人把“如果……那么……”这种人类三岁小孩都会的推理&…

2026/10/17 22:03:03 阅读更多 →
OpenResearch多工具协同实战:Claude Code、Codex、OpenCode与Cursor配置避坑指南

OpenResearch多工具协同实战:Claude Code、Codex、OpenCode与Cursor配置避坑指南

1. 从“OpenResearch”说起:一个被热词推着走的项目“OpenResearch”这个词第一次出现在我视野里,是在几个开发者群里同时被刷屏的时候。那段时间,Claude Code、Codex、OpenCode、Cursor 这几个名字几乎天天被人挂在嘴边,有人晒截…

2026/10/17 22:03:03 阅读更多 →
从零掌握密码破译:古典密码、频率分析与多层编码破解实战

从零掌握密码破译:古典密码、频率分析与多层编码破解实战

“Bailian4112 情报破译-Cryptanalysis”这个标题,我拿到手的第一反应是:这不就是一场针对古典密码体系的情报分析综合练兵吗?作为一个长期和密文、编码、加密算法打交道的人,我看到“情报破译”四个字就明白,这不是普…

2026/10/17 22:03:03 阅读更多 →
信息犯罪与计算机取证读书笔记模板:从思维导图到知识检查清单

信息犯罪与计算机取证读书笔记模板:从思维导图到知识检查清单

简介:这份PPT读书笔记模板面向信息安全、网络空间安全及法学相关专业的学生与备考人员,围绕《信息犯罪与计算机取证》一书梳理知识框架,帮助读者快速建立从信息安全、信息犯罪到计算机取证与司法鉴定的完整认知。模板以思维导图、目录分析、内…

2026/10/17 22:03:03 阅读更多 →
鸿蒙高德地图实战:从SDK集成到定位瓦片加载的避坑指南

鸿蒙高德地图实战:从SDK集成到定位瓦片加载的避坑指南

简介:鸿蒙HarmonyOS高德地图实战项目代码,面向需要在鸿蒙应用中接入高德地图SDK的开发者,以“周边生活服务”为完整案例,集中展示地图显示、当前定位、周边商家搜索、搜索结果列表、地图标记、路线规划到所选商家以及商家详情查看…

2026/10/17 22:03:03 阅读更多 →
共享单车数据分析毕设全攻略:从数据清洗到答辩避坑指南

共享单车数据分析毕设全攻略:从数据清洗到答辩避坑指南

每年毕设选题季,“共享单车数据分析”都会出现在一大批计算机、大数据、信息管理相关专业的备选名单里。我见过不少同学第一眼看到这个题目的反应:数据量看着大、业务又好理解、能出图、能写分析,感觉是个稳妥的选择。真正开始做之后&#xf…

2026/10/17 22:02:02 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →