智能驾驶视觉传感器测试:自动驾驶车辆如何进行传感器标定?

news2024/11/30 14:53:18

为什么要进行标定?

一辆自动驾驶车辆会安装多个传感器,需要通过传感器标定来确定相互之间的坐标关系,从而将多个传感器数据整合为“一个传感器”。因此,准确的传感器标定是实现智能车辆多传感器感知和定位系统的先决条件。

传感器标定的基本原理是将已知的被测量(亦即标准量)输入给待标定的传感器,同时得到传感器的输出量,对输入量和输出量进行对比处理,得到一系列表征两者对应关系的标定曲线,进而得到传感器性能指标的实测结果。

分类

传感器标定分为内参数标定和外参数标定:

内参数是传感器自身固有性质,决定传感器的内部映射关系,如Camera的焦距和镜头畸变、Lidar内部激光发射器坐标与激光雷达坐标装置之间的转换关系;

而外参指的是传感器相对位置朝向对于世界坐标系的旋转和平移变换关系,通常用三维的旋转矩阵R3×3(3个自由度)和平移向量T3×3(3个自由度)共6个自由度表示,以确定传感器与外部坐标系之间的转换关系。

大多数传感器在安装后需要进行标定,以确保传感器测量的准确性。

关于坐标系

以Camera为例,其涉及的坐标系包括像素坐标系、图像坐标系、相机坐标系和世界坐标系,标定就是为了获取以上四大坐标系之间的对应关系,即获取外参矩阵。

在标定的时候,如果物体在距离相机的不同位置,那么我们就必须在不同的位置对相机做标定。

简单点来理解就是,当物体离相机远的时候,在图像上就很小,那么一个像素代表的实际尺寸就大,当物体离相机近的时候,那么成像效果就大,一个像素代表的实际物体尺寸就小。因此,对于每一个位置都需要去标定。

像素坐标系:

像素坐标就是像素在图像中的位置。一般像素坐标系的左上角的顶点就是原点,水平向右是u,垂直向下是v轴,单位pixel。

图像坐标系:

在像素坐标系中,每个像素的坐标是用像素来表示的,然而,像素的表示方法却不能反应图像中物体的物力尺寸,因此,有必要将像素坐标转换为图像坐标。

将像素坐标系的原点平移到图像的中心,就定为图像坐标系的原点,图像坐标系的 x轴与像素坐标系的 u 轴平行,方向相同,而图像坐标系的 y 轴与像素坐标系的 v 轴平行,方向相同。

相机坐标系:

相机坐标系是以相机的光轴作为Z轴,光线在相机光学系统的中心位置就是原点Oc(实际上就是透镜的中心),相机坐标系的水平轴Xc与垂直轴Yc分别于图像坐标系的 X轴和 Y 轴平行。在图中,相机坐标系的原点与图像坐标系的原点之间的距离OcOi之间的距离为 f(也就是焦距)。

世界坐标系:

世界坐标系是图像与真实物体之间的一个映射关系。如果是单目视觉的话,主要就

是真实物体尺寸与图像尺寸的映射关系。如果是多目视觉的话,那么就需要知道多个相机之间的关系,这个关系就需要在同一个坐标系下进行换算。在下图中,世界坐标系的原点是 Ow,而 Xw,Yw,Zw 轴并不是与其他坐标系平行的,而是有一定的角度,并且有一定的平移。当对相机坐标系安装一定的参数,分别绕着 X,Y,Z 轴做平移和旋转后,就得到在世界坐标系中的坐标,因此从世界坐标系变换到相机坐标系即可用一个旋转矩阵 R 和一个平移向量 T 表示即可,由于世界坐标系到摄像头坐标系的转换关系是摄像头在世界坐标系下的位置姿态矩阵,因此这个 R 和 T 被称为相机的外参矩阵。

至于像素到图像、图像到相机之间的转换在此不再赘述,由于这两者之间的转换是发生在相机内部之间的转换,因此相乘的结果就是内参,感兴趣的读者可以自行搜索研究。

图像畸变及畸变矫正

由于相机多为透镜,所以生成的图像看起来会产生一定的形变、扭曲或者其他的变化。图像畸变的类型可分为径向畸变和切向畸变。

径向畸变:

在自动驾驶汽车上,影像摄像头工作的径向畸变有两种:桶形畸变和枕形畸变,一般广角镜头为桶形畸变,长焦/变焦镜头为枕形畸变。如下图所示。

切向畸变

切向畸变可以这样理解,当透镜与成像平面不行时,就产生了畸变,类似于透视变换。

在通常的单目视觉应用中,求得内参和畸变参数后,就可以对新拍摄的图像做变换和矫正。矫正完拍摄的图像之后,就可以对图像做其他处理了。

对于双目视觉而言,需要用到世界坐标系。对单目视觉做完内参和畸变参数的矫正之后,就可以用这些变换后的图像,同时结合世界坐标系实现定位或者其他用途了。

标定方法

外参标定方法通常可分为无目标(targetless)标定和基于目标(target-based)标定。前者不需要特殊目标,是在自然环境中进行的,利用自然环境中的静止物体(如树木、电线杆、路灯杆、交通标志牌等)和清晰车道线进行标定;后者需要一个特殊的控制场,并有一个真实值(GT)目标,如棋盘、多边形棋盘(张氏标定法),通过棋盘格的角点来建立对应关系。因此,基于目标的方法可以使用有关目标的先验知识,增强标定结果。基于目标方法比无目标方法更精确。

举例来说,就是拍摄 N 张不同视角下类似于下图所示的标定板的照片,根据此标定板的实际尺寸,在电脑里假定了一个多长多宽的假想标定板图像,而标定的过程就是所有拍摄到的标定板照片都应该往我假定的标定板靠,如果对不上,那么就有系数上的关系,这个系数上的关系就是我们要标定的参数。

内参标定通常采用目标法。常用的摄像头内参标定方法是张氏标定棋盘法。除了棋盘格图案外,还有一个常见的圆网格,用于标定摄像头内参。一些激光雷达内参标定方法是通过框或面墙执行的。

总结

拓展学习

整车测试之车载必修课(台架&路测&智能驾驶&智能座舱&车载自动化)

最后:

可以到我的个人号:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试等。

这些测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

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

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

相关文章

MXNet的Faster R-CNN(基于区域提议网络的实时目标检测)《6》

我们在看Faster R-CNN源码(MXNet版本)的时候,除了下面这些我们遇到的常见的参数解析 import argparse import ast parser argparse.ArgumentParser(descriptionDemonstrate a Faster R-CNN network,formatter_classargparse.ArgumentDefaultsHelpFormatter) parse…

【操作系统系统/Golang】实验5:磁盘调度(FCFS,SSTF,SCAN与循环SCAN)

1 实验问题描述设计程序模拟先来先服务FCFS,最短寻道时间优先SSTF,SCAN和循环SCAN算法(对应其他参考书的LOOK和C-LOOK)的工作过程。假设有trackNum个磁道号所组成的磁道访问序列,给定开始磁道号initTrackNum和磁头移动…

Java项目管理工具:Maven介绍

Maven 简介下载与环境配置Maven仓库仓库类型本地仓库配置简介 Maven ,一款跨平台的项目管理工具。它主要服务于基于 Java 平台的项目构建与依赖管理。即可以将项目的开发和管理过程抽象成一个项目对象模型(POM),开发人员只需要做一些简单的配置,Maven 便可自动完成项目构建…

HRNet源码阅读笔记(4),庞大的PoseHighResolutionNet模块-stage1

一、图和代码上一讲的图中,有stage1图例如下;关键是看pose_hrnet.py中PoseHighResolutionNet模块的forward函数相关部分如下:def forward(self, x):x self.conv1(x)x self.bn1(x)x self.relu(x)x self.conv2(x)x self.bn2(x)x self.relu(x)x self…

一辈子干好一件事,你就了不起

人生的道路和轨迹,就像是射出去的箭。假如左拐右拐,不但不能射中靶心,达不到目标,还有可能拐弯回到原点,原地踏步。日复一日,年复一年,没有成长和收获,这很可怕。 短暂的2022年&…

设计测试用例的万能公式 + 6大具体方法 = 面试就像聊天?

目录 一、设计测试用例的万能公式 二、设计测试用例的具体方法 2.1、等价类 2.2、边界值 2.3、判定表(因果图的另一种形式) 2.4、场景设计法 2.5、正交法(用的少,基本不可见) 2.4.1、使用allparis构建正交表 2.…

算法之动态规划理论

目录 前言 一个模型三个特征理论讲解 1.最优子结构 2.无后效性 3.重复子问题 一个模型三个特征实例剖析 两种动态规划解题思路总结 1.状态转移表法 2.状态转移方程法 四种算法思想比较分析 总结: 参考资料 前言 本篇博文主要讲解动态规划的理论&am…

行业分析| 交通综合执法对讲系统

随着社会的经济发展,人口的增加城市的不断壮大,城市交通情况越来越复杂,交警承担的执法任务越来越重,通信作为交警综合执法对讲调度的重要组成部分,也随之提出了更高的要求。综合执法对讲系统的出现使执法变得高效规范…

【Redis】高级进阶

🌟个人博客:www.hellocode.top🌟 🌟Java知识导航:Java-Navigate🌟 ⭐想获得更好的阅读体验请前往Java-Navigate 🔥本文专栏:《流行框架》 🌞如没有JavaWEB基础&#xff0…

【ZooKeeper】第三章 集群搭建

【ZooKeeper】第三章 集群搭建 文章目录【ZooKeeper】第三章 集群搭建一、ZooKeeper 集群介绍1.Leader 选举2.集群角色二、搭建 ZooKeeper 集群1.安装2.配置集群3.启动集群三、故障模拟一、ZooKeeper 集群介绍 1.Leader 选举 Serviceid:服务器 ID 比如有三台服务器…

分享84个NET源码,总有一款适合您

分享84个NET源码,总有一款适合您 链接:https://pan.baidu.com/s/1r7_yrTfQrg-5whL7AYJiLA?pwdeem6 提取码:eem6 import os from time import sleepimport requests from bs4 import BeautifulSoup from docx import Document from docx.sh…

iOS ReplayKit 屏幕共享,屏幕直播实现

使用replayKit iOS12 之后相关 api 完成系统/app 内 屏幕采集直播视频数据, 采用 socket进行进程间Broadcast Unload Extension 向 宿主 app 传输数据, 后台保活持续采集屏幕数据, 摄像头采集, 数据编码解码 编译环境 Xcode14.2, iOS12 系统屏幕数据采集app 内屏幕共享使用so…

FPGA与数字IC求职知识准备 - 数字电路知识总结

前言 本文整理了数字电路课程中的相关基本的知识点和较为重要的知识点,用于求职的数电部分的知识准备,差缺补漏。 二进制数的算术运算 无符号二进制数的算术运算 加法:同十进制加法,逢二进一,无符号二进制数的加法…

Redis源码篇(8)——集群模式

1、集群模式的启动和初始化 当开启了cluster-enabled,在初始化服务initServer方法中会调用clusterInit方法将redis带入cluster模式。 clusterInit void clusterInit(void) {int saveconf 0;//初始化clusterState结构 server.cluster zmalloc(sizeof(clusterSta…

LaTeX代码宏包listings的使用

LaTeX代码宏包listings的使用 文章目录LaTeX代码宏包listings的使用1 需求2 verbatim环境简介3 listings设置代码高亮4 代码样式和颜色5 为listings添加题注6 listings支持的语言格式7 附录 listings样式的自定义参数1 需求 LaTeX\LaTeXLATE​X适合用来进行结构化文档的编辑。如…

[5]. 最长回文子串

[5]. 最长回文子串题目算法设计:双指针算法设计:Manacher 算法题目 传送门:https://leetcode.cn/problems/longest-palindromic-substring/ 算法设计:双指针 检查回文串的通用解决方案是,双指针。 寻找回文串的思…

什么是地理围栏

一、地理围栏算法简介 地理围栏(Geo-fencing)是LBS的一种典型应用,就是用一个虚拟的栅栏围出一个虚拟地理边界。地理围栏更侧重于对区域边界的界定,不再是以某点为圆心向外等距离画圆,而是准确勾勒出小区、写字楼等特…

wpf实现FFmpeg获取摄像头实时画面

gitee地址如下源码地址如何获取摄像头验证码和ip首先获取摄像头底部的验证码及ip(测试使用的是萤石摄像头,需要PC下载萤石客户端查看ip)未连接之前可以通过VLC进行测试在左上角(媒体)--》(流)--》(网络&…

openGauss中Schema赋权小试

目录 概述 1.关于public的权限要点: 2.关于用户同名的schema的权限要点: 3.关于普通schema的权限要点: 概述 下面是openGauss官网对Schema的介绍: Schema又称作模式。通过管理Schema,允许多个用户使用同一数据库而…

MATLAB-二维线性插值运算

二维插值在图像处理和数据可视化方面得到了大量的应用,二维插值的基本原理与一维插值一样,但二维插值是对两个变量进行函数的插值。在MATLAB中,主要使用interp2()函数进行二维插值的实现,其调用格式如下,zi interp2(z,…