2. 向量与线性代数

141 阅读4分钟

大学时学线代痛苦万分,现在我学的津津有味

概念

走样(Aliasing)

在计算机图形学中,走样是指在将连续的现实世界信号(如曲线、边缘或纹理)转换为离散的数字表示(如像素网格)时,由于采样率不足而产生的失真现象。这是一种采样伪影(artifact),常见于渲染图像、视频或3D模型时。

为什么会发生走样?

  • 采样定理(Nyquist-Shannon定理) :如果采样频率低于信号最高频率的两倍,就会丢失高频信息,导致伪影。
  • 常见表现
    • 锯齿状边缘(Jaggies) :直线或曲线在像素网格上显示为阶梯状。
    • 莫尔纹(Moiré patterns) :纹理或图案在缩小或旋转时出现干扰条纹。
    • 时间走样:在动画中,快速移动物体可能出现闪烁或跳跃。
  • 示例:在低分辨率屏幕上绘制一条斜线,由于像素是方形的,无法精确表示斜线,导致边缘看起来粗糙不平滑。

走样会降低图像的真实感和质量,尤其在游戏、电影渲染或医疗成像中很明显。

反走样(Anti-Aliasing)

反走样是一种技术,用于减少或消除走样带来的伪影,通过在采样和渲染过程中引入额外的计算来平滑图像,使其看起来更接近连续信号。

常见反走样方法:

  • 超采样反走样(Supersampling Anti-Aliasing, SSAA) :以高于目标分辨率的倍数渲染图像(如4x或8x),然后下采样到目标分辨率。通过平均多个样本点来平滑边缘。优点:效果最佳;缺点:计算开销大,影响性能。
  • 多采样反走样(Multisample Anti-Aliasing, MSAA) :类似于SSAA,但只对边缘像素进行多采样,内部像素保持单一采样。效率更高,常用于游戏引擎(如Unity或Unreal)。
  • 快速近似反走样(Fast Approximate Anti-Aliasing, FXAA) :后处理技术,在渲染完成后分析图像边缘并模糊锯齿。计算成本低,但效果不如SSAA精确。
  • 时间反走样(Temporal Anti-Aliasing, TAA) :利用前后帧的信息来平滑运动中的走样,常用于实时渲染。
  • 其他变体:如SMAA(Subpixel Morphological Anti-Aliasing)、DLAA(Deep Learning Anti-Aliasing,使用AI模型)等,现代GPU(如NVIDIA的DLSS)结合深度学习进一步优化。

应用场景:

  • 在图形API如OpenGL、DirectX中,反走样是标准功能。
  • 好处:提升视觉质量,提高沉浸感;但需权衡性能,尤其在移动设备或实时应用中。

总之,走样是图形渲染中的常见问题,反走样则是通过各种算法来缓解它,帮助创建更平滑、自然的图像。

问题

1. 向量的转置有什么作用?

  • 确保维度匹配:在矩阵乘法或向量运算中,转置可以调整向量的形状,使操作合法。例如,两个列向量的内积可以通过转置实现:aTb\mathbf{a}^T \mathbf{b},这等价于标量积。
  • 计算矩阵相关操作:如在求解线性方程组、计算协方差矩阵、或进行主成分分析(PCA)时,转置常用于构建矩阵。
  • 表示转置矩阵的属性:对于矩阵,转置用于定义对称矩阵A=AT(\mathbf{A} = \mathbf{A}^T)或正交矩阵QTQ=I(\mathbf{Q}^T \mathbf{Q} = \mathbf{I})向量转置是其基础。
  • 在机器学习和数据处理中:转置有助于数据重塑,例如在 NumPy 或 MATLAB 中处理数组维度。

知识点

点乘在图形学上的应用

  1. 求夹角
  2. 求一个向量在另一个向量上的投影
  3. 判断两个向量距离有多近,cos值为负数还是正数,大小

叉积在图形学上的应用

  1. a x b,叉积为正,a在b的右侧
  2. 判断一个点是否在三角形内侧

行列式的引进

是从解二元一次方程引进的,约定俗成的规矩。

  1. 对于A=(abcd)A = \begin{pmatrix} a & b \\ c & d \end{pmatrix}det(A)=adbcdet⁡(A)=ad−bc
  2. 代数余子式,确定正负号是代数i+j是偶数为正,i+j为奇数为负,余子式是排除i行j列的新的行列式

特殊行列式

  1. 对角行列式的值,det(A)=a11×a22××ann=i=1naiidet(A) = a_{11} \times a_{22} \times \cdots \times a_{nn} = \prod_{i=1}^n a_{ii}

行列式的性质

  1. 转置行列式是按对角线翻转的,不是旋转的A=AT\mathbf{A} = \mathbf{A}^T
  2. 交换两行,符号变负号->行列式有两行完全相同,行列式的值是0
  3. k乘行列式某一行,等于k乘此行列式->某一行所有元素的公因子可以提到行列式符号的外面
  4. 行列式某一行元素加上另一行对应元素的k倍,行列式的值不变
  5. 若行列式某一行的元素是两数之和,则行列式可拆成两个行列式的和