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

[计算机图形学]光场,颜色与感知(前瞻预习/复习回顾)

一、Light Field / Lumigraph—光场

1.我们看到的是什么

我们的眼睛能够把3D世界转换为2D的成像信号被我们感知,如上面第一幅图,这就是我们看到整个世界的过程,那么如果我们把之前记录的光的信息都完美的放在一个幕布上,那么我们是不会感受到任何异样的,因为我们接收的光没有发生任何变化,而这也是虚拟现实的原理。所以我们看到的东西实际上就是光线,我们的眼睛并不关心光线从多远进来或者从什么地方进来。

2.The Plenoptic Function—全光函数

我们可以用一个叫做全光函数的东西描述我们看到的东西,全光函数如上图解释:就是我们能够看到的所有东西。它是怎么做的呢,我们先从简单的开始说起,假设我们的函数现在是定义了我们在某一个位置往任何方向看到的东西,那么我们可以用P(θ,Φ),用一个球的极坐标表示任何一个方向,我们当然可以定义这么一个函数,接下来我们加入一个变量λ,它表示波长,也就是颜色信息,那我们就能看到彩色的东西了,于是我们的函数变成了P(θ,Φ,λ),我们再加入时间t,我们的函数就变成了P(θ,Φ,λ,t),引入时间t之后等于我们能看到动态的东西了,之前我们只能看到静帧,现在我们能看到动画/电影,也就是可以动的画面。

我们最后在加一个三维空间中的坐标,代表我们可以在空间中任何位置朝任何方向看,那也就变成了全息电影,于是函数就变成了P(θ,Φ,λ,t,Vx,Vy,Vz)。最终我们就得到了这么一个函数,它可以让我们在任何位置朝任何方向在任何时间看不同的颜色,而这就是我们看到的所有东西,一个七个维度的函数。

3.光场的定义

(1)光线

 定义光场之前,我们先来定义一下光线,那也就是一个起点一个方向,一个起点Vx,Vy,Vz。一个方向就是θΦ

当然我们不止只有一种定义光线的方式,还有其他办法比如上图中我们用两个点来定义一根光线,当然前提是我们知道方向正负。

(2)光场

那么对于我们看到的任何一个物体,我们都可以理解为它在一个包围盒里,那无非也就是我们在任何位置任何方向都能看到这个物体。又因为光路是可逆的,我们可以反过来描述一个物体在任何位置往任何方向发出的光线,把这个事情描述清楚,我们自然就可以得到我们在任何位置朝任何方向看到这个物体它的样子。这个函数记录的正是这个物体的任意一个位置朝各个方向发出光的强度,而这就是我们描述的光场。而光场正是全光函数的一小部分,因为它只有二维的位置二维的方向。二维的位置指的是物体表面的坐标(u,v),二维的方向指的是(θ,Φ)

通过一个四维的光场,我们完全可以描述我们在任何位置看到物体表面的任何光的信息,我们之前说的包围盒就是这个意思,我们可以想象用一个黑盒把物体包起来,通过我们之前记录的光场,我们完全不需要知道里面的物体是什么,这和我们一开始说的幕布是一个意思。

通过之后的介绍我们知道了,如果想描述一个光场,我们只需要给定一个平面,记录平面上每个点的位置的每个朝向的光的信息就可以了,这也符合我们之前说的第一种光线的定义,给一个点(u,v)和一个方向(θ,Φ)。那么我们也可以用第二种光线的定义来描述一个光场,我们用两个点,那也就是两个平面,两个平面上各自取一个点,就能确定一条光线,因为我们已经知道了光线一定是朝外的,两个平面的坐标分别用(u,v)(s,t)表示,我们发现这并没有本质的区别,因为它们都是四维的。

而关于这块,我们对刚才的两个平面定义的光场有两种不同的理解形式,这里用浅显易懂的话给大家解释一下,第一种情况,我们在(u,v)上取不同的坐标,看向(s,t)平面,这也就相当于假如我们不固定盯着物体的某一个点看,也就是所谓的平行眼,就像相机一样,我们举到哪里相机就拍到哪里,然后我们从各个不同的角度去看向这个物体第二种情况,从(s,t)平面的不同位置看向(u,v)平面,或者说从(u,v)平面一侧的不同方向看向(s,t)平面的某个位置,这就相当于我们看物体只盯着物体的某一个点看,即使我们移动了位置,但是我们就盯着那一个固定的点看。

当然上面说的只是一种通俗的理解,自然界中的确有从st平面看向uv平面的例子,就是苍蝇的复眼,复眼的结构非常复杂,它们由许多独立的更小的眼睛组成,这就好像有一个摄像机矩阵一样,而这种情况下我们看向一个像素,我们看到的实际是许多的Radiance而不再是Irradiance了,也就是说我们看到的一个像素实际上是穿过这个像素的来自不同方向的光。

4.光场摄像机

光场照相机就和我们前面提到的原理是一样的,简单地说,它把每个像素都替换成了透镜,那也就相当于一个摄像机里面有很多小摄像机,那么每个像素也就能记录穿过该像素的不同方向的光了,得到的信息自然也就是四维的。并且它支持后期重新调整聚焦,利用的自然也是光场。

当然,除了后期重新调焦,光场摄像机自然也有我们前面提到过的,从任何角度拍摄物体的功能,我们拍摄完一张光场照片后,如果想恢复原来的正常的照片只需在每个微透镜上都取来自同一方向的光即可,而去不同方向的光的过程和我们移动正常相机从而从不同角度拍照的过程一样,也就是说光场摄像机从一个角度和位置就可以拍摄出许多不同角度和位置的照片。当然光场摄像机也有问题,它经常有分辨率不足的问题,也就是对于分辨率的要求非常高,因为我们要用原本一个像素的大小表示更多的像素,原本二维大小的分辨率,需要再平方,也就是四维的分辨率,而微透镜也是十分精密的器件,生产起来成本很高,所以光场摄像机的成本自然也很高。

二、颜色

1.物理上的颜色基础

拿出一个棱镜可以将光折射出不同的颜色,因为不同波长的光有不同的折射率。而给定任何一种光它一定有对应的光谱光谱就是光能量在不同波长上的分布。图形学我们关心的是可见光的光谱,大概在400nm—700nm之间。

光谱的更准确定义是谱功率密度SPD,也就是光在不同的波长的能量。我们因此就可以用SPD来描述光在不同的波长的分布。如下图阳光和蓝天的分布。

 日光灯和LED灯的不同SPD

 同时SPD具有线性的性质,如上图,这也符合我们开的灯越多就越亮的生活常识。

 

 2.生物上的颜色基础

人们对颜色的感知主要来自于视网膜视网膜上有感光细胞,一种是棒状感光细胞,数量比较多,它用来感知光的强度。另一种是锥形感光细胞,它数量比较少,它可以感知颜色。

锥形感光细胞又分为三种,分别是SML型细胞。

S细胞主要感知短波长的颜光,M细胞感知相对中间波长的光,而L细胞感知长波长的光。但是,不同人的眼睛,这三种细胞的分布比例和数量差异很大。这也就说明颜色只是人感知的结果。

3.Tristimulus Theory of Color—颜色的三刺激理论

那么三种不同的细胞是如何对颜色进行感知的?我们刚才说过SPD,也就是光对应不同波长上的分布,现在又知道了感知的分布,那么我每种细胞的感知只需要将SPD和对应的感知曲线相乘再做一个积分即可。

 也就是说,人们看到的颜色并不是光谱,而是积分得到的S,M,L三个数。

4.Metamerism—同色异谱

同色异谱现象,顾名思义,虽然两种光的光谱并不相同,但是经过积分之后,我们感知到的颜色是相同的。原因也很简单,我们之前说了颜色是光谱和感知曲线乘积之后积分后得到的三个数,那么有些时候很有可能即使光谱不相同,但是被积分之后得到的S,M,L相同,这是有可能的。

因此,我们可以根据同色异谱的原理做颜色匹配,也就是说如果我们拍了一幅照片我们想把它复现在显示器上,但是想保持颜色一致,我们并不需要用相同的SPD。

5.Color Reproduction/Matching—颜色复现/匹配

通过同色异谱我们也就知道,同一种颜色可以通过不同的“颜色”混合来得到。那么如何来混合呢?在计算机种我们的混合称之为加色系统,如RGB,我们把RGB三个数乘上某一个强度然后混合在一起,假如都是255,那么得到是白色,也就是会变强。这和画画调制染料正好相反,染料如果我们都混合在一起它会变黑,这是减色系统

那么是不是用这样一套三个颜色的加色系统就能表示出任意颜色呢?并不是,有时候我们会发现无论怎么调节这三个数的线性组合,它都不能表示出正确的我们想要的颜色,而又因为我们用的是加色系统,不能用负数,那么我们就在原颜色的三个值中加上一定的值,那也就相当于我们的参数的某个值减了一个值或者是负值。如下图。

于是人们发明了CIE RGB系统,它规定了三种基础颜色的SPD如上图,然后测出我们不同波长的光分别由多少这三种颜色组成,就可以得到在波长范围内的三条曲线,如下图。

而上图右边所示的就是RGB的匹配函数。综上我们就可以通过匹配函数取匹配任何一种SPD的光,和感知类似的,我们也是做积分就可以得到相应的值。

6.颜色空间

颜色空间也称彩色模型(又称彩色空间或彩色系统)它的用途是在某些标准下用通常可接受的方式对彩色加以说明。比如我们上面所说的RGB就是一种颜色空间。这里我们介绍另一种叫做CIE XYZ颜色空间,当然它也有相应的匹配函数如上图。和RGB不同的是,XYZ并不是通过实验测量得来的一套色彩空间,它是人为定义的。它的X不会有负值。且因为Y的曲线分布特殊性,它的大小在一定程度上能表示亮度的大小。

由此,我们可以将三个数用坐标表示,但是三维的坐标可视化起来太难了,我们想到Y可以表示亮度,那么如果我们固定一个亮度,也就是Y值,调整x,y就可以得到一个二维坐标了(x,yX,Y归一化后得到的值)。我们会得到上面这么一幅图,而这幅图就叫做色域色域,也就是一个颜色空间所有可能表示的颜色。

色域图我们可以观察到很多特点,比如中心的白点,而白色往往是不纯的,也就是混合的多的颜色,纯色往往分布在边界上。

 而我们之前所说的RGB也就是sRGB空间只能表示很小的三角形内的颜色,如上图。

HSV颜色空间是另外一种颜色空间,如上图所示,它也规定了三个值,H色调S饱和度V亮度,色调也就是红黄蓝这种颜色的不同,饱和度的大小决定它是更接近本身的颜色还是接近白色,亮度自然也就是决定它黑不黑。HSV也是一种用的很广泛的颜色空间,它很适合艺术家进行创作。

CIE LAB空间,有三个轴,L表示黑白灰亮度a轴表示红和绿b轴表示蓝和黄。为什么要这么表示呢,LAB颜色空间它的任何一个轴的两端都是互补色,比如白和黑是互补色,蓝和黄是互补色,红和绿是互补色,这些并不是猜的而是根据实验得到的,这是人脑对这些颜色的互补感知决定的。比如我们知道偏黄的绿,但是我们想象不出偏红的绿,因为红和绿差的太远了。

7.颜色只是感知的错觉

 

一二幅图的A,B色块和三四幅图的黄叉,在我们收到周围环境影响的时候我们都看不出它们是一种颜色,因为这是我们感知的结果。

8.减色系统

减色系统我们之前说了是与加色系统相对的一种系统,也就是越混越黑。比较常用的一种减色系统是CMYK系统,C是青色,M是品红色,Y是黄色,K是黑色。它在打印上很常用,这也就是问什么它带上了一个K,因为打印的时候黑色的墨水比较便宜好造,直接拿来用就行,而不是花大价钱去用三种颜色混合。

 

参考:

Lecture 20 Color and Perception_哔哩哔哩_bilibili

GAMES101_Lecture_20 (ucsb.edu)

 

 


http://www.kler.cn/a/17363.html

相关文章:

  • 24/11/12 算法笔记<强化学习> Policy Gradient策略梯度
  • 如何提高自动驾驶中惯性和卫星组合导航pbox的精度?
  • 【JAVA】正则表达式中的中括弧
  • 彻底理解ARXML中的PDU
  • LeetCode【0027】移除元素
  • 【AI换装整合包及教程】CatVTON与其他虚拟试衣技术的详细对比
  • 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,基于 CentOS 7 构建 LVS-DR 群集
  • springboot 集成 shardingSphere 加mybatisplus 自带增加 分页查询 和源代码包 分库分表 单库 分表 使用雪花算法id
  • node.js 处理路径问题
  • VR与AR:哪个有更大的潜力改变未来?
  • 今天面了个字节跳动拿35K出来的,真是砂纸擦屁股,给我露了一手啊
  • Skywalking
  • gtest之高级主题
  • Spring常用注解总结
  • PAT A1024 Palindromic Number
  • Java对象的创建方式以及对象的引用
  • 【Elsevier】中科院2区TOP, 高被引119篇, 稳定检索22年, 1周可见刊,5月15截稿~
  • Simulink 自动代码生成电机控制:弱磁控制从仿真到硬件开发板验证实验
  • 豪取BAT!超详细暑期实习算法面经(非科班无论文)
  • 如何监控一个程序的运行情况,然后视情况将进程杀死并重启
  • redis使用总结
  • 对传递函数的零极点、频率响应、稳定性的理解
  • Vue3 如何全局使用按钮截流指令
  • 复古决战快速施法穿墙秒怪分析流程及安全防护
  • 网络基础设施 拥塞控制
  • 基于JavaWeb实现的寻码网文章资讯管理系统