二维坐标变换、三维坐标变换、综合变换

发布于:2025-05-29 ⋅ 阅读:(33) ⋅ 点赞:(0)

参考笔记: 

详解坐标变换矩阵-CSDN博客

3D点云变换(平移、旋转、缩放)以及python实现_三维点云旋转-CSDN博客

[计算机视觉] 什么是齐次坐标?为什么要引入齐次坐标?-CSDN博客

本文详细讲解了从两种变换方式:"坐标系动,点不动""点动,坐标系不动"2D3D 坐标变换。通过公式推导展示了 旋转变换缩放变换平移变换 的矩阵表示,在三维坐标变换中并用了点云作为案例演示,给出了 python 实现方法

三维坐标变换的前置内容(必看):

三维空间左右手坐标系、分辨方法、左右手法则-CSDN博客文章浏览阅读615次,点赞25次,收藏30次。定义物体在平面上,即二维的位置时,使用表示两个方向的坐标轴,称作笛卡尔坐标或直角坐标而在三维空间中,使用这3个坐标轴。平面上的位置用"纵"、"横"值来表示,而三维空间位置则在"纵"、"横"的基础上又加上"深",因此需要用3个坐标来表示。 https://blog.csdn.net/m0_55908255/article/details/148137523?spm=1011.2415.3001.5331

目录

1.坐标变换的两种方式

2.二维坐标变换

2.1 旋转变换

2.1.1 坐标系动,点不动

2.1.2 点动,坐标系不动

2.1.3 两种旋转变换矩阵比较

2.2 缩放变换

2.2.1 坐标系动,点不动

2.2.2 点动,坐标系不动

2.2.3 两种缩放变换矩阵比较

2.3 平移变换

2.3.1 坐标系动,点不动

2.3.2 点动,坐标系不动

3.三维坐标变换

3.1 旋转变换

3.1.1 坐标系动,点不动

3.1.2 点动,坐标系不动

 3.1.3 点云案例

3.1.4 总结

3.2 缩放变换

3.2.1 坐标系动,点不动

3.2.2 点动,坐标系不动

3.2.3 点云案例

3.2.4 总结

3.3 平移变换

3.3.1 坐标系动,点不动

3.3.2 系动,坐标系不动

3.3.3 点云案例

4.三维坐标综合变换(点动,坐标系不动)

4.1 引入齐次坐标

4.2 引入齐次坐标后的各种变化矩阵汇总

4.2.1 旋转变换矩阵

4.2.2 缩放变换矩阵

4.2.3 平移变换矩阵

4.3 python案例实现综合变换

5.总结


1.坐标变换的两种方式

无论是二维坐标变换还是三维坐标变换,都存在着两种变换方式:

        ① 坐标系动,点不动(被动变换)

        ② 点动,坐标系不动(主动变换)

两种方式分别对应不同的应用场景

2.二维坐标变换

2.1 旋转变换

2.1.1 坐标系动,点不动

如下图所示,在二维平面 \color{red}XOY 上,由绿色坐标系逆时针旋转 θ°蓝色坐标系。可以看到,点 A 是没有移动的,变化的是点 A 分别在前后两个坐标系中的坐标值,即从 \color{green}(x_g,y_g) 变换到了 \color{blue}(x_b,y_b)

如图中黑色虚线的分解方式所示,通过矢量分解(类似于物理中力、速度等矢量的分解),将绿色坐标系中的 \color{green}(x_g,y_g)  分别分解到蓝色坐标系x 轴和 y 轴,可以得到: 

{\color{red}x_b} =\cos\theta * x_g+\sin\theta * y_g \\\\ {\color{red}y_b} =-\sin\theta * x_g+\cos\theta * y_g

看到这个公式可能很多人会懵,而且我看很多博客都没有讲解只是给出公式。这里我用图片解释一下

首先是 \color{red}x_b 的计算公式解释,如下图所示:

然后是 \color{red}y_b 的计算公式解释,如下图所示:

🆗,解释清楚后,我们可以把这两个等式用矩阵来表示,如下图所示:

其中\color{red}R 称为二维情形下的旋转变换矩阵,它表示了 A 点在前后坐标系中的值的映射关系

2.1.2 点动,坐标系不动

如下图所示,在二维平面 \color{red}XOY上,点 \color{blue}A(x_g,y_g) 沿着逆时针旋转 θ° 得到 \color{red}A'(x_b,y_b),可以看到坐标系是没有移动的,变化的是 A 点在该坐标系中的坐标值,即从 \color{blue}(x_g,y_g) 变换到了 \color{red}(x_b,y_b)

可以得到,变换公式如下:

展开可得:

又因为: 

所以: 

其矩阵形式:

其中\color{red}R 称为二维情形下的旋转变换矩阵,它表示了在当前坐标系下\color{blue}A(x_g,y_g)到 \color{red}A'(x_b,y_b) 的旋转变换关系

映射关系


2.1.3 两种旋转变换矩阵比较

我们这里分别看一下 "坐标系动,点不动""点动,坐标系不动" 的旋转变换矩阵,如下所示:

两个矩阵的行列式均为: \color{red}cos^2\theta+sin^2=1 ,因此都为可逆矩阵。而通过线性代数求逆矩阵的知识可得:

即这两种情况下的旋转变换矩阵是互逆的

2.2 缩放变换

2.2.1 坐标系动,点不动

在二维平面 \color{red}XOY 中,设有一点\color{blue}A(x,y),缩放向量为\color{red}\vec{s}\;(s_x,s_y),其中 \color{red}s_x 表示 x 轴长度的缩放因子,\color{red}s_y 表示 y 轴长度的缩放因子,且规定 \color{red}s_x\neq 0,s_y \neq0

可以看到,点 A 是没有移动的,变化的是点 A 分别在前后两个坐标系中的坐标值,即从 \color{blue}(x,y) 缩放变换到了 \color{red}(x',y') 

需要特别注意的是:"坐标系动,点不动" 的情况下,如果 \color{red}x 轴坐标轴的长度扩大 \color{red}s_x 倍,则在新坐标值中点的 \color{red}x 值就要缩小 \color{red}s_x 倍;如果 \color{red}x 轴坐标轴的长度缩小 \color{red}s_x 倍,则在新坐标轴中点的 \color{red}x值就要扩大 \color{red}s_x 倍(大家可以自己好好仔想想是不是这个道理);\color{red}y 轴同理,这里不再赘述

所以变换公式如下:

转换为矩阵表示,如下:

\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} \frac{1}{s_x} & 0\\ 0 & \frac{1}{s_y} \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} ={\color{red}S}\begin{bmatrix} x \\ y \end{bmatrix}\\

其中 \color{red}S 称为二维情形下的缩放变换矩阵,它表示了 A 点在前后坐标系中的值的映射关系

2.2.2 点动,坐标系不动


网站公告

今日签到

点亮在社区的每一天
去签到