写在前面:原始文案来源于凌风同学博客,本文在其基础上增加图片并对文案稍作修改。此系列文章已经私信咨询能否授权发布,但一直尚未得到本人回复。出于工作要求,本人需要记录该系列课程体系,以供后期交流学习使用,不得已在此公开。特在此严谨声明,该系列文章不以盈利为目的,侵权麻烦私信即可删除。
第二十讲目录
Lecture 20 Light Fields,Color and Perception
一.Light Field / Lumigraph
(一)The Plenoptic Function(全光函数)
人可以看到三维世界场景,如果给人前方加上一块幕布,让幕布上显示的就是前面的三维世界场景,那么这种视觉效果跟人直接看到三维世界场景并无区别 ,这也是虚拟现实的原理
我们可以用全光函数来描述上述过程。即用全光函数描述我们能看到的所有东西。
下面我们来看一下全光函数的推广过程:
1.Grayscale snapshot
用极坐标θ和φ来描述固定位置的人往所有方向看,看到的结果是一个数P。
2.Color snapshot
通过引入波长λ,来描述看到的点的颜色(因为光有不同的波长,所以人能看到不同的颜色)
3.A movie
我们再扩展一个时间t,这就是电影,不同时间看到的东西不一样
4.Holographic movie
刚刚说的各种扩展都是在人(摄像机)位置不动的情况下,在这里我们扩展人的位置VX、VY、VZ,相当于人(摄像机)可以在任意地点观察整个场景,这就是全息电影。
5.The Plenoptic Function
最后我们再推广一步。把这个函数不当做电影来看。将其理解为:在任何时间任何位置往任何方向看,看到整个世界不同的颜色。将整个世界定义成一个七维的函数,这个七维这就是全光函数。
6.Sampling Plenoptic Function (top view)
我们可以在全光函数中提取一部分信息,用来表示更复杂的光。光场就是全光函数的一小部分。
(二)Light Field
首先我们用两个属性定义三维空间中一条光线:起点(θ,φ)和方向(VX,VY,VZ)。
定义一条光线的方式有很多,比如在这里,可以取一条光线上任意两个点,就能确定这条光线(假设这条光线沿正向还是负向我们知道,根据两点确定一条直线可以确定这条光线)
也就是说光场就是用两个方向信息和两个位置信息(纹理映射中的u和v)定义一条光线(这里不明白先继续往下看)
1.Only need plenoptic surface
光场就是在物体表面上的任何一个位置往任何一个方向射的所有光的强度。
根据前面提过的的纹理映射,3D物体的表面其实是在一个二维空间中的,那么就可以用二维的uv来表示位置,而且任何一个空间中的方向都可以用θ、φ表示,这就用两个位置信息两个方向信息表示了一条光线。这就是光场。
2.Synthesizing novel views
从一个点往物体表面看过去,只要有光场,我们就可以知道能看到什么。因为在之前记录光场的时候,在物体表面的任何一个点,都记录了往任何一个方向发出去的光线信息,也就是说可以从光场中查询到之前记录的值(光的强度)
这也就是光场的好处,通过一个四维的函数(θ,φ,u,v),我们可以知道从任意一点看向物体,物体的样子。
3.Lumigraph / Lightfield
因此我们其实可以不用知道光场表示的是什么物体,仅通过光场的这些光线就能够恢复物体的样子。
对上述问题更进一步讨论
4.Lumigraph - Organization
假设我们在物体前面放了一个平面来记录光场,我们可以通过记录每条光在平面上的位置(u,v)和方向(θ,φ)来记录整个光场。
同样,我们也可以用两个平面,每个平面取一个点,分别记录两个点在平面上的位置,通过两点确定一条直线来确定每一条光线,从而确定整个光场。这两个点的位置信息分别用(s,t)和(u,v)来记录。
5.Lumigraph / Lightfield
那么对于上述问题,从不同的角度看就会有不同的理解:
假设场景在s,t平面的右边
(a):对于(a)来讲,从u,v平面上任意一点(某个像素点)看向s,t平面,得到的都是整个画面。好比u,v平面上有一排排摄像机(一个个像素点),取任何位置的摄像机(一个像素点)都能拍到整个画面。不同的摄影机拍到的物体角度不一样。中图表示从不同角度观察物体得到的画面。
(b):对于(b)来讲,在s,t平面上某一点(某个像素点)看向整个u,v平面,也可以理解为从整个u,v看向s,t上某个像素点。中图表示uv在不同方向看向st平面上某个固定像素点记录的画面。实际上就是uv上的所有点到st上的某一点打过去多少光。
(三)Light Field Camera
光场摄像机,支持后期的重新聚焦(先拍照,再聚焦)。
1.Understanding
光场照相机的基本原理:把原本摄像机的每个像素换成一个微透镜,对于每一个微透镜来讲,来自各个方向的光通过微透镜以后可以分流到各个方向去,在透镜后面的一片区域再用更小的感光元件记录下来(RGB颜色分别落到感光元件的不同点) 。这样就区别了普通摄像机各个像素的颜色是光线的平均,光场摄像机获得的像素颜色应该是三种感光元件的加权值。
光场摄像机直接记录下来的整张图片,每个区域都是一个圆,每个圆的里面又都存储了各个方向的光的信息。对比普通照相机,光场摄像机的最大区别在于将原本每个像素记录的光线给拆开了。
对于光场摄像机拍出来的照片,如何还原成普通的照片?
每一个透镜都选一个相同方向的光线(如上图的黑线方向),把每一个对应的结果记录在透镜所对应的像素上,即可得到一张普通照片。就好像把照相机放在某一个位置往一个方向看。
有了光场之后,取不同方向的光线还原照片,就好像可以虚拟地移动摄像机的位置。
重新对焦的原理也类似,由于有了整个光场,就可以取不同的光线重新组合这张照片。
由于光场摄像机记录了整个光场,因此可以对其后期进行各种处理(如对焦)。
但是光场摄像机也有一些问题:由于每个薄透镜表示一个像素,而透镜后面还有很多像素(感光元件),因此光场摄像机会出现分辨率不足的问题。对于精密零件制造等问题也会产生高成本。
二.Physical Basis of Color
(一)Visible light
1.The Visible Spectrum of Light(光谱)
为什么光线(白光)会被折射成不同的颜色,因为不同的波长对应不同的折射率。光谱即为光线的能量在不同波长上的分布。光谱是一个很长的范围,但是我们关心的是可见光的范围,大约在400—700nm。
2.Spectral Power Distribution (SPD)(谱功率密度)
谱功率密度描述可见光在任何波长的分布。
单位:辐射单位/纳米(例如瓦特/纳米)。也可以是无单位的。当绝对单位不重要时,经常使用缩放到最大波长的“相对单位”来比较波长。
3.Daylight Spectral Power Distributions Vary
如上图,不同点的SPD。蓝色点肯定是蓝色光比较多,所以多集中在低频段。白色点多集中在高频段。
4.Linearity of Spectral Power Distributions
SPD是线性的,如果用一个仪器去记录某种颜色光的SPD,那么这两种颜色同时记录的SPD(波长分布)就等于分开记录的SPD相加。
5.What is Color?
颜色是人类感知的一种现象; 它不是光的普遍属性。不同波长的光不是“颜色”
(二)Biological Basis of Color
人感知颜色在视网膜上。视网膜上有两种感光细胞:一种是棒状细胞(Rod Cells),感知光的强度,通过这种细胞就可以得到一张灰度图。眼中约有 1.2 亿棒状细胞;另一种是锥形细胞(Cone Cells),约 6-7 百万个。用于感知颜色,锥形细胞内部又被分成三类:S、M、L。每种锥形细胞具有不同的光谱灵敏度
1.Spectral Response of Human Cone Cells
S、M、L三种细胞对不同波长的响应各不相同。S对短波长感知更灵敏,M对中间波长感知更灵敏,L对长波长感知更灵敏。
2.Fraction of Three Cone Cell Types Varies Widely
但是不同人眼睛里这三种细胞分布非常不均匀(如上图的12个方块代表12个人的三种细胞分布)
(三)Tristimulus Theory of Color
感知颜色的结果就是把对应函数积分。
给定任何一种光线,人们实际看到的是三个数:S、M、L。
1.The Human Visual System
光谱经过人的眼睛,反映到视网膜上,被三种不同的细胞感知到形成三个数,这三个数在人的大脑里就能形成看到的颜色。
(四)Metamerism(同色异谱)
既然我们看到的不是光线的光谱,而是光线光谱和各种曲线积分出来的结果,那么有可能会出现两种光线光谱不相同,但是积分出来的结果相同,被我们看到结果相同。
正是利用这种现象,才能给人呈现出各种各样的颜色。
1.Metamerism is a Big Effect
这些光谱完全不同,但是积分出来结果相同,即人们看到的颜色相同。
比如有个照片拍摄了太阳,想从显示器上显示出来,通过不同的调节方式,使得人看上去颜色一样,但是光谱可能和原来的光谱完全不一样。
三.Color Reproduction / Matching
(一)Additive Color
==在计算机里用的是加色系统,==通过调节R,G,B三个颜色的值,来混合出各种颜色。加色系统如果把R,G,B三种颜色的值拉到最大(255),得到的是白色(如上图的灯光),==而画画中用的是减色系统,==各种颜色混合在一起会变成黑色。
1.CIE RGB系统
R、G、B可以做颜色匹配。这套系统里每种光线的SPD实际都是一个单一的△函数(在频谱上分布非常集中,几乎是在同一个波长上),也就是一种单色的光。我们要做的也是用三种单色的光R、G、B去调出各种颜色的光。
这样就可以把三根曲线做出来,这就是一个匹配函数,也就是对于任何波长的光,我需要用多少的R、G、B组合出来
(二)Color Spaces
1.CIE XYZ系统
同RGB一样也要定义颜色匹配函数,这个系统是人造的,提前定义好的,而且由于Y曲线比较均匀,因此Y在一定程度上就可以控制颜色的亮度。
通过对x、y、z做一个归一化,让x+y+z=1,这样我们通过x和y就能表示xyz这三个值。
于是就有了这样一个图。
这就是色域图。对于这张图来讲,由于用的是加色系统,所以中间白色部分是最不纯的,因为是各种颜色的混合,边界是比较纯的颜色。
色域就是一个颜色空间所有可以表示的颜色
对于不同的颜色空间,其可以表示的颜色范围不一样(如下图所示)。CIE RGB系统只能表示三角形,而CIE XYZ系统能表示西瓜状
(三)Perceptually Organized Color Spaces
1.HSV Color Space (Hue-Saturation-Value)
坐标轴对应色彩的艺术特征,广泛用于PS中的“颜色选择器”。
Hue(色调):颜色的“种类”,与属性无关。颜色的主波长。
Saturation(饱和度):颜色的”纯度”,更接近纯色还是白色。通过饱和度确定偏白还是偏颜色。
Lightness/value(亮度):颜色的“深浅”。通过亮度决定偏黑还是偏颜色。
2.CIELAB Space (AKA Lab*)
力求感知均匀性的常用色彩空间
L是lightness(亮度)
a 和 b* 是颜色对立面,a* 是红绿色,b* 是蓝黄色
Lab空间也是与感知有关,有三个轴L、a、b。L轴表示的是亮度,0是黑,100是白。a轴和b轴表示的极限两端都是互补色。
3.CMYK: A Subtractive Color Space
减色模型:混合的越多,颜色就会越深。
CMYK由蓝绿色、品红色、黄色和黑色组成,广泛应用于印刷。