色彩视觉
色彩是对不同波长的光的能量的感知:
- 不同波长的电磁波(electromagnetic waves)对应不同的色彩;
- 对于人眼能感知的光(可见光),其波长范围为380nm到760nm之间。
光的谱分布
- 光是由不同波长的电磁波按照某种能量分布混合叠加而成。例如,白光是由所有可见波长的电磁波以相等的强度混合得到。
- 谱分布:光在各个可见波长的分量的强度分布函数称为光的谱分布。
光在每个波长上的能量有多大,就得到了上图中的一条曲线,这个曲线就是谱分布。我们可以用这条曲线来刻画一些特有的光。
- 与光类似,色彩也可以使用谱分布函数来进行描述。
- 然后,使用谱分布函数来表示色彩,不仅复杂,而且这样的表示方法并不是一个一一对应关系。
- 实际上,不同的谱分布函数可能对应为同一种色彩,也就是异谱同色现象。
RGB色彩空间
- 在所有用于表示色彩的各种色彩空间中,RGB(红绿蓝)色彩空间在计算机图形学中的使用最为广泛:
- 色彩使用三通道RGB向量(r,g,b)来表示;
- 在RGB色彩空间中,有部分的常用操作可以通过对RGB三通道分别处理而进行;
- 通常可以将r、g、b分别规整化为0,1内的浮点数;当使用8bit进行存储时,r、g、b通常取值为0,255内的整数。
- 色彩被表示成三个基本色彩:红色(R)、绿色(G)、蓝色(B)的线性组合:
- C = rR + gG + bB
- 为什么选择红绿蓝作为基本色彩?
- 以人类视觉的三刺激理论为基础;
- 人眼的视网膜中有三种锥状视觉细胞,分别对红、绿、蓝三种光最敏感。
我们可以近似把所有的颜色看成是一个立方体,立方体的三个轴对应R、G、B的值,那么它们在立方体空间中的每一个点都有一个(r,g,b)值对应一种颜色。
- 然而,一部分色彩无法表示成R、G、B光波的正线性组合,这是RGB色彩空间的一个缺点。
上图是红、绿、蓝的三根曲线,当波长为600的时候,可以由红色和绿色曲线的两个交点组合而成的波长为600的光,这里是正常的;但是波长为500的时候,红色光的取值为负,它无法使用正线性组合来表示,这是一个问题。国际标准化组织就引入了另外的色彩空间做修正来使得R、G、B都是正的。
- 其他常用的色彩空间还包括:
- CMY
- HSV
- CIE XYZ
CMY色彩空间
CMY是不同于RGB的另外一种基本色彩。它是由青(Cyan,1-红色)、品红(Magenta,1-绿色)、黄(Yellow,1-蓝色)组成,它们分别是R、G、B的补色(complements)。
- CMY被称为“减色系统”,(0,0,0)为白,(1,1,1)为黑;数值越大越灰暗。
- RGB为“加色系统”,(0,0,0)为黑,(1,1,1)为白。数值越大越鲜艳。
CMY主要用于印刷出版行业使用。
HSV色彩空间
- 在真实的RGB彩色图像中,可以包含多达256*256*256=16777216种可能的色彩;
- 使用RGB色彩空间来描述和定位如此大量的不同色彩非常困难,也不直观。HSV系统则提供了一个直观的方法来对色彩进行准确的选择;
- HSV色彩空间应用于:图像处理、分形图像、光线跟踪...
HSV的具体内容可以参考OpenCV计算机视觉整理 中的HSV/HSB/HSL。
CIE XYZ色彩空间
由国际发光照明委员会于1931年提出。
CIE XYZ色彩空间可以表示所有可感知的色彩(而RGB空间却不能)。
- 色彩基XYZ是色彩基RGB的线性变换。
- 更多地应用于色彩科学的研究。
- 于人类的感知系统密切相关。
可以把CIE XYZ色彩空间可视化为如下色度图,其中x=(X\over X+Y+Z),y=(Y\over X+Y+Z)
图像和像素
图像
- 图像可以看成是一个二维离散函数f(x,y);
- 函数f的定义域是由矩阵排列着的许多格子组成,这些格子被称为像素(pixel);
- 函数f的取值则为各个像素的色彩;对于彩色图像,可以是RGB或者RGBA;对于灰度图像,f为单值函数。
三角网格模型
图形学的基本目标是什么?
- 从虚拟的三维场景及相机的位置信息中,生成出一副二维图像。
- 而三维场景又以怎样的数据结构来表示?
- 简单的球体,长方体可直接用其参数描述;
- 对于复杂模型,则需要使用参数曲线和曲面或者更一般的网络模型来进行描述。
- 网络模型中又以三角网格最为常用。
- 三角网格是由一系列欧式空间中的三维顶点以及连接这些顶点的若干三角面片组成,具体包括:
- 顶点集合 V=((v_1,v_2,...,v_n))
- 面片集合 F=((f_1,f_2,...,f_m))
- 其中F中的每个面片(f_i)都是由V中的顶点构成的空间三角形:(f_1=(v_{a1},v_{b1},v_{c1}),f_2=(v_{a2},v_{b2},v_{c2}),...)
上图中的牛显示了三角网格的结构,龙和人头也是使用三角网格绘制的结果。
法向量
三角面片的法向量(normal):
- 三角面片的法向量是垂直于该三角面片所在平面的非零向量;
- 对于每个三角面片单独而言,其法向量都有两种可能的朝向;
- 法向量的朝向决定了一个三角面片的正面与反面;
- 对于连续可定向的三角网格整体而言,相邻的三角面片需要具备一致的法向量朝向。
光照模型
光照模型(lighting model或illumination model)用于计算光的强度
- 局部光照明(Local Lighting),关注物体直接受到光源影响所产生的光照效果。
- 全局光照明(Global Lighting)
- 关注阴影效果;
- 关注所有不是直接与光源位置相关的光照效果,例如反射和折射效果,等等...
光照模型的历史
- 1967 年,Wylie 等人第一次在显示物体时加入了光照明效果,认为光的强度与物体到光源的距离成反比关系。
- 1970 年,Bouknight 提出了第一个光反射模型:
- Lambert 漫反射光 + 环境光
- 发表于 Communication of ACM
- 1971 年,Gouraud 提出了漫反射模型加插值的思想:
- Lambert 漫反射光 + Barycentric 插值
- 发表于 IEEE transactions on Computers
- 1975 年,Phong 提出了图形学中第一个有影响也是最有影响的光照模型:Phong 模型
- 漫反射 (diffuse light)+ 环境光 (ambient light)+ 高光 (specular light)
- 发表于 Communication of ACM
光的传播
- 光的传播遵循反射定律:
- 入射角等于反射角;
- 入射光线、反射光线、以及反射面的法向量位于同一平面内。
上图中,右边的绿点表示眼睛,Light Source 表示光源,Reflection 是反射光,Normal 是法向,View 是视点。它们都是位于同一个平面的。
- 折射定律 (也叫 Snell 定律):
- 入射角和反射角的正弦值之比是一个仅仅取决于介质的常数;
- 这个常数称为相对折射系数。
- 光的传播遵循能量守恒定律:
:入射光的能量
:漫反射光的能量
:镜面反射 (specular reflection) 光的能量
:折射 (refraction) 光的能量
:被介质和物体所吸收的能量
- 光的度量方法
- 立体角 (Solid Angle):
- 衡量物体相对于某一视点 P 的视角大小;
- 立体角最大为 4π。
1. 在上图中,使用空间一个面片的面积除以面片中心点到视点的距离的平方来表示立体角。空间最大的角度就是球,球的面积除以半径平方,得到最大立体角 4π。平面角度最大是 2π。光通量 (Luminous Flux):光通量定义为:单位时间内通过面元 dS 的光能量,记为 dF。发光强度 (Radiance):发光强度定义为:单位立体角内的光通量,记为 I。
Phong 光照模型
Phong 模型支持点光源和方向光源。
Phong 模型是局部光照模型,将局部光照明效果分解为三个部分:
- 漫反射光效果;
- 镜面反射光效果;
- 环境光效果。
上图中,L 是入射光,R 是反射光,N 是物体表面法向量,V 是视点方向,H 是 L 和 V 夹角的角平分线方向。
- 漫反射光效果
- 漫反射光的传播是各向同性的;
- 漫反射光的强度为:
是入射光强度
是漫反射系数,它具有三个分量
、
、
,分别代表 R、G、B 三个通道的漫反射系数。
与模型自身的色彩紧密相关。
- L 是入射光方向,N 是法向。
该公式说明,物体表面上的一点,它的光强 (颜色) 主要取决于入射光和法向的夹角,该夹角越小,则光强越强,夹角越大则越弱。这就比如说中午的太阳光照比晚上的要强。
- 镜面反射光效果
- 对于光滑的平面,依据反射定律,反射光线往往集中在一个小的立体角内,这些反射光我们称之为镜面反射光;
- 镜面反射光的强度为:
是镜面反射系数,与物体表面光滑度相关;
- n 是反射指数:n 越大,则高光区域越集中。