自动驾驶TPM技术杂谈 ———— 摄像头标定

news2024/12/28 20:25:10

文章目录

  • 介绍
  • 摄像头
    • 内参标定
      • 摄像头模型的建立
        • 摄像头坐标系与环境坐标系的转换
        • 图像坐标系与图像像素坐标系
        • 小孔成像与图像物理坐标系
        • 环境坐标系与图像像素坐标系的转换
      • 摄像头畸变矫正
      • 常见内参标定方法
        • 平面标定
        • 自标定
    • 摄像头间外参标定

介绍

 标定传感器是自动驾驶感知系统中不可缺少的环节,也是后续传感器融合的必要步骤和先决条件,其目的使将两个或多个传感器变换到统一的时空坐标系,使得传感器融合具有意义,使感知决策的关键前提。任何传感器在制造、安装之后都需要通过实验进行标定,以保证传感器符合设计指标,保证测量值的准确。传感器在安装上汽车之后,需要对其进行标定;同时,车辆的行驶过程中出现的震动等原因,会导致传感器与原位置产生一定的偏离,因此需要每隔一段时间进行校准。自动驾驶汽车通过多种类型的传感器同时工作以保证环境感知和自我感知,传感器的健壮性和准确性在自动驾驶的感知环节就显得尤其重要。传感器的标定是建立传感器输出与现实中的值的对应关系。

摄像头

内参标定

摄像头模型的建立

 对单目摄像头来说,单目视觉的标定本质上是建立物体在环境坐标系中的坐标与图像坐标系中的坐标之间的关系。假设现实中一个物体P,在环境坐标系的位置为(Xw, Yw, Zw)。如果想获取到物体P在成像面上的位置,则需要建立三个辅助坐标系:摄像头坐标系、图像物理坐标系、图像像素坐标系,最后得到的是P在图像像素坐标系上的投影。

摄像头坐标系与环境坐标系的转换

 如下图所示,摄像头坐标系通常以镜头中心为原点,以垂直镜头的平面为Z 轴建立空间直角坐标系,X 轴与Y 轴在镜头平面上。X, Y, Z满足右手坐标系。
在这里插入图片描述
 摄像头在空间中也是有一个位置的,因此可以建立环境坐标系与摄像头坐标系之间的关系[R, T]。其中,T 为摄像头坐标系原点相对于环境坐标系原点的平移,即摄像头的镜头中心在环境坐标系的坐标,R 为摄像头坐标系相对于环境坐标系的旋转矩阵。空间中的P点在摄像头坐标系中的位置可以通过下方的公式计算得到:
在这里插入图片描述
 通过公式间的运算和转换,可以得到环境坐标系与摄像头坐标系之间的转换关系:
在这里插入图片描述

图像坐标系与图像像素坐标系

 在计算机视觉中,图像通常使用点阵的方式存储,可以理解为每个像素对应点阵中的一行与一列。其实图像像素坐标系完全也存在着这种对应关系。图像像素坐标系通常以图像左上角作为原点,向右的方向为U坐标轴,向下的方向为V坐标轴,那么像素在图像像素坐标系中的位置可以用(U, V)。图像像素坐标系是符合计算机对图像处理的要求的,但是在图像像素坐标系中的坐标仅代表像素的行列数,并不具备任何物理单位。但是在环境坐标系中的坐标点则是带有物理单位的,因此我们需要引入图像物理坐标系。定义摄像头光轴与图像平面的交点为图像主点,图像物理坐标系以主点为原点,X 轴与Y 轴分别平行于图像像素坐标系的U 轴与 V轴,具体的情况如下图。
在这里插入图片描述
 假设像元底边长W,高度为H,主点在图像像素坐标系下的坐标为(uo, vo)。在理想情况下,图像物理坐标系下的点(Xl,Yl)在图像像素坐标系下的坐标可通过一下公式算出:
在这里插入图片描述

小孔成像与图像物理坐标系

 摄像头成像的原理的基础是小孔成像原理。从摄像机成像原理上看,图像物理坐标系的原点与摄像机的光学中心重合,当摄像头坐标系的XY轴与图像物理坐标系的XY轴平行,就可以构建起图像坐标系与摄像机坐标系之间的关系。
在这里插入图片描述
 对于物体P,在摄像机坐标系下的坐标为(xc, yc, zc)。根据几何关系,有ΔOPA相似于ΔOoPoAo。因此存在以下关系:
在这里插入图片描述
 假设s=zc,则可以得到摄像头坐标系与图像物理坐标系之间的关系:
在这里插入图片描述

环境坐标系与图像像素坐标系的转换

 在得到环境坐标系-摄像机坐标系、摄像机坐标系-图像像素坐标系之间的关系后,便可以求出环境坐标系与图像像素坐标系之间的转换关系。对现实世界中的P,其环境坐标系下的坐标为(Xw, Yw, Zw),在图像中的位置为(U, V),两者之间的转换关系如下:在这里插入图片描述
 其中:在这里插入图片描述
 矩阵M2为环境坐标系到摄像头坐标系的转换关系,是摄像头在世界坐标系选的位置姿态矩阵。在计算机视觉中,确定M2矩阵的过程称为视觉定位。矩阵M1中的四个常量αx,αy,uo,vo与摄像头的焦距、主点以及传感器的设计技术参数相关,与外部因素无关,因此称为摄像头的内参。内参在摄像头出厂的时候就已经确定了。

摄像头畸变矫正

 上面提到的情况都是理想情况,但是实际情况下,摄像头并不能完全精确地按照理想的针孔摄像机模型进行投影,通常会存在透镜畸变,即物点在实际的摄像头成像平面上生成的像与理想成像之间存在一定的光学畸变误差。其畸变误差主要是径向畸变误差和切向畸变误差。径向畸变误差是沿着透镜半径方向分布的畸变,产生的原因是光线远离透镜中心的地方比靠近中心的地方更加弯曲;切向畸变是由于透镜本身与摄像头传感器平面或图像平面不平行而产生的,产生的原因主要是由于透镜被粘贴到镜头模组上的安装偏差导致。畸变是透镜的固定特性,无法消除,只能改善。
 影响自动驾驶中的摄像头的工作的畸变主要分为两种:一种是桶形畸变;另一种是枕形畸变。枕形畸变是由镜头引起的画面向中间“收缩”的现象。在使用长焦镜头或使用变焦镜头的长焦端时较为容易察觉枕形畸变现象。桶形畸变则是由于镜头中透镜物理性能以及镜片组结构引起的成像画面呈桶形膨胀状的失真现象。一般发生在广角镜头或使用变焦镜头的广角端时。桶形畸变和枕形畸变统称为径向畸变。
在这里插入图片描述
 在计算机视觉中,径向畸变对场景重建有着非常重要的影响。自动驾驶系统对环境的感知,要求摄像头能够实现对周边环境的高精度重建。如果不对畸变进行矫正,就无法得到精确的环境信息。对于一般的摄像头来讲,图像的径向畸变通常被描述为一个低阶多项式模型。
在这里插入图片描述
 其中,像素(u,v)在没有畸变的情况下的图像像素坐标为(u0,v0)。对于rc2的含义为: rc2 = u02 + v02 。k1,k2,k3,k4称为径向畸变系数,属于摄像头内参。我们可以使用多种方法来实现标定畸变系数,其中最简单的方法陈伟铅垂线方法(Plumb-line method)。其基本思路是拍摄多条直线,特别是与图像的边缘对齐的场景图像,然后通过调整畸变参数来使得图像中所有的线条均变成直线。另一种方法是使用若干个重叠图像,将径向畸变参数的估计与图像配准过程相结合。在现阶段,径向畸变参数的标定一般与其余内参同时进行。

常见内参标定方法

 最初的标定是需要在一个宽阔的地带来观察远处已经事先通过测量工具确定好位置的目标。随着摄影测量学和计算机视觉技术的进步以及室内机器人应用的需求,两种全新的标定方法 —— 平面标定和自标定被开发出来。

平面标定

 平面标定模式是指制作一块标定板,在工作区的空间内使用一种可控的移动方式来移动该目标。这种方法又称为“N-平面标定发”。在一系列的平面标定模式方法中,目前应用最广泛的是张正友于2000年提出的张正友标定法。其主要通过在不同位置拍摄棋盘标定板的方式,在每个图像中找到棋盘标定板的内角点,通过内角点之间的对应关系建立矩阵 B = K-TK-1的约束,从而恢复内参矩阵K

自标定

 当没有标定板时,可以通过摄像机的运动来进行标定。这种不使用已知目标进行标定的方法称为自标定。自标定的方法往往需要大量精准的图像。在自动驾驶汽车系统中,通常可以在程序中设定一周期,使用时间达到设定周期时,摄像头开始执行自标定。

摄像头间外参标定

 自动驾驶汽车中,为了尽可能的减少感知盲区,往往采用多摄像头的模式。确定多摄像头之间的相对位置关系,这个过程可以称为摄像机的外参标定。换个角度来看,摄像机的外参标定也可以称为“姿态估计”问题。两个摄像头之间相对位姿有6个维度 —— 空间位置(x,y,z)和旋转关系(α,β,γ)。理论层面来看,只要两个摄像头同时获取空间中3个点即可恢复二者之间的相对姿态。从三队对应点恢复摄像头之间的相对姿态问题,称为“透视三点问题”(Perpective-3-Point-Problem)。现实中,常常使用3个以上的点来恢复相对姿态,以提高健壮性,P3P的问题被推广位PnP问题。最初研究者使用直接线性法(Direct Linear Transform)解决PnP问题。为了提升精度,学者提出了健壮线性化的重投影误差,开始采用迭代的方法来求解PnP问题,并由此提出了著名的光束平差法(Bundle Adjustment)。

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

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

相关文章

Springboot集成工作流Activity

介绍 官网:https://www.activiti.org/ 一 、工作流介绍 1.工作流(workflow) 就是通过计算机对业务流程自动化执行管理,它主要解决的是“使在多个参与这之间按照某种预定义规则自动化进行传递文档、信息或任务的过程&#xff0c…

儿童绘本馆图书借阅租赁知识付费小程序源码交流

1.分类图书 2.书单推荐 4.会员卡次、期限购买 5.借阅时间选择 6.积分签到 7.优惠Q领取 前端uniapp开发 后端thinkphp开发 完全开源 <template> <view class"sp-section sp-index"> <!-- search --> <view class&qu…

【第30天】SQL进阶-查询优化- performance_schema系列实战五:查看最近的事务执行信息(SQL 小虚竹)

回城传送–》《32天SQL筑基》 文章目录零、前言一、 查看最近的事务执行信息数据准备&#xff08;如果已有数据可跳过此操作&#xff09;开启第一个会话&#xff0c;配置启用事务事件开启第二个会话&#xff0c;用于执行事务&#xff0c;并模拟事务回滚第一个会话查询活跃事件第…

详解无线技术标准都使用哪些频段?中国物联网市场又适用哪些频段

由于各行各业都有各自的频段只应用需求&#xff0c;所以一般频段都是由国家来进行分配的。国家设立无线电管理机构&#xff0c;通过拍卖、定价的方法向企业、机构发放频段使用许可。获得许可的机构将会获得拍照。这也就是5G&#xff0c;4G时各运营商获得国家颁发牌照的由来。只…

【QT】TCP通信(QTcpServer 和 QTcpSocket)

目录1. TCP通信概述2. QTcpServer2.1 公共函数2.2 信号2.3 保护函数3. QTcpSocket3.1 公共函数3.2 信号4. 代码示例4.1 服务器端MainWindow.hMainWindow.cpp4.2 客户端MainWindow.hMainWindow.cpp4.3 界面显示1. TCP通信概述 TCP是一种被大多数Internet网络协议&#xff08;如…

【设计模式】我终于读懂了代理模式。。。

&#x1f466;代理模式的基本介绍 1)代理模式&#xff1a;为一个对象提供一个替身&#xff0c;以控制对这个对象的访问。即通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 2)被代理的对象可以是远程对象、创建…

SharpImpersonation:一款基于令牌和Shellcode注入的用户模拟工具

关于SharpImpersonation SharpImpersonation是一款功能强大的用户模拟工具&#xff0c;该工具基于令牌机制和Shellcode注入技术实现其功能&#xff0c;可以帮助广大研究人员更好地对组织内部的网络环境和系统安全进行分析和测试。 该工具基于 Tokenvator的代码库实现其功能&a…

webpack、vite、vue-cli、create-vue 的区别

webpack、vite、vue-cli、create-vue 的区别 首先说结论 Rollup更适合打包库&#xff0c;webpack更适合打包项目应用&#xff0c;vite基于rollup实现了热更新也适合打包项目。 功能工具工具脚手架vue-clicreate-vue构建项目vite打包代码webpackrollup 脚手架:用于初始化&#…

icon-font的使用

先登录阿里巴巴图标矢量库官网iconfont-阿里巴巴矢量图标库在官网挑选需要的图标点击图标购物车并且点击下载代码下载好之后将文件夹里面的css&#xff0c;ttf文件放置到你的项目当中并且点击里面的html文件这里面有详细的用法&#xff0c;这里我是用的时font class方法‘方法二…

【macOS】mac电脑M2芯片安装Homebrew 最简单的方法

一 Homebrew的安装 打开终端&#xff0c;复制如下命令&#xff0c;按回车执行 M芯片和Intel芯片均可 中途可能需要你手动输入密码&#xff0c;输入完成回车即可&#xff08;密码不可见 选择中科大或者清华镜像源 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/Hom…

MyBatis案例 | 使用映射配置文件实现CRUD操作——修改数据

本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等&#xff0c;如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址&#xff1a;&#x1f525;JavaWeb Java入门篇&#xff1a; &#x1f525;Java基础学习篇 Java进阶学习篇&…

简单易懂、无线产品上市认证:进网许可证、入网证、CTA认证

简单易懂、无线产品上市认证:进网许可证、入网证、CTA认证 通信产品想在中国市场进行销售,一般需要通过以下三种认证 : CCC强制认证、TA型号核准(SRRC)、NAL进网许可(CTA) 今天我们来详细了解一下NAL(Network Access License)工信部信息通信管理局的相关要求。 那么…

【软考】系统集成项目管理工程师(二十一)项目收尾管理

1. 项目验收2. 项目总结3. 系统维护4. 项目后评价补充:人员转移和资源遣散广义的系统集成项目收尾管理工作通常包含四类典型的工作:项目验收工作、项目总结工作、系统维护工作 以及 项目后评价工作,此外项目团队成员的后续工作也应在收尾管理时妥善安排;狭义的系统集成项目…

C++程序中执行abort等操作导致没有生成dump文件的问题案例分析

目录 1、概述 2、查看C运行时函数abort的内部实现 3、开源库jsoncpp中调用abort的代码场景说明 4、开源库WebRTC中调用abort的代码场景说明 5、项目问题实例分析 5.1、问题说明 5.2、进一步分析 5.3、动态申请内存失败的可能原因分析 6、最后 VC常用功能开发汇总&…

计算机网络(第三版) 胡亮 课后习题第二章答案

计算机网络&#xff08;第三版&#xff09; 胡亮 课后习题第二章答案 1、数据通信系统由哪些部分组成&#xff1f; 信源、发送设备、传输设备、接受设备&#xff0c;信宿 2、数据通信应该解决的主要问题有哪些&#xff1f; 提高传输系统的利用率接口&#xff0c;编码和同步交换…

C++类基础(十二)

运算符重载&#xff08;终&#xff09; ● 类型转换运算符 – 函数声明为 operator type() const – 与单参数构造函数一样&#xff0c;都引入了一种类型转换方式 struct Str {Str(int p): val(p){}operator int() const //重载类型转换运算符: 没有显示声明返回类型&#xff…

百趣代谢组学分享,补充α-酮酸的低蛋白饮食对肾脏具有保护作用

文章标题&#xff1a;Reno-Protective Effect of Low Protein Diet Supplemented With α-Ketoacid Through Gut Microbiota and Fecal Metabolism in 5/6 Nephrectomized Mice 发表期刊&#xff1a;Frontiers in Nutrition 影响因子&#xff1a;6.59 作者单位&#xff1a;…

opencv调取摄像头录制

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a; lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…

月薪11k!从财务专员到软件测试工程师,成都校区小哥哥用三个月实现转行换岗

好久没和大家分享学员的转行经历了&#xff0c;或许在一些人看来他们的故事与自己无关&#xff0c;但同样也能引起一些人的共鸣&#xff0c;可以帮助到那些陷于就业焦虑的同学找到目标和方向。相仿的年龄、相同的职业、相似的压力…在转行软件测试追求更好生活的路上&#xff0…

Python - 文件基础操作

目录 文件的读取 open()打开函数 read类型 read()方法 readlines()方法 readline()方法 for循环读取文件行 close() 关闭文件对象 with open 语法 文件的写入 文件的追加 文件的读取 操作 功能 文件对象 open(file, mode, encoding) 打开文件获得文件对象 文件…