CloudCompare——点云变换【2025最新版】

本文由CSDN点云侠原创,首发于:2021年9月4日。博客长期更新,本文最新更新时间为:2025年6月28日。

一、齐次变换

1.算法原理

见:相关链接

2.软件实现

在这里插入图片描述
在这里插入图片描述

  • Apply inverse transformation:使用逆变换

可通过输入4X4变换矩阵实现齐次欧式变换和仿射变换。

3.结果展示

在这里插入图片描述

二、轴角变换

1.算法原理

   轴角表示法使用旋转轴 u = ( u x , u y , u z ) \mathbf{u} = (u_x, u_y, u_z) u=(ux,uy,uz)(单位向量)和旋转角 θ \theta θ 描述旋转。将其转换为欧拉角(以Z-Y-X顺序为例)需要两个关键步骤:

  1. 轴角→旋转矩阵(Rodrigues公式)
    R = I + sin ⁡ θ ⋅ [ u ] × + ( 1 − cos ⁡ θ ) ⋅ [ u ] × 2 R = \mathbf{I} + \sin\theta \cdot [\mathbf{u}]_\times + (1 - \cos\theta) \cdot [\mathbf{u}]_\times^2 R=I+sinθ[u]×+(1cosθ)[u]×2
    其中 [ u ] × [\mathbf{u}]_\times [u]× 是旋转轴的反对称矩阵:
    [ u ] × = [ 0 − u z u y u z 0 − u x − u y u x 0 ] [\mathbf{u}]_\times = \begin{bmatrix} 0 & -u_z & u_y \\ u_z & 0 & -u_x \\ -u_y & u_x & 0 \end{bmatrix} [u]×= 0uzuyuz0uxuyux0

  2. 旋转矩阵→欧拉角(Z-Y-X顺序)
    旋转矩阵元素与欧拉角 ( α , β , γ ) (\alpha, \beta, \gamma) (α,β,γ) 的关系:
    R = [ cos ⁡ β cos ⁡ γ sin ⁡ α sin ⁡ β cos ⁡ γ − cos ⁡ α sin ⁡ γ cos ⁡ α sin ⁡ β cos ⁡ γ + sin ⁡ α sin ⁡ γ cos ⁡ β sin ⁡ γ sin ⁡ α sin ⁡ β sin ⁡ γ + cos ⁡ α cos ⁡ γ cos ⁡ α sin ⁡ β sin ⁡ γ − sin ⁡ α cos ⁡ γ − sin ⁡ β sin ⁡ α cos ⁡ β cos ⁡ α cos ⁡ β ] R = \begin{bmatrix} \cos\beta\cos\gamma & \sin\alpha\sin\beta\cos\gamma - \cos\alpha\sin\gamma & \cos\alpha\sin\beta\cos\gamma + \sin\alpha\sin\gamma \\ \cos\beta\sin\gamma & \sin\alpha\sin\beta\sin\gamma + \cos\alpha\cos\gamma & \cos\alpha\sin\beta\sin\gamma - \sin\alpha\cos\gamma \\ -\sin\beta & \sin\alpha\cos\beta & \cos\alpha\cos\beta \end{bmatrix} R= cosβcosγcosβsinγsinβsinαsinβcosγcosαsinγsinαsinβsinγ+cosαcosγsinαcosβcosαsinβcosγ+sinαsinγcosαsinβsinγsinαcosγcosαcosβ
    求解欧拉角:
    { β = arcsin ⁡ ( − R 20 ) α = arctan ⁡ 2 ( R 21 / cos ⁡ β , R 22 / cos ⁡ β ) γ = arctan ⁡ 2 ( R 10 / cos ⁡ β , R 00 / cos ⁡ β ) \begin{cases} \beta = \arcsin(-R_{20}) \\ \alpha = \arctan2(R_{21}/\cos\beta, R_{22}/\cos\beta) \\ \gamma = \arctan2(R_{10}/\cos\beta, R_{00}/\cos\beta) \end{cases} β=arcsin(R20)α=arctan2(R21/cosβ,R22/cosβ)γ=arctan2(R10/cosβ,R00/cosβ)

特殊情况处理

  • 万向节死锁:当 β = ± π / 2 \beta = \pm \pi/2 β=±π/2 时, cos ⁡ β = 0 \cos\beta = 0 cosβ=0,需特殊处理:
    { γ = 0 α = arctan ⁡ 2 ( − R 02 , R 11 ) \begin{cases} \gamma = 0 \\ \alpha = \arctan2(-R_{02}, R_{11}) \end{cases} {γ=0α=arctan2(R02,R11)
  • 数值稳定性:当 ∣ cos ⁡ β ∣ < ϵ |\cos\beta| < \epsilon cosβ<ϵ 时启用死锁处理

2.软件实现

在这里插入图片描述

  • Rotation axis:旋转轴
  • Rotation angle:旋转角度,(角度制)
  • Translation:平移量

3.结果展示

在这里插入图片描述

可以看出,默认情况下是按照逆时针旋转的。

三、欧拉变换

1.算法原理

1.1 空间平移变换
  假设空间中点 P P P的初始坐标为 ( x , y , z ) (x,y,z) (x,y,z),经过平移后的位置坐标为 ( x ′ , y ′ , z ′ ) (x',y',z') (x,y,z) ( t x , t y , t z ) (t_x,t_y,t_z) (tx,ty,tz)
是点 P P P在空间的平移向量,则有
在这里插入图片描述
在这里插入图片描述

点的平移变换

1.2 空间旋转变换

  空间旋转变换要按照不同旋转轴线分情况处理,我们以右手坐标系为准,且以正对坐标轴的正方向来看,记逆时针转动时旋转角为正、顺时针转动时为负。下图分别展示了坐标系绕各轴旋转的示意图。

在这里插入图片描述

旋转变换示意图

  以图(a)为例,坐标系绕 Z Z Z 轴旋转 γ γ γ 得到新的坐标系 O X ′ Y ′ Z ′ OX'Y'Z' OXYZ ,点 p p p 在初始和转换后的坐标系下的位置分别为 ( x , y , z ) (x,y,z) (x,y,z) ( x ′ , y ′ , z ′ ) (x',y',z') (x,y,z)。则有
在这里插入图片描述
在这里插入图片描述

2.软件实现

在这里插入图片描述

  • Euler angles:欧拉角
  • Translation:平移量

3.结果展示

在这里插入图片描述

四、缩放

1.算法原理

在这里插入图片描述

2.软件实现

在这里插入图片描述
在这里插入图片描述

  • Scale:缩放量以及绕哪个轴缩放。
  • Sample scale for all dimensions:是否在每个方向上使用统一的缩放系数。
    在这里插入图片描述

五、相互转换

可以实现齐次变换、欧拉变换、轴角变换之间的相互转换。比如,绕Z轴逆时针旋转90°
在这里插入图片描述
直接就在Matrix 4X4中生成用变换矩阵表示绕Z轴旋转90°的形式。
在这里插入图片描述

六、相关链接

[1] PCL 点云变换
[2] PCL 欧式变换,实现点云坐标变换
[3] PCL 仿射变换,实现点云平移旋转
[4] Eigen(几何模块)——常用相互转换
[5] Open3D 点云变换
[6] Open3D 四元数、欧拉角、旋转向量转旋转矩阵
[7] python 欧拉角、四元数、旋转矩阵的相互转换

评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点云侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值