前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【计算机视觉】二、图像形成:1、向量和矩阵的基本运算:线性变换与齐次坐标

【计算机视觉】二、图像形成:1、向量和矩阵的基本运算:线性变换与齐次坐标

作者头像
Qomolangma
发布2024-07-30 12:43:44
1350
发布2024-07-30 12:43:44
举报
文章被收录于专栏:计算机视觉深度学习

一、向量和矩阵的基本运算

1、简单变换

\boldsymbol{x} =\begin{bmatrix}x\\y\end{bmatrix}
1. 平移变换
\begin{bmatrix}x'\\y'\end{bmatrix} = \begin{bmatrix}x\\y\end{bmatrix} + \begin{bmatrix}a\\b\end{bmatrix}

  将向量

\begin{bmatrix}a\\b\end{bmatrix}

加到

\begin{bmatrix}x\\y\end{bmatrix}

上,得到平移后的新向量

\begin{bmatrix}x'\\y'\end{bmatrix} = \begin{bmatrix}x+a\\y+b\end{bmatrix}

。其中

a

b

分别为x方向和y方向的平移量

2. 缩放变换
\begin{bmatrix}x'\\y'\end{bmatrix} = \begin{bmatrix}s_x & 0\\0 & s_y\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix} = \begin{bmatrix}s_xx\\s_yy\end{bmatrix}

  通过缩放矩阵

\begin{bmatrix}s_x & 0\\0 & s_y\end{bmatrix}

乘以

\begin{bmatrix}x\\y\end{bmatrix}

,可以得到缩放后的向量

\begin{bmatrix}x'\\y'\end{bmatrix} = \begin{bmatrix}s_xx\\s_yy\end{bmatrix}

。其中

s_x

s_y

分别为x方向和y方向的缩放比例

3. 旋转变换
\begin{bmatrix}x'\\y'\end{bmatrix} = \begin{bmatrix}\cos\theta & -\sin\theta\\\sin\theta & \cos\theta\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}

  通过旋转矩阵

\begin{bmatrix}\cos\theta & -\sin\theta\\\sin\theta & \cos\theta\end{bmatrix}

乘以

\begin{bmatrix}x\\y\end{bmatrix}

,可以得到绕原点逆时针旋转

\theta

角度后的向量

\begin{bmatrix}x'\\y'\end{bmatrix}

4. 一般线性变换
\begin{bmatrix}x'\\y'\end{bmatrix} = \begin{bmatrix}a & b\\c & d\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix} = \begin{bmatrix}ax+by\\cx+dy\end{bmatrix}

  通过一个2x2变换矩阵

\begin{bmatrix}a & b\\c & d\end{bmatrix}

乘以

\begin{bmatrix}x\\y\end{bmatrix}

,可以得到一个新的变换后向量

\begin{bmatrix}x'\\y'\end{bmatrix} = \begin{bmatrix}ax+by\\cx+dy\end{bmatrix}

,这个变换矩阵可以表示缩放、旋转、错切等线性变换的组合

2、齐次坐标

0. 齐次坐标表示

  在使用齐次坐标表示时,我们将n维欧几里得空间中的点

(x_1, x_2, \dots, x_n)

表示为

(n+1)

维的齐次坐标形式

(x_1, x_2, \dots, x_n, 1)

,在原始坐标的基础上添加一个1作为最后一个分量。

  • 将2D点用齐次坐标
\begin{bmatrix}x\\y\\1\end{bmatrix}

表示,即在笛卡尔坐标

\begin{bmatrix}x\\y\end{bmatrix}

的基础上添加一个1作为最后一个分量;

  • 将3D点用齐次坐标
\begin{bmatrix}x\\y\\z\\1\end{bmatrix}

表示,即在笛卡尔坐标

\begin{bmatrix}x\\y\\z\end{bmatrix}

的基础上添加一个1作为最后一个分量。

1. 2D点的齐次坐标变换
  • 变换矩阵:
\begin{bmatrix}a & b & c\\d & e & f\\0 & 0 & 1\end{bmatrix}
  • 变换结果
\begin{bmatrix}x'\\y'\\1\end{bmatrix} = \begin{bmatrix}a & b & c\\d & e & f\\0 & 0 & 1\end{bmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix}=\begin{bmatrix}ax+by+c\\dx+ey+f\\1\end{bmatrix}

该变换矩阵包含了三个部分:

  • 平移分量
\begin{bmatrix}c\\f\end{bmatrix}
  • 旋转分量(
\begin{bmatrix}a & b\\d & e\end{bmatrix}

构成的2x2子矩阵)

  • 缩放分量(a, b, d, e的大小)
    • 当这些元素的值大于1时,会放大相应方向的坐标;小于1时,会缩小。
2. 投影空间
(x, y, w)

  引入一个三维投影空间,由

x

y

w

三个坐标构成,用

\begin{bmatrix}x\\y\\w\end{bmatrix}

表示。 其中

w=0

表示无穷远的点,即所有投影线的汇聚点所在位置。

  • 左图展示了透视投影(Perspective projection)的情况,所有投影线从场景中的点汇聚于一个无穷远点,这种投影方式可以提供深度信息和真实的景深感。
    • 透视投影可以提供更真实的视觉效果,表达式为:
\begin{bmatrix}x'\\y'\\w'\end{bmatrix} = \begin{bmatrix}a&b&c\\d&e&f\\g&h&i\end{bmatrix}\begin{bmatrix}x\\y\\w\end{bmatrix}
  • 右图展示了正交投影(Orthographic projection)的情况,投影线都是平行的,没有汇聚点,无法获得真实的景深感,但可以保持投影后物体的形状不变形。
    • 正交投影常用于工程制图等需要保持形状的场合,表达式为:
    \begin{bmatrix}x'\\y'\\w'\end{bmatrix} = \begin{bmatrix}a&b&0\\c&d&0\\0&0&1\end{bmatrix}\begin{bmatrix}x\\y\\w\end{bmatrix}

  这种投影空间和投影变换在计算机图形学中被广泛使用,用于将三维物体投影到二维平面上进行显示。

3. 2D直线的齐次坐标表示
a. 直线的参数方程表示
l = (a, b, c)\\x\cdot l = ax + by + c = 0

其中

(a, b, c)

是直线的系数,任意一点

(x, y)

代入方程,结果为0,则该点位于该直线上。

b. 直线的法向量和原点距离表示
l = (n_x, n_y, d) = (\vec{n}, d) \quad \text{with} \ \|\vec{n}\| = 1

其中

\vec{n} = (n_x, n_y) = (\cos\theta, \sin\theta)

表示直线的法向量,即垂直于直线方向的单位向量,

d

表示直线到原点的有符号距离。

这种表示直观地描述了直线的性质:

\vec{n}

给出了直线的方向

d

给出了直线到原点的距离,取正负号表示直线在原点的两侧

法向量和原点距离表示对于直线的各种几何运算都很有用,例如求直线交点、判断点和直线的位置关系等。通过矩阵变换,可以很自然地对直线进行旋转、平移等操作。

4. 叉积算子
  1. 两条直线的表示: 给定两条直线
\tilde{l}_1

\tilde{l}_2

的齐次坐标表示。

  1. 交点的计算: 两条直线
\tilde{l}_1

\tilde{l}_2

的交点

\tilde{x}

可以通过它们的外积(叉积)求得:

\tilde{x} = \tilde{l}_1 \times \tilde{l}_2

其中,外积的计算方式为:

\tilde{l}_1 = (\tilde{x}_1, \tilde{y}_1, \tilde{a}_1)
\tilde{l}_2 = (\tilde{x}_2, \tilde{y}_2, \tilde{a}_2)
\tilde{x} = \tilde{l}_1 \times \tilde{l}_2 =

这种利用直线的齐次坐标表示求交点的方法,可以自然地推广到三维空间,求两条三维直线或平面的交点。同理,在三维情况下,交点坐标为两个直线或平面的齐次坐标外积。

5. 平行线可以相交
  • 两条直线在非齐次坐标系下的方程组表示:
\begin{cases} Ax + By + C = 0\\ Ax + By + D = 0 \end{cases}
  • 将这两条直线方程转换为齐次坐标表示:
\begin{cases} A \dfrac{x}{w} + B \dfrac{y}{w} + C = 0\\ A \dfrac{x}{w} + B \dfrac{y}{w} + D = 0 \end{cases} \quad\iff\quad \begin{cases} Ax + By + Cw = 0\\ Ax + By + Dw = 0 \end{cases}

在这种表示下,两条直线的齐次坐标分别为

(A, B, C)

(A, B, D)

  • 通过分析可以发现,当
w=0

时,对应的是无穷远点,两条直线在这个点处相交

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、向量和矩阵的基本运算
    • 1、简单变换
      • 1. 平移变换
      • 2. 缩放变换
      • 3. 旋转变换
      • 4. 一般线性变换
    • 2、齐次坐标
      • 0. 齐次坐标表示
      • 1. 2D点的齐次坐标变换
      • 2. 投影空间
      • 3. 2D直线的齐次坐标表示
      • 4. 叉积算子
      • 5. 平行线可以相交
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档