[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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/34905.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cursor插件市场打不开解决

问题现象: cursor搜索插件的时候提示错误,无法搜索安装插件 error while fetching extensions.failed to fetch 问题原因 cursor默认安装使用的并不是vs code的插件市场,国内网络有时候打不开 解决 修改插件市场地址并重启cursor 打开cur…

R 语言科研绘图 --- 密度图-汇总

在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…

安卓屏保调试

安卓屏保调试 - Wesley’s Blog 先看一下在设置点击屏保预览后的调用链(Android 14) #mermaid-svg-YQ66ef7zSvNutCCW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-YQ66ef7zSvNutCCW .erro…

考研系列-408真题计算机网络篇(18-23)

写在前面 此文章是本人在备考过程中408真题计算机网络部分(2018年-2023年)的易错题及相应的知识点整理,后期复习也常常用到,对于知识提炼归纳理解起到了很大的作用,分享出来希望帮助到大家~ # 2018 1.停止-等待协议的…

堆排序:力扣215.数组中的第K个大元素

一、问题描述 在一个整数数组 nums 中,需要找出第 k 个最大的元素。这里要注意,我们要找的是数组排序后的第 k 个最大元素,而不是第 k 个不同的元素。例如,对于数组 [3,2,1,5,6,4],当 k 2 时,第 2 个最大…

Qt-ZMQ的使用补充(pub-sub)

之前写过一篇Qt使用ZMQ的博客Qt网络编程-ZMQ的使用,本文是其的补充部分。 Linux上编译使用 首先这次实在Linux上进行演示,下载zmq源码,安装cmake,使用cmake进行编译。下载之后解压: 输入命令: cd ..mkdi…

一款基于Python的从常规文档里提取图片的简单工具开发方案

一款基于Python的从常规文档里提取图片的简单工具开发方案 1. 环境准备 安装必需库 pip install python-docx PyMuPDF openpyxl beautifulsoup4 pillow pip install pdfplumber # PDF解析备用方案 pip install tk # Python自带,无需安装工具选择 开发环…

日志存储与分析

日志是系统运行的详细记录,包含各种事件发生的主体、时间、位置、内容等关键信息。出于运维可观测、网络安全监控及业务分析等多重需求,企业通常需要将分散的日志采集起来,进行集中存储、查询和分析,以进一步从日志数据里挖掘出有…

cyberstrikelab lab2

lab2 重生之我是渗透测试工程师,被公司派遣去测试某网络的安全性。你的目标是成功获取所有服务器的权限,以评估网络安全状况。 先扫一下 ​ ​ 192.168.10.10 ​ ​ 骑士cms 先找后台路径 http://192.168.10.10:808/index.php?madmin&cind…

1.5.2 掌握Scala内建控制结构 - 块表达式

Scala的块表达式使用{}包裹语句组,单行语句不加分号,多语句用分号隔开。块表达式的结果是最后一行语句的值,无需单独写return。若无执行结果,则返回Unit对象(类似Java的void)。例如,有返回值时&…

VSCode + CMake

参考文献: 如何用 GCC, CMake 和 Make 编译C/C代码Windows 上的 Linux 子系统:WSLWSL:桌面 UI 远程连接 RDP 配置 VScode 文章目录 CMake 配置VSCode 配置launch.jsontask.jsonc_cpp_properties.json CMake 配置 编写如下的 CmakeLists.t…

【软考-架构】7、系统配置与性能评价

✨资料&文章更新✨ GitHub地址:https://github.com/tyronczt/system_architect 文章目录 性能指标💯考试真题第一题第二题 性能评价方法💯考试真题第一题第二题 阿姆达尔解决方法考试真题 性能指标 对计算机评价的主要性能指标有&#x…

STC89C52单片机学习——第20节: [8-2]串口向电脑发送数据电脑通过串口控制LED

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.03.15 51单片机学习——第20节: [8-2]串口向电脑发送数据&电脑通过串口控制LED 前言…

java简单基础学习

目录 简单5位验证码快捷键的使用 评委打分5个评委 去掉一个最高分和一个最低分 取平均分 抢红包出现数组越界java​编辑 双色球系统--之蒟蒻学习 简单5位验证码快捷键的使用 题目意思做个验证码 //生成一个5位数的验证码 //前四位是字母,大小字母都可以 //最后一位要是数字…

前端学习记录:解决路由缓存问题

问题描述:响应路由参数的变化,使用带有参数的路由时需要注意的是,当用户从 /users/johnoy 导航到 /users/jolyne 时,相同的组件实例将会被重复使用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得…

Leetcode-1278.Palindrome Partitioning III [C++][Java]

目录 一、题目描述 二、解题思路 【C】 【Java】 Leetcode-1278.Palindrome Partitioning IIIhttps://leetcode.com/problems/palindrome-partitioning-iii/description/1278. 分割回文串 III - 力扣(LeetCode)1278. 分割回文串 III - 给你一个由小写…

deepseek GRPO算法保姆级讲解(数学原理+源码解析+案例实战)

文章目录 什么是GRPO群组形成(Group Formation):让大模型创建多种解决方案偏好学习(Preference Learning):让大模型理解何为好的解答组内相对优势 优化(optimization): 让大模型从经验中学习(learning from experience)目标函数 GRPO算法的伪码表示GRPO算法的局限与…

【Linux我做主】基础命令完全指南上篇

Linux基础命令完全指南【上篇】 Linux基础命令完全指南github地址前言命令行操作的引入Linux文件系统树形结构的根文件系统绝对路径和相对路径适用场景Linux目录下的隐藏文件 基本指令目录和文件相关1. ls2. cd和pwdcdpwd 3. touch4. mkdir5. cp6. mv移动目录时覆盖写入的两种特…

自然语言秒转SQL—— 免费体验 OB Cloud Text2SQL 数据查询

在数据驱动决策的今天,企业急需从庞大业务数据中提炼信息,获取深度洞察。然而,面对海量数据,业务人员往往因缺乏SQL专业技能而难以快速查询和分析所需信息,频繁求助于BI部门不仅抬高了企业的沟通与时间成本&#xff0c…

鸿蒙next 多行文字加图片后缀实现方案

需求 实现类似iOS的YYLabel之类的在文字后面加上图片作为后缀的样式,多行时文字使用…省略超出部分,但必须保证图片的展现。 系统方案 在当前鸿蒙next系统提供的文字排版方法基本没有合适使用的接口,包括imagespan和RichEditor,根据AI的回…