辐射度量学
辐射度量学Whitted-Styled Ray Tracing的缺陷:
Whitted-Styled Ray Tracing主要关注的是折射光线和反射光线,而没有对漫反射的光线进行追踪。
所使用的Blinn-Phong模型是一种简化的模型
因而引入辐射幅度量学来解决此问题。
辐射度量学对光照的一套测量系统和单位,它能够准确的描述光线的物理性质。
1.物理量的定义1.1. 辐射能量(Radiant energy)和辐射通量(Radiant flux)辐射能量:描述在一定时间内,通过某个表面或在空间中传播的电磁辐射的总能量量,以焦耳(J)为单位
辐射通量(Radiant Flux):是指光源辐射出的总功率,是在所有方向上的辐射强度的总和,以瓦特(W)为单位
1.2 辐射强度(Radiant intensity)立体角:
注:整个球的立体角为4\pi
微分立体角d\omega与d\theta和d\phi的关系:
辐射强度(Radiant intensity):光源向特定方向发射的单位立体角内的功率,反映了光源在特定方向上的亮度。
注:辐射强度等于辐射通量除以立体角(各向同性)
...
图形学几何
图形学几何1.几何的分类隐式几何: 无明确表示,如用函数表示曲面,如点(x, y, z) 满足一定函数f(x, y)关系就在一个曲面上。判断点的位置关系很方便,遍历绘制图形比较困难。
显式几何: 有明确表示方法,直接给出,或通过参数映射给出几何信息,比如一般的点云或网格。遍历绘制图形比较方便, 但判断点的位置关系,如内外、是否在表面上比较困难。
注:显式几何的点被直接给出或可通过映射关系得到。
区别:区别隐式曲面与显示曲面的关键就在于是否可以直接表示出所有的点
注:隐式曲面难以采样曲面上的点,但是可以轻易判断点与曲面的关系,对于显式曲面来可以很轻易的采样到所有的点,但是给予你任意一点却很难判断它与曲面的关系。
1.1 隐式几何的例子
代数曲面
Constructive Solid Geometry(CSG):对各种不同的几何做布尔运算,如并,交,差
距离函数:得到几何体的混合效果
水平集:找出函数值为0的地方作为曲线
分型几何:通过迭代、自相似性和尺度不变性来描述复杂的几何形状。
1.2 显式几何的例子
点云:(x,y,z)的列表,用点代替面,可用于表 ...
games作业3
1.透视投影变换投影接口的参数是张角fov,横纵比为aspect时,透视投影的变换矩阵如下:
1234567891011Eigen::Matrix4f get_projection_matrix(float eye_fov, float aspect_ratio, float zNear, float zFar){ Eigen::Matrix4f projection = Eigen::Matrix4f::Identity(); projection(0, 0) = -(1 / (aspect_ratio * tan(eye_fov / 180.0 * MY_PI))); projection(1, 1) = -(1 / (tan(eye_fov / 180.0 * MY_PI))); projection(2, 2) = (zNear + zFar) / (zNear - zFar); projection(2, 3) = (2 * zFar * zNear) / (zNear - zFar); projection(3, 2) = 1 ...
纹理映射
1.纹理映射纹理映射:用于增强渲染的真实感和细节,允许在三维模型表面上贴附二维图像,以模拟材质、颜色、光照等细节。
纹理坐标的伪代码表示:
即通过对每个光栅化的屏幕坐标算出它的纹理坐标(u,v)(利用三角形顶点重心坐标插值),再利用这个u,v坐标去查询texture上的颜色,把这个颜色信息当作漫反射系数Kd。
1.1 纹理过小的问题问题:例如,有一张大小为100x100像素的纹理贴图,然后将这个贴图应用到一个500x500像素的屏幕上,这样多个像素点可能会映射到纹理贴图的相同区域,这使得纹理像素的信息被多个屏幕像素所共享。
如果只是简单地使用最近的纹理坐标点,即离目标点最近的(u, v)坐标,取样不足以准确反映屏幕上多个像素的信息,会导致渲染结果出现严重的走样问题。
解决方法:使用更复杂的纹理过滤技术,如双线性插值,考虑周围像素的颜色信息,从而在渲染过程中更加平滑地处理纹理映射,减少走样的影响。
注:Bicubic:双三次插值是利用三次方程来进行两次插值,但是计算开销过大
1.2 纹理过大的问题现象:
近处出现锯齿,远处出现摩尔纹
原因:根据近大远 ...
games作业框架
1.Triangle类1.1 Triangle.hpp:类的声明定义了一个名为 Triangle 的类
三角形顶点的齐次坐标:(x,y,z,w)
注:w=0时表示该点在无穷远处
ifndef:防止头文件的重复包含,确保在编译时,同一个头文件不会被多次包含,从而避免因重复包含导致的重定义报错。
12345678#ifndef __TEST_H#define __TEST_H"...... #内容......"头文件结尾写上一行:#endif
注:__TEST_H为标识符,通常是大写形式
void setNormals(const std::array& normals):利用normals设置三角形顶点的法向量normal[3]
std::array:标准库中的容器
Vector3f(元素类型)、3(数组大小)
const:保证normals不会被修改,&:传递引用类型,避免对象的拷贝,提高执行效率
1234567891011121314151617181920212223242526272829303132333435363738# ...
局部光照模型及着色方法
1.局部光照模型光线的简单分类:
镜面反射
漫反射
环境光
1.1 泛光模型泛光模型即只考虑环境光,这是最简单的经验模型,只会去考虑环境光的影响,并且不会去精确的描述,而只是用一个简单的式子表示:
注:K_a表示物体表面对环境光的反射率,I_a代表入射环境光的亮度,I_{env}存储结果,即人眼所能看到从物体表面反射的环境光的亮度。
1.2 Lambert漫反射模型
在泛光模型的基础之上增加了漫反射项
每个不同方向反射的光的强度相等
产生漫反射的原因是物体表面的粗糙
漫反射光照强度与光线照射方向和表面法线之间的夹角余弦成正比
注:漫反射与观察方向无关,光线照射方向和表面法线之间的夹角反应了对于光照的接受率
公式表示:
1.3 Blinn-Phong反射模型Blinn-Phong反射模型是Phong光照模型的一种改进,在模拟高光方面表现更为自然。
注:$k_s$为镜面反射系数, I为入射光强, r为光源到入射点距离,指数p加速衰减(用于减小可以看到高光的角度)
注:使用半程向量简化了反射向量与人眼观察夹角的计算(Phong光照模型,即下图中R与v的夹角的 ...
SG-Former
SG-Former论文:《SG-Former: Self-guided Transformer with Evolving Token Reallocation》(ICCV 2023)
1.探究动机ViT使用全局的自注意力机制,但带来了较高的计算成本。
Swin Transformer设计了窗口注意力,而牺牲了建模全局信息的能力。
提出SG-Fomer(Self-guided Transformer):利用显著性图,根据每个区域的显著性来分配token,将更多的token分配给显著性区域以获取细粒度的注意力,而将更少的token分配给次要的区域以换取计算效率和全局的感受野。
注:在显著性区域(狗脸)分配更多的token
2.网络设计
Hybrid-Scale Transformer blocks:提取多尺度的信息并为Self-Guided Transformer Block提供显著性图
把H个注意力头分成h组,在第j组的注意力头有一个尺度因子S_j,即对于K,V的每S_j*S_j个token合并为一个token,把K、V的窗口大小设为M,Q的窗口大小设为S_jM*S_jM(使Q中t ...
Transformation
Transformation1. 2D变换
1.1 缩放(scaling)
1.2 镜像变换
1.3 切变(Shear Matrix)如下图,变换过程中y坐标始终不变
1.4 旋转(Rotate)
1.5 齐次坐标平移:
为了表示平移操作引入了第三维坐标:
注:point+point的结果为两个点的中点
仿射变换的两种形式:
注:齐次坐标变换矩阵中的a,b,c,d与线性变换中的变换矩阵是对应的
1.6 逆变换逆变换:变换矩阵为原变换的逆矩阵
2. 3D变换
2.1 仿射变换
注:该表示方法是先做线性变换,然后再平移
2.2 旋转
在轴上
一般的旋转:可以将任意的旋转分为在三个轴上的旋转,其中在三个轴上的旋转角度称为欧拉角
罗德里格斯公式(Rodrigues’ Rotation Formula):
注:四元数的应用
2.3 视图/相机变换(View / Camera Transformation)相机的参数:初始位置、观看角度(向量)、竖直角度(向量)
标准化:观看位置为原点、观看角度为-Z、向上方向为Y
变换的方法:
由于正向变换比较复杂,考虑 ...
光栅化及深度测试
光栅化光栅化(Rasterization)是图形学中一种常用的渲染技术,用于将三维场景中的图形对象转换为二维像素表示,以便在计算机屏幕上显示,即将图形对象(通常是三角形)映射到屏幕上的像素格子,并确定每个像素的颜色值。
选择三角形作为渲染的基本图元的原因:
因为三角形是最简单的几何形状之一,任意三个点可以确定一个平面上的三角形
任意多边形都可以被分解为若干个三角形,这种分解使得处理复杂的多边形图形变得更加容易。
三角形在仿射变换下保持平面性,对三角形的变换相对简单,而不会引入复杂的扭曲。
1.直线光栅化算法1.1 DDA数值微分算法通过两点确定一条直线的斜率(k),若|k|<=1,选择x方向作为步长(选择变换快的方向),若|k|>1,选择y方向作为步长。
注:在所选的步长方向上,从起始点 (x0, y0) 开始,计算每个下一个点的坐标 (xi, yi)。对于x方向的步长,使用 xi+1 = xi + 1;对于 y 方向的步长,使用 yi+1 = yi + m。(y的结果要四舍五入)
1.2 Bresenham直线绘制算法Bresenham直线绘制算法通过在每个步骤 ...
SPM
SPM论文:《Learning with Explicit Shape Priors for Medical Image Segmentation》(TMI 2023)
探索形状先验(shape priors)对分割性能的影响
基于unet的医学图像分割模型的局限性:cnn的感受野有限,无法利用器官或组织之间的远距离和全局空间关系,无法实现精细的形状表示。(注意力模块扩大模型的感受野,隐式地捕获形状信息)
注:通过设计特定的损失函数,而不是Dice损失或交叉熵损失,将明确的形状先验集成到分割框架中。但这些损失函数是特定于任务的,不能很容易地扩展到不同的数据集
提出了显式形状模型(SPM),以形状先验作为额外的输入来增强模型的形状表示能力。
其中F代表模型的前向传播,S代表构造图像I和标签L之间映射的形状先验。
注意力图:生成的形状先验在推断阶段充当了注意力图,用于定位感兴趣的区域,并抑制背景区域
SPM模块:
SPM模块由the self-update block (SUB)、cross-update block (CUB)
the self-update block (SUB) ...