从像素到世界:自动驾驶视觉感知的坐标变换体系

接着上一篇 如何让自动驾驶汽车“看清”世界?坐标映射与数据融合详解的概述,这一篇详细讲解自动驾驶多目视觉系统设计原理,并给出应用示例。

摘要

在自动驾驶系统中,准确的环境感知是实现路径规划与决策控制的基础。本文系统性地解析图像坐标系、像素坐标系、相机坐标系与世界坐标系的映射关系,深入推导双目相机的视差-深度计算模型,并给出完整的Python代码实现。通过融合理论推导与工程实践,揭示自动驾驶汽车如何通过视觉感知"看清"三维世界。

关键词:自动驾驶、坐标系转换、双目视觉、三维重建、立体匹配


一、自动驾驶中的核心坐标系系统

1.1 五层坐标系定义

  1. 世界坐标系(World Coordinate)
    描述物体在真实三维空间中的绝对位置 ( X w , Y w , Z w ) (X_w, Y_w, Z_w) (Xw,Yw,Zw),是自动驾驶系统的全局参考系。

  2. 相机坐标系(Camera Coordinate)
    以相机光心为原点, Z c Z_c Zc 轴指向成像方向的右手系 ( X c , Y c , Z c ) (X_c, Y_c, Z_c) (Xc,Yc,Zc),表征物体相对于相机的空间位置。

  3. 图像坐标系(Image Coordinate)
    成像平面上的连续物理坐标 ( x , y ) (x, y) (x,y),原点位于光轴与成像平面交点,单位为毫米。

  4. 像素坐标系(Pixel Coordinate)
    图像离散化后的像素位置 ( u , v ) (u, v) (u,v),原点位于图像左上角,单位为像素。

  5. 车辆坐标系(Vehicle Coordinate)
    是自动驾驶系统中一个至关重要的参考系,为车辆自身以及周围物体的位置和运动状态提供了一个统一的描述框架。车辆坐标系通常被定义为一个右手坐标系,其原点位于车辆的某个特定点,如车辆的中心点或某个传感器的位置。具体的定义如下:

    • X轴:通常指向车辆的前进方向,即车辆的长度方向。在大多数情况下,X轴的正方向是从车辆的后部指向车辆的前部。
    • Y轴:通常指向车辆的左侧,即车辆的宽度方向。Y轴的正方向是从车辆的右侧指向车辆的左侧。
    • Z轴:垂直于车辆的平面,即车辆的高度方向。Z轴的正方向通常是指向天空的方向,即车辆的上方。

车辆坐标系作为车身本体坐标系,其与世界坐标系的动态转换通过组合导航系统(GNSS+IMU)实现,转换精度直接影响传感器融合效果。

坐标系类型原点定义坐标轴方向物理意义
世界坐标系预设大地基准点X-东向,Y-北向,Z-垂直全局定位与地图融合基础
相机坐标系相机光学中心Z-光轴方向,X/Y-成像平面物体相对相机的空间关系
图像坐标系光轴与成像平面交点x-水平方向,y-垂直方向连续物理成像位置
像素坐标系图像左上角u-列方向,v-行方向数字图像离散采样位置
车辆坐标系车辆质心或后轴中心X-前进方向,Y-左侧,Z-垂直向上多传感器数据统一基准

1.2 坐标系转换的意义

通过多坐标系映射,可将二维图像像素还原为三维世界坐标,建立环境物体的空间拓扑关系。这是实现障碍物测距、车道线定位等功能的数学基础。以车道线检测为例,首先在像素坐标系定位车道特征点,经逆透视变换得到车辆坐标系下的局部坐标,最终通过坐标转换矩阵映射到全局地图坐标系。

1.3 动态转换实践

车辆坐标系作为动态中介坐标系,其转换关系可表示为:
[ X v Y v Z v 1 ] = [ cos ⁡ θ − sin ⁡ θ 0 Δ x sin ⁡ θ cos ⁡ θ 0 Δ y 0 0 1 Δ z 0 0 0 1 ] ⏟ T w 2 v ⋅ [ X w Y w Z w 1 ] \begin{bmatrix} X_v \\ Y_v \\ Z_v \\ 1 \end{bmatrix} = \underbrace{ \begin{bmatrix} \cos\theta & -\sin\theta & 0 & \Delta x \\ \sin\theta & \cos\theta & 0 & \Delta y \\ 0 & 0 & 1 & \Delta z \\ 0 & 0 & 0 & 1 \end{bmatrix} }_{T_{w2v}} \cdot \begin{bmatrix} X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} XvYvZv1 =Tw2v cosθsinθ00sinθcosθ000010ΔxΔyΔ

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/74337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

附录B ISO15118-20测试命令

本章节给出ISO15118-20协议集的V2G命令,包含json、xml,并且根据exiCodec.jar编码得到exi内容, 读者可以参考使用,测试编解码库是否能正确编解码。 B.1 supportedAppProtocolReq json: {"supportedAppProtocolReq": {…

VLAN章节学习

为什么会有vlan这个技术? 1.通过划分广播域来降低广播风暴导致的设备性能下降; 2.提高网络管理的灵活性和通过隔离网络带来的安全性; 3.在成本不变的情况下增加更多的功能性; VLAN又称虚拟局域网(再此扩展&#xf…

FPGA时钟约束

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、Create_clock 前言 时钟周期约束&#xff0c;就是对时钟进行约束。 一、Create_clock create_clock -name <name> -period <period> -waveform …

机房布局和布线的最佳实践:如何打造高效、安全的机房环境

机房布局和布线的最佳实践:如何打造高效、安全的机房环境 大家好,我是Echo_Wish。今天我们来聊聊机房布局和布线的问题,这可是数据中心和IT运维中的一个非常重要的环节。不管是刚刚接触运维的新人,还是已经摸爬滚打多年的老兵,都应该对机房的布局和布线有一个清晰的认识。…

spring-security原理与应用系列:建造者

目录 1.构建过程 AbstractSecurityBuilder AbstractConfiguredSecurityBuilder WebSecurity 2.建造者类图 SecurityBuilder ​​​​​​​AbstractSecurityBuilder ​​​​​​​AbstractConfiguredSecurityBuilder ​​​​​​​WebSecurity 3.小结 紧接上一篇文…

OpenHarmony子系统开发 - 电池管理(二)

OpenHarmony子系统开发 - 电池管理&#xff08;二&#xff09; 五、充电限流限压定制开发指导 概述 简介 OpenHarmony默认提供了充电限流限压的特性。在对终端设备进行充电时&#xff0c;由于环境影响&#xff0c;可能会导致电池温度过高&#xff0c;因此需要对充电电流或电…

xy轴不等比缩放问题——AUTOCAD c#二次开发

在 AutoCAD .net api里&#xff0c;部分实体&#xff0c;像文字、属性、插入块等&#xff0c;是不支持非等比缩放的。 如需对AutoCAD中图形进行xyz方向不等比缩放&#xff0c;则需进行额外的函数封装。 选择图元&#xff0c;指定缩放基准点&#xff0c;scaleX 0.5, scaleY …

如何在 HTML 中创建一个有序列表和无序列表,它们的语义有何不同?

大白话如何在 HTML 中创建一个有序列表和无序列表&#xff0c;它们的语义有何不同&#xff1f; 1. HTML 中有序列表和无序列表的基本概念 在 HTML 里&#xff0c;列表是一种用来组织信息的方式。有序列表就是带有编号的列表&#xff0c;它可以让内容按照一定的顺序呈现&#…

kafka的文章

1.面试的问题 要点 至多一次、恰好一次数据一致性超时重试、幂等消息顺序消息挤压延时消息 1.1 kafaka 生产消息的过程。 在消息发送的过程中&#xff0c;涉及到了两个线程&#xff0c;一个是main 线程&#xff0c;一个是sender 线程。在main 线程中创建了一个双端队列 Reco…

以mysql 为例,增删改查语法及其他高级特性

以下是 MySQL 的 增删改查语法及 高级特性的详细整理&#xff0c;结合示例说明&#xff1a; 1. 基础操作&#xff08;CRUD&#xff09; (1) 创建数据&#xff08;INSERT&#xff09; -- 单条插入 INSERT INTO users (id, name, email) VALUES (1, Alice, aliceexample.com);…

Postman最新详细安装及使用教程【附安装包】

一、Postman介绍 ‌Postman是一个功能强大的API测试工具&#xff0c;主要用于模拟和测试各种HTTP请求&#xff0c;支持GET、POST、PUT、DELETE等多种请求方法。‌通过Postman&#xff0c;用户可以发送请求并查看返回的响应&#xff0c;检查响应的内容和状态&#xff0c;从而验…

第十三章 : Names in Templates_《C++ Templates》notes

Names in Templates 重难点多选题设计题 重难点 1. 名称分类与基本概念 知识点&#xff1a; 限定名&#xff08;Qualified Name&#xff09;&#xff1a;使用::或.显式指定作用域的名称&#xff08;如std::vector&#xff09;非限定名&#xff08;Unqualified Name&#xff0…

整合vue+Element UI 开发管理系统

1、 安装 Node.js 和 npm 确保安装了 Node.js 和 npm。可以通过 Node.js 官网 下载。 2、 创建 Vue 项目 安装cli npm install -g vue/cli 使用 Vue CLI 创建一个新的 Vue 项目。 vue create admin-system cd admin-system npm run serve 出现这个页面表示vue创建成功 安…

3. 轴指令(omron 机器自动化控制器)——>MC_Stop

机器自动化控制器——第三章 轴指令 9 MC_Stop变量▶输入变量▶输出变量▶输入输出变量 功能说明▶指令详情▶时序图▶重启运动指令▶多重启动运动指令▶异常 MC_Stop 使轴减速停止。 指令名称FB/FUN图形表现ST表现MC_Stop强制停止FBMC_Stop_instance (Axis :《参数》 ,Execu…

C#中修饰符——abstract、virtual

一、多态简介 在面向对象编程的过程中&#xff0c;多态体现出来的是【一个接口&#xff0c;多个功能】&#xff1b;多态性体现在2个方面&#xff1a; 1、程序运行时&#xff0c;在方法参数、集合或数组等位置&#xff0c;派生类对象可以作为基类的对象处理&#xff1b;这样该对…

Spring Boot + Spring Integration整合MQTT打造双向通信客户端

1. 概述 本文分两个章节讲解MQTT相关的知识&#xff0c;第一部份主要讲解MQTT的原理和相关配置&#xff0c;第二个章节主要讲和Spring boot的integration相结合代码的具体实现&#xff0c;如果想快速实现功能&#xff0c;可直接跳过第一章节查看第二章讲。 1.1 MQTT搭建 为了…

2025前端面试题记录

vue项目目录的执行顺序是怎么样的&#xff1f; 1、package.json   在执行npm run dev时&#xff0c;会在当前目录寻找package.json文件&#xff0c;此文件包含了项目的名称版本、项目依赖等相关信息。 2、webpack.config.js(会被vue-cli脚手架隐藏) 3、vue.config.js   对…

专题|Python贝叶斯网络BN动态推理因果建模:MLE/Bayes、有向无环图DAG可视化分析呼吸疾病、汽车效能数据2实例合集

原文链接&#xff1a;https://tecdat.cn/?p41199 作为数据科学家&#xff0c;我们始终在探索能够有效处理复杂系统不确定性的建模工具。本专题合集系统性地解构了贝叶斯网络&#xff08;BN&#xff09;这一概率图模型在当代数据分析中的创新应用&#xff0c;通过开源工具bnlea…

WX小程序

下载 package com.sky.utils;import com.alibaba.fastjson.JSONObject; import org.apache.http.NameValuePair; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.Cl…

Vulnhub-wordpress通关攻略

姿势一、后台修改模板拿WebShell 第一步&#xff1a;进⼊Vulhub靶场并执⾏以下命令开启靶场&#xff1b;在浏览器中访问并安装好.... 第二步&#xff1a;找到外观--编辑--404.php&#xff0c;将原内容删除并修改为一句话木马&#xff0c;点击更新--File edited successfully. &…