【GAMES101】Lecture 20 颜色

2024-02-11 02:12
文章标签 20 颜色 lecture games101

本文主要是介绍【GAMES101】Lecture 20 颜色,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

光 

颜色

加色系统

CIE RGB颜色匹配实验

颜色空间

CIE XYZ颜色空间

HSV颜色空间(Hue-Saturation-Value)

 CIELAB空间

减色系统:CMYK


光 

光是由不同波长的光波组成的,其中可见光的波长范围在400nm到700nm

用谱功率密度(Spectral Power Distribution ),SPD来描述光在不同波长的分布,就是光源在不同波长的功率分布

而这个光谱功率的分布具有线性可加性

颜色

颜色是人类感知的一种现象,它不是光的普遍性质,不同波长的光并不是颜色,我们先来研究一下眼睛的结构,瞳孔是光圈,晶状体是透镜,这个视网膜就是传感器

视网膜上有两种感光细胞,杆细胞(Rods)和锥细胞(Cones),比较多的是杆细胞,它是感受光的亮度的,少一点的是锥细胞,它是感受颜色的

有三种类型的锥细胞:S、M和L(对应于短波、中波和长波的峰值响应),然后它们分别对于不同波长的光有着不一样的反应强度

不同人的这三种锥细胞分布数量差别比较大

那对于照进眼睛的光这三种锥细胞就会有不同的反应强度,那么光在不同波长上有不同的强度分布,锥细胞对于不同波长的光也会有不同的反应强度,所以每种锥细胞感知到的强度就是这两个分布函数的乘积在波长上的积分

所以我们能够感受到的就是这三个SML的值,这就是我们感受到的颜色,而不是能够直接从光里面看到颜色,颜色本身是我们大脑的一种感受

因为这个SML的值是通过两个函数乘积积分得到的,因此就存在说这两个光的SPD光谱不一样,但是积分的结果是一样的,也就是说我们虽然看到的颜色是一样的,但是呢,它们可能是不同的光,因此就可以通过调节光谱来呈现出一样的效果,尽管它们可能不是同样的光

加色系统

也就是说颜色可以通过混合不同的颜色得到,计算机里面用的是加色系统,也就是用RGB三原色通过调整它们的三个的大小来混合出不同的颜色,并用它们各自的参数大小(R,G,B)来表示

CIE RGB颜色匹配实验

CIE是个组织,他们做了个实验,用RGB三种单色光通过调整它们之间的强度来混合达到400-700波长光相同的颜色效果

最后就会得到一个颜色匹配函数,上面对应了某个波长的光需要用多少RGB来达到相同的颜色效果,因此对于某个光谱的光,想要知道这个光的颜色效果,就将两个函数乘积求积分的结果就行了

颜色空间

CIE XYZ颜色空间

CIE还是那个组织,CIE XYZ是科学研究里面常用的颜色空间,同样有一个颜色匹配函数,但是这个函数是人造的,并不是实验测出来的,并且呢之前那个颜色匹配函数里面的R是存在负数的,这里都是正数,但是同样可以通过不同的x、y、z来模拟不同波长光的效果,这里的Y是亮度

通过归一化让x+y+z=1,在二维上只显示x和y来把整个颜色空间显示在二维上

这个二维的图就是色域,就是可以表示的颜色的集合,CIE XYZ颜色空间用的是加色系统,中间的白点是混合的,往三个点走就越纯

而标准RGB颜色空间(sRGB)无法表示所有的颜色

HSV颜色空间(Hue-Saturation-Value)

HSV是常用的颜色拾取器,就是用来调颜色的,Hue是色调,就是简单的颜色,而Saturation是饱和度,就是调节这个颜色的浓淡,在白色和原色之间的一个范围,Lightness (or value)就是亮度

 CIELAB空间

这个CIE还是那个CIE,它用的是三个轴来表示颜色,就是L a b这三个轴,这三个轴的两端都是互补色,这个L是亮度,互补色是白色和黑色,a是红色和绿色,b是蓝色和黄色

这个黑白互补可以理解,但是这个红绿和蓝黄怎么就互补了,还是那个道理,就是颜色是人的感受

如果你盯着一个东西盯久了,突然切换画面,眼前就会出现互补色

还有视觉是相对的,像这个A和B看起来是不一样的

但实际上它们两个是一样的

离谱但真实存在

减色系统:CMYK

什么是减色系统呢,就好像颜料一样,这个不同的颜色越混合就越渐近黑色,这个C是蓝绿色(Cyan),这个M是品红色(Magenta),Y就是黄色,K是黑色,那为什么我有了CMY还要一个黑色,不可以通过CMY混合得到吗,可以通过混合得到,但是黑色便宜

这篇关于【GAMES101】Lecture 20 颜色的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/698580

相关文章

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

【JavaScript】LeetCode:16-20

文章目录 16 无重复字符的最长字串17 找到字符串中所有字母异位词18 和为K的子数组19 滑动窗口最大值20 最小覆盖字串 16 无重复字符的最长字串 滑动窗口 + 哈希表这里用哈希集合Set()实现。左指针i,右指针j,从头遍历数组,若j指针指向的元素不在set中,则加入该元素,否则更新结果res,删除集合中i指针指向的元素,进入下一轮循环。 /*** @param

渐变颜色填充

GradientFill函数可以对特定的矩形区域或者三角形区域进行渐变颜色的填充。我们先来看看GradientFill函数到底长得什么样子,帅不帅。 [cpp]  view plain copy print ? BOOL GradientFill(     _In_  HDC hdc,     _In_  PTRIVERTEX pVertex,     _In_  ULONG

【语句】如何将列表拼接成字符串并截取20个字符后面的

base_info = "".join(tree.xpath('/html/head/script[4]/text()'))[20:] 以下是对这个语句的详细讲解: tree.xpath('/html/head/script[4]/text()')部分: tree:通常是一个已经构建好的 HTML 文档树对象,它是通过相关的 HTML 解析库(比如 lxml)对 HTML 文档进行解

【虚拟机/服务器】非图形化界面下修改Shell中颜色的设置

1、首先 cd ~ && ll 可以看到如下图所示 2、输入 sudo vim .bashrc 进入 .bashrc 并通过 /PS1 迅速从上往下定位第一个PS1 3、输入 i 进入插入模式后修改 else 下面的配置如下 说明:\e[1;32;40m] 其中1表示高亮显示,32表示字体颜色是绿色,40表示背景色为黑色 4、输入 esc 退出编辑模式到命令模式,再输入

C++20中支持的非类型模板参数

C++20中支持将类类型作为非类型模板参数:作为模板参数传入的对象具有const T类型,其中T是对象的类型,并且具有静态存储持续时间(static storage duration)。       在C++20之前,非类型模板参数仅限于:左值引用类型、整数类型、指针类型、指向成员类型的指针、枚举类型、std::nullptr_t。在C++20中,它已扩展并支持:浮点类型、字面量类类

Excel查询颜色RGB值

1.选中单元格,点右键,设置单元格格式-填充-其他颜色-自定义,下面显示的就是该单元格颜色的RGB值 2.与十六进制换算: https://www.sioe.cn/yingyong/yanse-rgb-16/