首页
/ NotACracker/COTR项目中的3D坐标系系统详解

NotACracker/COTR项目中的3D坐标系系统详解

2025-07-04 09:38:14作者:鲍丁臣Ursa

引言

在3D计算机视觉领域,坐标系系统的理解和统一是进行有效数据处理和模型训练的基础。NotACracker/COTR项目作为一个先进的3D视觉处理框架,采用了精心设计的坐标系系统来处理各种3D数据。本文将全面解析项目中使用的三种主要坐标系系统,帮助开发者更好地理解和使用该框架。

三种核心坐标系系统

1. 相机坐标系

相机坐标系是最常见的3D表示方式之一,广泛应用于基于视觉的3D感知任务中。

特征描述:

  • y轴正方向指向地面(垂直向下)
  • x轴正方向指向右侧(水平向右)
  • z轴正方向指向前方(垂直于成像平面)
              上  z 前
              |    ^
              |   /
              |  /
              | /
              |/
  左   ------ 0 ------> x 右
              |
              |
              |
              |
              v
            y 下

应用场景: 主要用于处理来自单目/双目相机、RGB-D相机等视觉传感器的数据。

2. 激光雷达坐标系

激光雷达坐标系是自动驾驶和机器人领域中常用的坐标系系统。

特征描述:

  • z轴负方向指向地面
  • x轴正方向指向前方
  • y轴正方向指向左侧
                z 上   x 前
                 ^    ^
                 |   /
                 |  /
                 | /
                 |/
  y 左   <------ 0 ------ 右

应用场景: 主要处理来自激光雷达(LiDAR)的点云数据,适用于自动驾驶环境感知等任务。

3. 深度坐标系

深度坐标系是专为深度学习和3D目标检测优化的坐标系系统。

特征描述:

  • z轴负方向指向地面
  • x轴正方向指向右侧
  • y轴正方向指向前方
             z 上   y 前
              ^    ^
              |   /
              |  /
              | /
              |/
  左   ------ 0 ------> x 右

应用场景: 适用于VoteNet、H3DNet等先进3D目标检测模型,特别优化了深度学习任务中的计算效率。

转向角(Yaw)的统一定义

在NotACracker/COTR项目中,转向角的定义遵循严格的数学规范:

  1. 右手坐标系原则:所有坐标系均为右手坐标系
  2. 角度增加方向:从重力轴负方向看,转向角沿逆时针方向增加
  3. 参考方向:x轴正方向始终作为0度参考方向
                     z 上  y 前 (yaw=0.5*pi)
                      ^    ^
                      |   /
                      |  /
                      | /
                      |/
左 (yaw=pi)    ------ 0 ------> x 右 (yaw=0)

实际应用示例: 当检测一辆汽车时,转向角表示车头方向与x轴正方向的夹角。0度表示车头朝右,90度表示车头朝前。

3D边界框的尺寸定义

边界框的尺寸解释与转向角密切相关:

  1. dx:始终与框的主方向平行(转向角为0时与x轴平行)
  2. dy:垂直于主方向的水平尺寸
  3. dz:垂直尺寸(高度)

图示说明:

当yaw=0.5π时:

y 前
  ^      框的方向 (yaw=0.5*pi)
 /|\        ^
  |        /|\
  |     ____|____
  |    |    |    |
  |    |    |    | dx
__|____|____|____|______\ x 右
  |    |    |    |      /
  |    |    |    |
  |    |____|____|
  |         dy

当yaw=0时:

y 前
  ^     _________
 /|\   |    |    |
  |    |    |    |
  |    |    |    | dy
  |    |____|____|____\  框的方向 (yaw=0)
  |    |    |    |    /
__|____|____|____|_________\ x 右
  |    |    |    |         /
  |    |____|____|
  |         dx
  |

与主流数据集的坐标系关系

KITTI数据集

原始标注使用相机坐标系,但在NotACracker/COTR中处理LiDAR数据时会转换为激光雷达坐标系。关键调整包括:

  1. 转向角定义从左手系改为右手系
  2. 框尺寸从(w,l,h)变为(l,w,h)以保持一致性

NuScenes数据集

使用独特的Box类表示,其尺寸顺序为(dy,dx,dz)或(w,l,h),与项目标准相反。需要进行转换才能与NotACracker/COTR的坐标系兼容。

ScanNet和SUN RGB-D

这些室内场景数据集使用深度坐标系:

  1. ScanNet的标注为轴对齐,转向角始终为0
  2. SUN RGB-D需要从原始标注转换为深度坐标系

坐标系转换实践

相机与激光雷达坐标系转换

转换关系如下:

  1. 点坐标转换:

    • xₗ = z_c
    • yₗ = -x_c
    • zₗ = -y_c
  2. 框尺寸转换:

    • dxₗ = dx_c
    • dyₗ = dz_c
    • dzₗ = dy_c
  3. 转向角转换:

    • rₗ = -π/2 - r_c

鸟瞰图生成

在相机坐标系下,3D框(x,y,z,dx,dy,dz,r)的鸟瞰图表示为(x,z,dx,dz,-r)。转向角取反是因为相机坐标系的重力轴指向地面。

常见问题解答

Q1:不同坐标系间的算子是否通用?

不完全通用。例如RoI-Aware Pooling算子仅适用于深度和激光雷达坐标系,而KITTI评估函数专为相机坐标系设计。

Q2:转向角相位差如何影响评估?

  • 2π相位差:不影响IoU和角度评估
  • π相位差:不影响IoU,但会导致方向相反(对某些类别无影响)

Q3:三个轴是否严格指向特定方向?

不一定。实际应用中可能需要进行校准矩阵转换,如KITTI数据集中的情况。

总结

NotACracker/COTR项目通过精心设计的三种坐标系系统,为各种3D视觉任务提供了统一的数据表示和处理框架。理解这些坐标系的定义、转换关系和使用场景,对于有效利用该框架进行3D目标检测、点云处理等任务至关重要。开发者应根据具体任务需求选择合适的坐标系,并注意不同数据集可能需要的转换操作。

登录后查看全文
热门项目推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
179
263
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
869
514
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
130
183
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
328
377
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
333
1.09 K
harmony-utilsharmony-utils
harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于助力开发者迅速构建鸿蒙应用。其封装的工具涵盖了APP、设备、屏幕、授权、通知、线程间通信、弹框、吐司、生物认证、用户首选项、拍照、相册、扫码、文件、日志,异常捕获、字符、字符串、数字、集合、日期、随机、base64、加密、解密、JSON等一系列的功能和操作,能够满足各种不同的开发需求。
ArkTS
28
0
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.08 K
0
kernelkernel
deepin linux kernel
C
22
5
WxJavaWxJava
微信开发 Java SDK,支持微信支付、开放平台、公众号、视频号、企业微信、小程序等的后端开发,记得关注公众号及时接受版本更新信息,以及加入微信群进行深入讨论
Java
829
22
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
601
58