【slam学习】1、像素坐标系、归一化坐标系、相机坐标系、世界坐标系、各类变换含义

目录

第一部分

1. 世界坐标系 (World Coordinates)

2. 相机坐标系 (Camera Coordinates)

3. 归一化坐标系 (Normalized Image Coordinates)

4. 像素坐标系 (Image Coordinates)

第二部分 

1.等距变换的定义

刚体变换(Rigid Transformation):

反射变换(Reflection):

2. 仿射变换(Affine Transformation)

定义

性质

应用

3. 相似变换(Similarity Transformation)

定义

性质

应用

4. 射影变换(Projective Transformation)

定义

性质

应用


1. 世界坐标系 (World Coordinates)

  • 定义:世界坐标系是一个全局的三维坐标系,用来描述物体在真实世界中的位置。
  • 表示:通常用 (X_w, Y_w, Z_w) 表示。

2. 相机坐标系 (Camera Coordinates)

  • 定义:相机坐标系是以相机为中心的三维坐标系,描述了物体相对于相机的位置。
  • 表示:通常用 (X_c, Y_c, Z_c) 表示。
  • 转换:从世界坐标系到相机坐标系的转换通常通过相机的外参矩阵(旋转矩阵 R 和平移向量 t)完成。
  • 用途:用于描述物体在现实世界中的绝对位置,不受任何特定设备或传感器的影响。
  • 世界坐标转化为相机坐标代码
    Vector3d Camera::world2camera ( const Vector3d& p_w, const SE3& T_c_w )
    {
        return T_c_w*p_w;
    }
    
  • 相机坐标转化为世界坐标代码

    Vector3d Camera::camera2world ( const Vector3d& p_c, const SE3& T_c_w )
    {
        return T_c_w.inverse() *p_c;
    }
    

3. 归一化坐标系 (Normalized Image Coordinates)

  • 定义:归一化坐标系是相机坐标系下的一个特殊形式,去除了深度信息,但保留了方向信息。
  • 表示:通常用 (x_n, y_n) 表示。
  • 转换:从相机坐标系到归一化坐标系的转换通过除以深度值 Z_c 完成。

         相机坐标系到归一化坐标系代码

cv::Point2d cameraToNormalized(const cv::Point3d &p_c) {
    // 计算归一化坐标系下的点
    double x_n = p_c.x / p_c.z;
    double y_n = p_c.y / p_c.z;

    return cv::Point2d(x_n, y_n);
}

          归一化坐标到相机坐标代码

cv::Point3d normalizedToCamera(const cv::Point2d &p_n, double depth) {
    // 计算相机坐标系下的点
    double X_c = p_n.x * depth;
    double Y_c = p_n.y * depth;
    double Z_c = depth;

    return cv::Point3d(X_c, Y_c, Z_c);
}

4. 像素坐标系 (Image Coordinates)

  • 定义:像素坐标系是在图像平面上的二维坐标系,描述了像素的位置。
  • 表示:通常用 (u, v) 表示。
  • 转换:从归一化坐标系到像素坐标系的转换通过相机的内参矩阵 K 完成

        

 其中,内参矩阵 K 通常形式如下:

  • fx​ 和 fy是焦距参数。
  • cx和 cy 是主点坐标。
  • 1.等距变换的定义

    等距变换是一种将一个几何对象映射到另一个几何对象的变换,使得任意两点之间的距离在变换前后保持不变。等距变换可以分为两类:

  • 刚体变换(Rigid Transformation)
    • 刚体变换包括旋转和平移。
    • 旋转矩阵 RR 是一个正交矩阵,满足 RTR=IRTR=I 且 det⁡(R)=1det(R)=1。
    • 平移向量 tt 是一个三维向量。
    • 刚体变换可以用一个 4x4 的齐次变换矩阵表示:

    • 对于一个点 PP,变换后的点 P′P′ 为:

  • 反射变换(Reflection)
    • 反射变换是一种特殊的等距变换,它通过一个平面(二维中是一条直线)进行镜像反射。
    • 反射变换可以表示为一个矩阵,例如在二维中通过 x 轴反射的变换矩阵为:

2. 仿射变换(Affine Transformation)

定义

仿射变换是一种线性变换加上一个平移。它可以表示为一个 4x4 的齐次变换矩阵:

其中:

  • AA 是一个 3x3 的矩阵,表示线性变换部分。
  • tt 是一个 3x1 的平移向量。
性质
  • 保持直线:仿射变换将直线映射为直线。
  • 保持共线性:仿射变换保持点的共线性。
  • 保持平行性:仿射变换保持平行线的平行性。
  • 不保持长度和角度:仿射变换一般不保持长度和角度。
应用
  • 图像处理:仿射变换常用于图像的旋转、缩放和平移。
  • 计算机图形学:用于物体的变形和动画。
  • 机器学习:用于数据的预处理和特征变换。

3. 相似变换(Similarity Transformation)

定义

相似变换是一种特殊的仿射变换,它包括旋转、平移和均匀缩放。它可以表示为:

其中:

  • ss 是一个标量,表示均匀缩放因子。
  • RR 是一个 3x3 的旋转矩阵。
  • tt 是一个 3x1 的平移向量。
性质
  • 保持直线:相似变换将直线映射为直线。
  • 保持共线性:相似变换保持点的共线性。
  • 保持平行性:相似变换保持平行线的平行性。
  • 保持角度:相似变换保持角度不变。
  • 保持形状的比例关系:相似变换保持形状的比例关系。
应用
  • 图像配准:用于图像的对齐和匹配。
  • 三维重建:用于保持几何形状的相似性。
  • 计算机视觉:用于目标检测和识别。

4. 射影变换(Projective Transformation)

定义

射影变换是一种更一般的变换,它可以处理透视效果。射影变换可以表示为一个 4x4 的非奇异矩阵:

或者在二维情况下,可以表示为一个 3x3 的矩阵:

性质
  • 保持共线性:射影变换保持点的共线性。
  • 保持共面性:射影变换保持点的共面性。
  • 不保持平行性:射影变换不保持平行线的平行性。
  • 不保持角度和长度:射影变换不保持角度和长度。
应用
  • 图像校正:用于校正图像中的透视畸变。
  • 三维重建:用于从多视图图像中重建三维模型。
  • 计算机视觉:用于处理相机的投影模型和多视图几何。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值