2.2 变换(模型、视图、投影)

三维变换

  • 仿射变换
  • 三维旋转变换
    • 逆时针角度为正
    • 右手系原因,y轴逆时针看去是 zox 平面,所以转角应该是 − α -\alpha α
    • 也可理解为
      • z × x = y   , x × z = − y z \times x = y\ , \quad x \times z = -y z×x=y ,x×z=y
        三维旋转矩阵
  • Rodrigues’ Rotation Formula
    • 给定过原点旋转轴 n, 旋转角 α \alpha α,旋转矩阵如下
    • 非过原点轴,先把轴平移到原点,旋转,再平移回去

RRF旋转矩阵

  • 四元数(略)

观测变换(Viewing transformation)

视图 (View)

  • 什么是视图变换
  • 模型变换与视图变换,两者通常一同处理
    • 改变模型动作,模型变换
    • 改变相机视角,视图变换
    • 拍照,相当于投影变换
  • 为什么要模型 / 视图变换
    • 因为模型有很多顶点
    • 这些顶点坐标是模型空间下的
    • 需要移动到世界坐标
    • 所以要做模型变换

定义相机

  • 位置 / position e ⃗ \quad \vec{e} e
  • 朝向 / gaze direction g ^ \quad \hat{g} g^
  • 向上方向 / Up direction t ^ \quad \hat{t} t^

定义相机

  • 约定俗成的相机
    • 永远放在原点
    • 永远朝向 − Z -Z Z
    • t ^ = Y \hat{t} = Y t^=Y

如何将相机移动到约定俗成位置

  • 相机变换过程
    • 平移到原点
    • 旋转   g ^ = − Z \ \hat{g} = -Z  g^=Z
    • 旋转   t ^ = Y \ \hat{t} = Y  t^=Y
    • 旋转   g × t = X \ g \times t = X  g×t=X
  • 相机变换矩阵推导(旋转矩阵可以逆向思维)
    相机变换矩阵

投影 (Projection)

  • 3D到2D
  • 正交是垂直
  • 透视投影平行线不再平行
    • 近大远小

正交(Orthography) M o \quad M_o Mo

  • 简单的正交投影
    • Z归零
    • 归一化   [ − 1 ,   1 ] \ [-1,\ 1]  [1, 1]
  • 常规的正交投影
    • 立方体中心平移到原点
    • 边长归一化   [ − 1 ,   1 ] \ [-1,\ 1]  [1, 1]
  • 正交变换矩阵如下:
    正交变换矩阵

透视(Perspective) M p \quad M_p Mp

  • 特点
    • 最广泛的投影
    • 近大远小
    • 平行线不再平行
  • 投影方法
    • 从透视变换到正交
    • 正交投影
    • 假设显示屏幕距原点距离为   n \ n  n
  • 透视到投影矩阵推导(根据以下三个点)
    • 通俗的讲,把梯形压缩成长方形
      • 中间点等比例变换
      • 近平面、远平面上的 Z Z Z 坐标不变

压缩图解
( x , y , z , 1 ) → ( x ′ , y ′ , z , 1 ) ( x ′ , y ′ , z ′ , 1 ) → ( x ′ , y ′ , z ′ , 1 ) (x, y, z, 1) \rightarrow (x', y', z, 1) \quad \quad (x', y', z', 1) \rightarrow (x', y', z', 1) (x,y,z,1)(x,y,z,1)(x,y,z,1)(x,y,z,1)

  • 透视变换矩阵如下
    M p = M o ⋅ ( n 0 0 0 0 n 0 0 0 0 n + z − n z 0 0 1 0 ) M_p = M_o \cdot \left( \begin{matrix} n & 0 & 0 & 0 \\ 0 & n & 0 & 0 \\ 0 & 0 & n+z & -nz \\ 0 & 0 & 1 & 0 \end{matrix} \right) Mp=Mon0000n0000n+z100nz0

透视变换,中间平面的 z z z 坐标如何变化?

<think>我们正在讨论仿射模型。根据用户提供的引用内容,仿射模型在多个领域都有应用:运动恢复结构(引用[1])、机器学习中的线性模型(引用[2])、视频编码中的运动补偿(引用[3])、计算机图形学中的变换(引用[4])以及远心镜头的标定(引用[5])。用户的问题直接是“我想了解仿射模型的相关信息”,因此我们需要给出一个全面的介绍。 由于引用内容分散在不同领域,我们需要整合这些信息,同时补充必要的背景知识。仿射模型的核心是仿射变换,它是一种保持线性性质和平行关系的几何变换。 根据引用[4],仿射变换在三维空间中是通过齐次坐标表示的,包括线性变换(缩放、旋转等)和平移变换。具体形式为: $$ \begin{bmatrix} x' \\ y' \\ z' \\ 1 \end{bmatrix} = \begin{bmatrix} a_{11} & a_{12} & a_{13} & t_x \\ a_{21} & a_{22} & a_{23} & t_y \\ a_{31} & a_{32} & a_{33} & t_z \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} $$ 其中,左上角的3x3矩阵是线性变换部分,最后一列的前三个元素是平移分量。 在机器学习中(引用[2]),仿射函数通常指线性函数加上一个偏置项,即 $y = \mathbf{w}^T\mathbf{x} + b$。引用[2]提到,虽然严格来说这是仿射函数,但通常被称为线性模型。 在视频编码(引用[3])中,仿射运动补偿用于处理复杂的运动(如旋转、缩放),而不仅仅是平移。它通过多个运动矢量来描述一个块的运动,比传统的平移模型更精确。 在计算机视觉中的运动恢复结构(引用[1])中,仿射模型用于从运动恢复场景的三维结构,分为仿射形状恢复和欧几里得结构恢复两个步骤。 在远心镜头标定(引用[5])中,仿射模型被用于简化标定过程,因为远心镜头具有特殊的成像性质(无透视畸变),可以用仿射变换来近似。 因此,我们的回答应该涵盖: 1. 仿射变换的数学定义(几何角度)。 2. 在机器学习中的线性模型(仿射函数)。 3. 在视频编码中的应用(仿射运动补偿)。 4. 在运动恢复结构中的应用。 5. 在远心镜头标定中的应用。 我们将按照以下结构组织回答: 一、仿射模型的基本概念 1.1 几何定义(仿射变换) 1.2 数学表达式(齐次坐标) 二、不同领域的仿射模型应用 2.1 计算机图形学与视觉(引用[4]和引用[1]) 2.2 机器学习(引用[2]) 2.3 视频编码(引用[3]) 2.4 远心镜头标定(引用[5]) 三、仿射模型的特点总结 最后,生成相关问题。 注意:引用标识要自然添加在相关内容的末尾。 </think>### 仿射模型全面解析 仿射模型计算机视觉、图形学和机器学习中的重要数学工具,本质是**线性变换与平移变换的组合**,保持几何体的平行性和比例关系。其核心表达式为: $$ \mathbf{y} = A\mathbf{x} + \mathbf{b} $$ 其中 $A$ 是线性变换矩阵,$\mathbf{b}$ 是平移向量。 #### 一、核心数学原理 1. **仿射变换定义** 在 $n$ 维空间中,变换满足: $$ T(\mathbf{u}) = M\mathbf{u} + \mathbf{c} $$ 其中 $M$ 是可逆矩阵(线性变换),$\mathbf{c}$ 是平移向量。该变换保持: - 平行直线仍平行 - 直线中点仍为中点 - 固定比例(如线段三等分点变换后仍为三等分点) 2. **齐次坐标表示**(引用[4][^4]) 为统一表示变换,引入齐次坐标: $$ \begin{bmatrix} \mathbf{y} \\ 1 \end{bmatrix} = \begin{bmatrix} M & \mathbf{c} \\ \mathbf{0}^T & 1 \end{bmatrix} \begin{bmatrix} \mathbf{x} \\ 1 \end{bmatrix} $$ 典型三维变换矩阵形式: $$ \begin{bmatrix} a_{11} & a_{12} & a_{13} & t_x \\ a_{21} & a_{22} & a_{23} & t_y \\ a_{31} & a_{32} & a_{33} & t_z \\ 0 & 0 & 0 & 1 \end{bmatrix} $$ #### 二、关键应用领域 1. **计算机视觉 - 运动恢复结构**(引用[1][^1]) - **步骤1**:通过多视图建立场景三维仿射形状 - **步骤2**:结合相机参数约束恢复欧几里得结构 - 优势:降低计算复杂度,适用于弱透视投影 2. **视频编码 - 运动补偿**(引用[3][^3]) 用于处理复杂运动(缩放/旋转): - 通过贝叶斯决策选择仿射模式:$ p(S_{\text{par}}) $ 表示父块最优模式概率 - 当 $ p(U_{\text{cme}}) $(单向预测概率)高时,优先选用平移模型而非仿射 3. **远心镜头标定**(引用[5][^5]) 建立世界坐标 $(X_W, Y_W, Z_W)$ 到像素坐标 $(u,v)$ 的映射: $$ \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = K \cdot \begin{bmatrix} R & \mathbf{t} \\ \mathbf{0}^T & 1 \end{bmatrix} \begin{bmatrix} X_W \\ Y_W \\ Z_W \\ 1 \end{bmatrix} $$ 其中 $K$ 为内参矩阵,$R,\mathbf{t}$ 为旋转平移矩阵 4. **机器学习 - 线性模型基础**(引用[2][^2]) 仿射函数作为线性回归核心: $$ f(\mathbf{x}) = \mathbf{w}^T\mathbf{x} + b $$ 当 $b=0$ 时为线性函数,实际应用中统称“线性模型” #### 三、仿射模型特性 | **特性** | **说明** | **应用影响** | |----------------|---------------------------------------|----------------------------------| | 平行保持性 | 平行线变换后仍平行 | 三维重建中保持结构稳定性 | | 非保距性 | 距离和角度可能改变 | 需额外校准恢复欧几里得空间 | | 可逆性 | 变换矩阵可逆时存在逆变换 | 视频追踪中的运动补偿与反补偿 | | 参数化简单 | 仅需 $n^2 + n$ 个参数($n$ 维空间) | 实时图形渲染的高效性 | #### 四、典型实现示例(Python) ```python import cv2 import numpy as np # 定义仿射变换矩阵(旋转30度 + 平移[50,20]) theta = np.radians(30) M = np.float32([[np.cos(theta), -np.sin(theta), 50], [np.sin(theta), np.cos(theta), 20]]) # 应用至图像 img = cv2.imread('input.jpg') rows, cols = img.shape[:2] dst = cv2.warpAffine(img, M, (cols, rows)) cv2.imshow('Affine Transform', dst) cv2.waitKey(0) ``` #### 五、与其他模型的对比 | **模型类型** | **保持特性** | **适用场景** | |----------------|----------------------------|----------------------------------| | 仿射模型 | 平行性、比例关系 | 远心镜头标定、运动恢复结构 | | 欧几里得模型 | 距离、角度、形状 | 高精度三维重建 | | 投影模型 | 直线仍为直线(不保平行) | 普通相机成像 |
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值