计算机动画5-7

光照模型

光源

任何发出辐射能量的对象——发光体和反射体及其混合
属性:位置、颜色、方向、形状

分类

  • 点光源:所有光向四周平均发射 适用于比对象小得多的光源或离场景不太近的大光源
  • 无穷远出光源(近似平行光源):模拟类似太阳光线

辐射强度衰减

I I I 1 / d l 2 1/d_l^2 1/dl2衰减
问题:

  • 接近光源是强度变化过大
  • d l d_l dl 过大时,变化太小

改进: f r a d a t t e n ( d 1 ) = { 1.0 光 源 在 无 穷 远 处 1 a 0 + a 1 d l + a 2 d l 2 光 源 为 局 部 光 源 f_{radatten}(d_1)=\begin{cases} 1.0 \qquad 光源在无穷远处\\ \frac{1}{a_0+a_1d_l+a_2d_l^2}\quad 光源为局部光源 \end{cases} fradatten(d1)={1.0a0+a1dl+a2dl21

方向和投射效果

光线方向向量 V l i g h t V_{light} Vlight方向范围 θ l \theta_l θl构成一个圆锥体的可照射区域
记光源位置道一个对象位置的方向向量为 V o b j V_{obj} Vobj
则判断其是否可被照射到: α = a r c c o s ( V o b j ⋅ V l i g h t ) < θ l \alpha=arccos(V_{obj}\cdot V_{light})<\theta_l α=arccos(VobjVlight)<θl
沿着光源的方向向量光强最强,家督增加,强度衰减
f a n g a t t e n ( α ) = c o s a l α , 其 中 , α l 为 衰 减 指 数 f_{angatten}(\alpha)=cos^{a_l}\alpha,\\ 其中,\alpha_l为衰减指数 fangatten(α)=cosalα,,αl

基本光照模型(反射)

漫反射

粗糙表面,将光向各个防线发散出去

理想漫反射体

入射光在各个方向相同强度发散而与观察者位置无关

反射光强度可以根据朗伯余弦定理
漫反射例子
强 度 = 单 位 时 间 辐 射 能 投 影 面 积 → c o s ϕ N d A c o s ϕ N , 其 中 d A 是 单 位 面 积 , ϕ N 是 表 面 法 向 量 与 辐 射 能 方 向 夹 角 强度=\frac{单位时间辐射能}{投影面积} \rightarrow \frac{cos\phi_N}{dAcos\phi_N},\\ 其中dA是单位面积,\phi_N是表面法向量与辐射能方向夹角 =dAcosϕNcosϕN,dA,ϕN
假设每一表面都按照理想漫反射体对待,则可以将模型简化为 I d = I ∗ k d I_d=I*k_d Id=Ikd, k d k_d kd是漫反射系数

  • 环境光漫反射
    记环境光为 I a I_a Ia,则环境光对漫反射的贡献可表示为: I a m b d i f f = k a I a I_ambdiff=k_aI_a Iambdiff=kaIa,但是只有环境光缺乏立体感
  • 光源漫反射
    记光源强度为 I l I_l Il,入射光与反射平面的夹角为 θ \theta θ则漫反射光强度为 I l , d i f f = k d I l c o s θ I_{l,diff}=k_dI_lcos\theta Il,diff=kdIlcosθ
    上述两者综合可得漫反射公式如下:
    I d i f f = { k a I a + k d I l ( N ⋅ L ) N ⋅ L > 0 k a I a e l s e 其 中 L 为 反 射 光 线 单 位 向 量 , N 为 反 射 表 面 单 位 法 向 量 I_{diff}=\begin{cases}k_aI_a+k_dIl(N\cdot L)\qquad N \cdot L >0 \\ k_aI_a \qquad else \end{cases} 其中L为反射光线单位向量,N为反射表面单位法向量 Idiff={kaIa+kdIl(NL)NL>0kaIaelseL线,N

镜面反射

光滑表面上的高光, 是由接近镜面反射角的一个汇聚区域内,入射光的全部或绝大部分成为反射光所导致的

非理想反射体

反射方向分布在向量R周围的有限范围内

  • 较光滑表面的镜面反射范围较小
  • 粗糙的对象表面有较大的反射范围
    在这里插入图片描述
Phong镜面反射模型

镜面反射光强度与 c o s n s ϕ cos^{n_s}\phi cosnsϕ成正比,即 I l , s p e c ∝ I l c o s n s ϕ I_{l,spec} \propto I_lcos^{n_s}\phi Il,specIlcosnsϕ
其中 n s n_s ns为镜面反射参数
在这里插入图片描述
phong镜面反射模型例子
I l , s p e c = { k s I l ( V ⋅ R ) n s V ⋅ R > 0 和 N ⋅ L > 0 0 e l s e 其 中 , V 为 视 点 方 向 , R 为 反 射 R = ( 2 N ⋅ L ) N − L I_{l,spec}=\begin{cases} k_sI_l(V \cdot R)^{n_s} \quad V \cdot R>0和N \cdot L>0\\ 0 \quad else \end{cases}\\ 其中,V为视点方向,R为反射 R=(2N\cdot L)N -L Il,spec={ksIl(VR)nsVR>0NL>00else,V,RR=(2NL)NL
简化:
在这里插入图片描述

  • L与V之间的半角向量H来计算镜面反射范围: H = L + V ∣ L + V ∣ H=\frac{L+V}{|L+V|} H=L+VL+V
  • c o s α cos\alpha cosα代替 c o s ϕ cos\phi cosϕ
  • N ⋅ H N \cdot H NH代替 V ⋅ R V \cdot R VR

漫反射和镜面反射合并:
I = I a m b d i f f + ∑ l = 1 n ( I l , d i f f + I l , s p e c ) = k a I a + ∑ l = 1 n I l [ k d ( N ⋅ L ) + k s ( N ⋅ H ) n s ] I=I_{ambdiff}+\sum^n_{l=1}(I_{l,diff}+I_{l,spec})=k_aI_a+\sum^n_{l=1}I_l[k_d(N \cdot L)+k_s(N \cdot H)^{n_s}] I=Iambdiff+l=1n(Il,diff+Il,spec)=kaIa+l=1nIl[kd(NL)+ks(NH)ns]

透射模型

透明对象表面同时产生反射光折射光

反射光

在这里插入图片描述

  • 根据Snell公式计算折射角 θ r \theta_r θr: s i n θ r = η i e t a r s i n θ i sin\theta_r=\frac{\eta_i}{eta_r}sin\theta_i sinθr=etarηisinθi
  • 折射方向向量T: T = ( η i η r c o s θ i − c o s θ r ) N − η i η r L T=(\frac{\eta_i}{\eta_r}cos\theta_i-cos\theta_r)N-\frac{\eta_i}{\eta_r}L T=(ηrηicosθicosθr)NηrηiL

折射光

假设:

  • 不考虑折射导致的路径平移
  • 各对象间的折射率不变
  • 折射角=入射角

简化光强: I = k t I t r a n s I=k_tI_{trans} I=ktItrans,其中 k t k_t kt为该点的透射系数

总光强: I = ( 1 − k t ) I r e f l + k t I t r a n s I=(1-k_t)I_{refl}+k_tI_{trans} I=(1kt)Irefl+ktItrans

全局光照

光线跟踪算法

跟踪光线在场景中的反射和折射,并计算对光强的作用
优点:真实
缺点:计算量大
是一种高度视相关的方法,

基本算法
  1. 为光线跟踪算法建立一个投影参考点在z轴、投影平面为xy平面的坐标系统
  2. 从投影参考点出发,穿过每个像素中心进入场景
  3. 计算与该光线相交的所有表面,找到最近的交点(可见面)
  4. 计算该光线在此交点上反射和折射光强度
  5. 构造光线跟踪树
    在这里插入图片描述
    构造的停止条件:
  • 该光线不和任意表面相交
  • 该光线与一个光源相交且该光源不是一个反射面
  • 该树达到最大允许深度(常用)
光线与对象表面计算求交
  • 光线由初始位置 P 0 P_0 P0和单位向量 u u u描述 P = P 0 + s u P=P_0+su P=P0+su, s s s P 0 P_0 P0到光线与 P P P点的距离
  • 由球面方程 ∣ P − P c ∣ 2 − r 2 = 0 |P-P_c|^2-r^2=0 PPc2r2=0联立可得 s = u ⋅ Δ P ± ( u ⋅ Δ P ) 2 − ∣ Δ P ∣ 2 + r 2 s=u \cdot \Delta P \pm\sqrt{(u \cdot \Delta P)^2-|\Delta P|^2+r^2} s=uΔP±(uΔP)2ΔP2+r2
减少对象求交计算量的方法
  • 包围盒
  • 空间分割法
    • 将整个场景包含在一个立方体中
    • 将立方体逐次分割直至每个子立方体所包含的对象表面或表面数目小于等于一个预定的最大值
    • 跟踪穿过立方体的光线,仅需对包含表面的单元执行求交测试。光线所交的第一个对象表面记为可见面
    • 该过程继续直到找到一个相交的对象表面或光线射出包围场景的立方体

纹理与表面细节

纹理映射

2D映射、3D映射

方法

  • 建立像空间纹理空间映射关系
  • 纹理坐标0到1.0

二维映射

不同的Map Shape产生不同的效果,从纹理表中查找对应的颜色

  • 平面
  • 圆柱体
  • 球体
  • 盒子

三维映射

利用对象每个点 ( x , y , z ) (x,y,z) (x,y,z)直接计算纹理颜色,不使用map shape

噪声

凹凸映射

纹理映射无法模拟粗糙表面物体
使用扰动函数并在光照模型中计算使用扰动法向量

  • P ( u , v ) P(u,v) P(u,v)表示一个参数曲面上的点, N = P u × P v N=P_u \times P_v N=Pu×Pv,其中 P u P_u Pu P v P_v Pv是关于参数 u u u v v v的偏导数
  • 增加一个扰动函数(凹凸函数) b b b,在表面法向量 n = N ∣ N ∣ n=\frac{N}{|N|} n=NN方向上增加凹凸效果: P ′ ( u , v ) = P ( u , v ) + b ( u , v ) n P'(u,v)=P(u,v)+b(u,v)n P(u,v)=P(u,v)+b(u,v)n
  • 表面法向量为 N ′ = P u ′ × P v ′ N'=P'_u \times P'_v N=Pu×Pv
  • P P P关于 u u u的偏导数: P u ′ = ∂ ∂ u ( P + b n ) = P u + b u n + b n u P'_u=\frac{\partial}{\partial u}(P+bn)=P_u+b_un+bn_u Pu=u(P+bn)=Pu+bun+bnu
  • 假定凹凸函数 b b b很小,可以忽略最后一项得到: P u ′ ≈ P u + b u n P'_u \approx P_u + b_un PuPu+bun
  • 同理 P v ′ ≈ P v + b v n P'_v \approx P_v + b_vn PvPv+bvn
  • 扰动的表面法向量为: N ′ = P u × P v + b v ( P u × n ) + b u ( n × P v ) + b u b v ( n × n ) = P u × P v + b v ( P u × n ) + b u ( n × P v ) N'=P_u \times P_v+b_v(P_u \times n)+b_u(n \times P_v)+b_ub_v(n \times n)=P_u \times P_v+b_v(P_u \times n)+b_u(n \times P_v) N=Pu×Pv+bv(Pu×n)+bu(n×Pv)+bubv(n×n)=Pu×Pv+bv(Pu×n)+bu(n×Pv)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 目标检测的定义 目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题。 目标检测任务可分为两个关键的子任务,目标定位和目标分类。首先检测图像中目标的位置(目标定位),然后给出每个目标的具体类别(目标分类)。输出结果是一个边界框(称为Bounding-box,一般形式为(x1,y1,x2,y2),表示框的左上角坐标和右下角坐标),一个置信度分数(Confidence Score),表示边界框中是否包含检测对象的概率和各个类别的概率(首先得到类别概率,经过Softmax可得到类别标签)。 1.1 Two stage方法 目前主流的基于深度学习的目标检测算法主要分为两类:Two stage和One stage。Two stage方法将目标检测过程分为两个阶段。第一个阶段是 Region Proposal 生成阶段,主要用于生成潜在的目标候选框(Bounding-box proposals)。这个阶段通常使用卷积神经网络(CNN)从输入图像中提取特征,然后通过一些技巧(如选择性搜索)来生成候选框。第二个阶段是分类和位置精修阶段,将第一个阶段生成的候选框输入到另一个 CNN 中进行分类,并根据分类结果对候选框的位置进行微调。Two stage 方法的优点是准确度较高,缺点是速度相对较慢。 常见Tow stage目标检测算法有:R-CNN系列、SPPNet等。 1.2 One stage方法 One stage方法直接利用模型提取特征值,并利用这些特征值进行目标的分类和定位,不需要生成Region Proposal。这种方法的优点是速度快,因为省略了Region Proposal生成的过程。One stage方法的缺点是准确度相对较低,因为它没有对潜在的目标进行预先筛选。 常见的One stage目标检测算法有:YOLO系列、SSD系列和RetinaNet等。 2 常见名词解释 2.1 NMS(Non-Maximum Suppression) 目标检测模型一般会给出目标的多个预测边界框,对成百上千的预测边界框都进行调整肯定是不可行的,需要对这些结果先进行一个大体的挑选。NMS称为非极大值抑制,作用是从众多预测边界框中挑选出最具代表性的结果,这样可以加快算法效率,其主要流程如下: 设定一个置信度分数阈值,将置信度分数小于阈值的直接过滤掉 将剩下框的置信度分数从大到小排序,选中值最大的框 遍历其余的框,如果和当前框的重叠面积(IOU)大于设定的阈值(一般为0.7),就将框删除(超过设定阈值,认为两个框的里面的物体属于同一个类别) 从未处理的框中继续选一个置信度分数最大的,重复上述过程,直至所有框处理完毕 2.2 IoU(Intersection over Union) 定义了两个边界框的重叠度,当预测边界框和真实边界框差异很小时,或重叠度很大时,表示模型产生的预测边界框很准确。边界框A、B的IOU计算公式为: 2.3 mAP(mean Average Precision) mAP即均值平均精度,是评估目标检测模型效果的最重要指标,这个值介于0到1之间,且越大越好。mAP是AP(Average Precision)的平均值,那么首先需要了解AP的概念。想要了解AP的概念,还要首先了解目标检测中Precision和Recall的概念。 首先我们设置置信度阈值(Confidence Threshold)和IoU阈值(一般设置为0.5,也会衡量0.75以及0.9的mAP值): 当一个预测边界框被认为是True Positive(TP)时,需要同时满足下面三个条件: Confidence Score > Confidence Threshold 预测类别匹配真实值(Ground truth)的类别 预测边界框的IoU大于设定的IoU阈值 不满足条件2或条件3,则认为是False Positive(FP)。当对应同一个真值有多个预测结果时,只有最高置信度分数的预测结果被认为是True Positive,其余被认为是False Positive。 Precision和Recall的概念如下图所示: Precision表示TP与预测边界框数量的比值 Recall表示TP与真实边界框数量的比值 改变不同的置信度阈值,可以获得多组Precision和Recall,Recall放X轴,Precision放Y轴,可以画出一个Precision-Recall曲线,简称P-R
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值