当前位置: 首页 > news >正文

[ISP] 人眼中的颜色

相机是如何记录颜色的,又是如何被显示器还原的? 相机通过记录RGB数值然后显示器显示RGB数值来实现颜色的记录和呈现。道理是这么个道理,但实际上各厂家生产的相机对光的响应各不相同,并且不同厂家显示器对三原色的显示也天差地别,因此要实现颜色的准确的的记录和还原需要经过一套转换和统一的过程。

颜色是人的所见所感,在整个颜色的记录和呈现的过程中,体现着以人为本的思想。

 

1. 颜色是什么

一束光中由不同波长的电磁波组成(光谱),而自然界存在各种各样的光谱(定义为集合Q)。

自然界中的光谱

人的眼睛中有三种视锥细胞(L,S,M),这三种视锥细胞对不同波长光的响应各不相同。

添加图片注释,不超过 140 字(可选)

人类通过视锥细胞响应比例的差异来识别不同光谱的"颜色"(集合S)。

添加图片注释,不超过 140 字(可选)

但是不同光谱到LSM响应的映射是个多对一的过程(Q->S是满射非单射),换言之存在不同的光谱产生一样颜色的情况(异谱同色)。

添加图片注释,不超过 140 字(可选)

因此颜色可以说是人眼中LMS的一个响应组合。(想象一下三维空间中每个点是一组LMS的响应组合代表一种颜色)

 

2. 颜色的三刺激值表示

使用不同的三元色刺激人眼可以产生各种LMS响应组合(颜色),这正是异谱同色的一个应用。而且三原色的刺激值跟LMS的影响组合存在线性一一对应的关系。

CIE从颜色匹配实验得到人眼的颜色匹配函数,使用XYZ三原色可以匹配不同的单色波长光。由于人眼对颜色感知的线性特性,对复杂的光谱可以看作是不同单波长光的叠加。

添加图片注释,不超过 140 字(可选)

忽略亮度因素,得到CIE XYZ色度图,每个颜色都可以用一个xyz刺激值来表示,色度图包含了人类所有可见颜色以及其对应的刺激值。

 

因此颜也可以使用XYZ刺激值来表示。(想象一下三维空间中的每个点是XYZ的组合代表一个颜色,它跟上面的LMS空间存在线性对应关系)

3. 相机眼中的颜色

相机在不同的感光元件上放置不同的滤光片来实现sensor对光谱差异响应,因此相机眼中的颜色是一个RGB的响应组合。

相机响应曲线

相机RGB响应跟人眼的LMS响应往往存在较大的区别,为了使其跟人眼中的颜色对应起来,需要建立一个相机RGB响应值到CIE XYZ刺激值的映射;这个过程涉及到相机颜色矫正和标定过程,且存在非线性转换关系(参见卢瑟条件)。

相机RGB与色彩校正后RGB

4. 显色呈现和还原

正如秦统一文字,CIE XYZ建立了一个人类世界中颜色的一个统一表示方法。其他一些标准颜色空间的例如sRGB,Rec2020使用了不同的三原色来表示颜色,但他们的RGB三原色刺激值都可以跟XYZ进行线性转换。

显示器拿到三原色刺激值以及其对应的色彩空间后,就可以确定这是人类眼中的哪种颜色,然后使用三种不同的光去产生一个光谱,使其可以模拟对应颜色在人眼中的响应。

 

至此一束光的"颜色"从记录再到呈现给人类的过程就结束了。

杂谈:

其实人类对颜色的识别是一个大脑高度参与的过程,大脑可能会帮你自动做白平衡操作,例如黑金/蓝白裙子心理实验。

 

参考资料:

光线与数学的魔法:相机拍到的照片颜色是怎么和人眼看到的结果吻合的? - 知乎 (zhihu.com)

CIE 1931 color space - Wikipedia

色彩理论普及 | 从十六进制编码到RGB色彩呈现 - 25学堂 (25xt.com)

相关文章:

  • 江苏网站建设包括哪些哈尔滨网站建设
  • 上海网站优化推广公司百度权重等级
  • 淘宝做网站费用哪家网络公司比较好
  • 南宁疫情简介厦门seo排名扣费
  • 建设网站可选择的方案有北京百度推广代运营
  • 河南平顶山网站建设与管理专业网络营销策划的基本原则是什么
  • MyBatis注解
  • 人该怎样活着呢?50
  • Unity学习日志4
  • protobuf安装
  • 【Go语言圣经2.3】
  • 【编译链接】Tasking编译器下如何在链接文件中定义标定段
  • Spring MVC拦截器中的责任链模式深度解析
  • golang中的结构体
  • 力扣算法ing(29 / 100)
  • 蓝桥杯好题推荐---前缀和
  • 生活中的可靠性小案例11:窗户把手断裂
  • ClientAbortException问题分析
  • Nginx配置+虚拟主机
  • RabbitMQ延迟消息
  • python学智能算法(八)|决策树
  • 解决 openeuler 系统 docker 下载慢,docker 镜像加速
  • HTML、CSS
  • 电子元器件——电感参数与选型
  • C++学习内存管理
  • Mysql连接---语言连接和图形化界面