光场 Light Field /Lumigraph

我们看到的世界,是一张图
image.png

全光函数 The Plenoptic Function

用来描述人可以看到什么

把每个看到的东西参数化
image.png
经纬度的观察角、光波颜色、时间t
这些构成了电影。(在某个固定时刻往固定角度看到固定的颜色)
image.png
再加入xyz的坐标,这就是全息世界
不仅可以看到,还可以改变位置
在任何位置,任何时间看向任何位置得到颜色/东西

从这7个维度,就可以描述人能够看到的整个世界

采样全光函数 Sampling Plenoptic Function

2D情况
image.png

光场

是全光函数的一个小部分
他需要的是二维的位置(包围盒的uv)和二维的方向(两个平面上的点确定一个方向 st)
所以光场是4维的

image.pngimage.pngimage.png
对于一个物体,给予一个包围盒,然后记录每个点往任意方向看到的光
就是这个物体的光场
这样定义我们就不需要知道包围盒里面的物体长啥样。
查询过程就像我们人在屋子里从窗口往外看,只需要知道窗口平面的光线信息
原理就是:光路是可逆的,我们知道了包围盒任意一点往任意方向的光线,就知道从任意位置看往包围盒任意一点的光线。
image.png
如何使用呢
当摄像机放在紫色点的时候就可以查询光路所在光场中的信息

uv 平面和 st 平面

我们记录的光场相当于就是st上取一个点,uv上取一个点然后连接成为一条光线记录 物体在uv平面左边 , 整个世界在st平面的右边

如果从uv上取一个点,看向所有的st平面点
image.png
这就相当于针孔摄像机,我们物体的所有光线都穿过这个孔被记录下来,看到了完整的物体
切换uv平面的点就是切换摄像机的摆放位置,得到的就是不同角度看到的物体

如果从st平面取一个点,看向所有的uv
image.pngimage.png
记录了同一个物体,不同方向是什么
打到st一个像素上,来自uv不同方向的光是什么。
或者说,从uv上取所有点看向st上一个点,每一个uv点贡献的值是什么。
这就是把相机拍摄到的irradiance展开为不同方向的radiance

光场摄像机

光场摄像机,就是记录了所有到达这个位置的光线信息
可以理解为

  • 普通摄像机,st平面就是感光元器件上,一个像素就是一个值(上图uv的平均)
  • 广场摄像机,st平面每个像素格子都是一个透镜,把光的各个方向信息记录在右边的感光元器件上的子像素上,一个像素格子是很多值(上图uv)。

image.pngimage.pngimage.png

微透镜原理

把原来放置感光元器件的一个像素的地方替换成一个透镜,然后再在后面放置感光元器件,这样就让每个像素记录的不是irradiance 而是radiance,因为透镜组让每个像素也记录了光的方向信息。
这样我们看一个像素的时候,看的是它的某一个方向的光线。
image.png
原本要记录一个像素,现在要记录一块像素,所以分辨率也就降低了
任何一个光场像素圆的内部

  • 平均起来就是一般相机的结果
  • 每个子像素记录的就是不同方向的光线的信息

问题

  • 低分辨率
  • 高造价

作用
支持后期重新聚焦,调整光圈大小,调整焦距等

虚拟移动相机的位置
image.png
取不同方向的光线,就像是移动了相机的位置
同理,动态聚焦

Color

What is color

image.png
牛顿通过棱镜法线,白光可以被分成不同的颜色
分解了的颜色合到一起又可以合成白色
颜色是一个混合出来的结果

可见光谱 Visible Spectrum of Light

image.png
光谱就是光线的能量在不同波长上的分布
400-700nm 从紫外到红外(能量越来越低)
image.png
E=hc/λ = hf

  • E为能量,单位为kJ;
  • h为普朗克常量,单位为h=6.62606896(33)×10^(-34) J·s或者h=4.13566743(35)×10^(-15) eV·s;
  • c为光速,单位为c=3.153×10^8m/s;
  • λ为波长,单位为μm.

    普功率密度 SPD Spectral Power Distribution

    通过SPD描述光在不同波长上的强度。
    image.pngimage.png
    不同光的SPD不同,具有线性性质

    什么是颜色 - 感知

    颜色是人的感知 human perception 不是物理上的东西,跟人有关。

    Color perception

    人眼结构 Anatomy of the human eye

    image.png

人眼就是一个摄像机,通过肌肉来拖拽晶状体来改变焦距
视网膜是感知元器件

感光器官 Retinal Photoreceptor Cells

Rods 视杆细胞,最多,只感受强度
Cones 视锥细胞,少量,感受颜色

  • S-Cone 蓝
  • M-Cone 绿
  • L-Cone 红

image.png
三类视锥细胞对应的波长响应不同,其实就是蓝绿红光(我有点理解为什么OpenCV要默认用BGR了)
image.pngimage.png
但是不同人这三种细胞的分布是很不一样的,有很严重的个体差异
颜色是人感知的结果

SML数值

image.png
把响应曲线和给定光的SPD相乘(蒙版)做一个积分得到三种颜色值
人们最终看到的是SML三个数,看不到光谱
image.png

同色异谱 Metamerism

看起来相同(SML数值相同),但是光谱(SPD)不同
image.png
这意味着给定一个颜色就可以用不同光去混合它

Color reproduction / matching

加色系统 Additive Color

image.png

减色系统

画画和打印是减色系统
image.png

颜色匹配过程

image.png
给定一个颜色,可以用其他三个颜色去混合得到,混合系数可能是负的
由此得到一种颜色系统叫做:

CIE RGB Color Matching

image.png
一个CIE组织规定的三原色,就是单色激光
然后用着三种混合出得到某一个波长上的颜色,然后得到一个颜色匹配函数
image.png
这样发现,有些颜色确实得是负的
image.png
要得到任何一个spd的光,就要乘上颜色匹配函数,并积分
这个RGB系统非常像人眼的SML系统 :::info 其实可以理解这个

  • 颜色匹配函数~~响应函数
  • 单色激光~~视锥细胞 :::

    Color space

    Standard Color Space

    Standardized RGB (sRGB) 标准RGB

  • 找某一台机器,知道它的RGB

  • 其他机器就按照这个方法制造

用的很广泛,但是色域有限

A Universal Color Space : CIE XYZ

image.png
这不是试验测得的颜色匹配系统,而是人造的,先定义了颜色匹配的曲线
因为Y比较均匀,覆盖范围也很大,所以Y一定程度能表示亮度
所以,归一化XYZ,这样就消去了z,因为z = 1-x-y
为了现实x和y,其自变量中还是需要固定一个Y值(因为Y只改变亮度),就能得到一个可视化的色域 Gamut
image.png

色域 CIE Chromaticity Diagram

image.png
中间是白色,最不纯的,边边是最纯的颜色

不同颜色空间的色域 Gamut

image.png

其他颜色空间

HSV色彩空间 Hue-Saturation-Value

色调,饱和度,亮度
image.png

CIRLAB Space (Lab)

image.png
跟人的感知相关(决定了什么是互补色,哪两个颜色放到对面)
互补色是可以体现在人的视觉拮抗/视觉停留

其他补充

HDR 高动态范围

Gamma矫正

Bloom辉光

人对于颜色的其他感知特性

Wolfe - Sensation & Perception

颜色强度是相对的

image.png
AB其实是一样亮的
image.pngimage.png