康谋技术 | 深入探讨:自动驾驶中的相机标定技术

news2025/1/8 5:02:36

随着自动驾驶技术的快速发展,多传感器的数据采集和融合可以显著提高系统的冗余度和容错性,进而保证决策的快速性和正确性。在项目开发迭代过程中,传感器标定扮演着至关重要的角色,它位于数据采集平台与感知融合算法之间,是确保传感器数据准确性的基础,同时也是实现传感器融合的关键先决条件。

在众多传感器中,相机以其丰富的信息获取能力和成本效益而成为自动驾驶系统中的首选。相机标定可以提高空间定位精度,消除畸变影响,统一传感器数据以及增强系统的鲁棒性。


目录

一、相机的工作原理

二、相机的标定参数

三、标定方法

作者介绍


一、相机的工作原理

通过相机拍摄图像,可以将3D世界投影成2D图像。因此可以把相机模型看作一个从3D空间到2D空间的映射。采用小孔成像模型来描述相机的成像原理。

小孔成像模型由光心、光轴和成像平面几个部分组成,且假设所有成像过程都满足光的直线传播条件。根据光的直线传播理论,空间中的物点反射光经过光心后,投影到平面形成一个倒立的像点。虽然作为理想的成像模型,小孔成像的物理性质极佳,但是实际的相机光学系统中大多是由透镜组成的,在透镜成像中需要满足以下条件:

\frac{1}{f}=\frac{1}{u}+\frac{1}{v}

其中,表示 f透镜的焦距, u表示物距, v 表示像距,如图1所示。

图1 凸透镜成像原理

相机成像系统主要有4个坐标系,分别是世界坐标系、相机坐标系、图像坐标系和像素坐标系,如图2所示。世界坐标系通过平移和旋转得到相机坐标系,相机坐标系通过成像模型中的相似三角形原理得到图像坐标系,图像坐标系通过平移和缩放得到像素坐标系。

图2 相机成像系统中4个坐标系之间的关系

这些坐标系描述了从三维空间到二维图像的坐标变换过程。标定的目标是确定这种变换关系,即三维物体表面点与二维图像对应点之间的关系,从而建立摄像头成像的几何模型。

二、相机的标定参数

相机的标定参数主要包括内参、外参和畸变参数。从世界坐标系到像素坐标系的转换是图像处理和计算机视觉中的关键步骤,它允许我们理解图像中物体的真实位置和尺寸,进而实现各种应用,如自动驾驶中的物体检测与定位。

  • 内参是相机自身的固有属性,包括焦距、主点坐标和像素的物理尺寸等信息,这些参数不会因外界环境而改变,可以通过标定获得。相机的内参矩阵 A(d_{x},d_{y},r,v_{0},u_{0},f) , 内参矩阵是实现图像坐标系与像素坐标系转换的关键。 d_{x},d_{y}分别表示在x和y轴方向上一个像素占据的实际长度,r表示径向畸变参数之一, f表示焦距, u_{0},v_{0} 表示像素坐标下的主坐标点。

  • 外参描述了摄像头在世界坐标系中的位置和方向,包括旋转角度和平移参数,它说明了现实世界点是如何通过平移和旋转映射到摄像头坐标系的。其中,R为旋转矩阵,负责实现坐标系之间的旋转变换。T为平移矩阵,负责实现坐标系之间的平移变换。

  • 畸变参数则是用来描述摄像头成像过程中产生的形状改变和扭曲。畸变主要包括径向畸变和切向畸变,即相机的径向畸变系数 k_{1},k_{2},k_{3}等和相机的切向畸变系数p_{1},p_{2}等。常见的畸变类型,如图3所示。

图3 图像畸变的两种类型

因此,世界坐标系到像素坐标系的转换关系为:

其中,相机坐标系到图像坐标系转换时,由于相机镜头制造工艺缘故,需要进行畸变桥正。径向畸变是由于透镜形状的制造工艺导致的,且越向透镜边缘移动,径向畸变就越严重。矫正径向畸变前后的坐标关系为:

X_{corrected}=x(1+k_{1}\times r^{2}+k_{2}\times r^{4}+k_{3}\times r^{6})

Y_{corrected}=y(1+k_{1}\times r^{2}+k_{2}\times r^{4}+k_{3}\times r^{6})

切向畸变是由透镜和CMOS或者CCD的安装位置误差导致的。切向畸变需要两个额外的畸变参数来描述,矫正前后的坐标关系为:

X_{corrected}=x+2p_{1}xy+p_{2}(r^{2}+2x^{2})

Y_{corrected}=y+2p_{2}xy+p_{1}(r^{2}+2y^{2})

因此,一共需要5个畸变参数。求出上述这些参数即完成了标定过程。

三、标定方法

标定方法是视觉领域中摄像头校准的关键步骤,直接影响视觉系统的输出结果。主要的标定方法包括自标定、根据参照物进行标定和基于主动视觉的标定法。 在这些方法中,张正友标定法因其简便、高精度和广泛的适用性而备受推崇。它利用双平面棋盘格结构作为标定物,通过观察棋盘格在不同视角下的图像,可以计算出相机的内外参数。克服了传统方法需要高精度标定物的缺点,并提高了自标定的精度。张氏标定法的主要贡献在于提出了计算相机参数优化初值的方法,成为计算机视觉领域广泛应用的标定方法之一。 张正友标定法的整体流程如下:

  1. 制作标定板并从不同角度(平移、旋转)拍摄若干张图像(10-20张)。

  2. 检测图像中的特征点。

  3. 求解理想无畸变情况下的内参、外参。

  4. 使用最小二乘法求出实际的径向畸变参数。

  5. 使用极大似然法优化估计,结合内参、外参、畸变参数,提升估计精度。

  6. 得到实际的内参、外参、畸变参数。

相机标定是自动驾驶系统中不可或缺的一环,它直接影响到系统的感知能力和决策准确性。通过深入理解和掌握相机标定的技术要点,我们可以为自动驾驶车辆提供更加准确和可靠的视觉感知能力,推动自动驾驶技术的发展和应用。


作者介绍

郑工

康谋高级自动驾驶技术研发工程师,拥有超过5年的汽车电子和自动驾驶数据分析经验,专精于高精度传感器数据的获取、整合与优化。在数据采集技术方面造诣深厚,尤其在车载网络和实时数采系统上富有实践成果,设计并优化了多种数据采集与传输方案。曾多次代表公司参加海外技术研讨会和培训项目,深入了解国际自动驾驶行业的最新动态和技术趋势,积累了丰富的国际视野。


欢迎联系康谋自动驾驶团队了解更多信息。

我们将竭诚为您服务!

期待与您的交流!

康谋科技 - 您的一站式自动驾驶解决方案合作伙伴,助力自动驾驶商业化落地 - keymotek康谋科技有限公司是原虹科自动驾驶业务孵化出来的全新独立公司,专注于自动驾驶领域。我们以数据为驱动力,提供高性能的数据采集、记录、传输方案,针对各种驾驶场景进行精准的仿真模拟,以及对大量自动驾驶数据进行高效、高质量处理。我们的一站式服务能够满足自动驾驶领域研发测试的全流程需求,助力客户在自动驾驶领域取得更大突破。icon-default.png?t=N7T8https://keymotek.com/

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

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

相关文章

关于外网后端服务访问内网minio中间件,因连接minio超时,启动失败问题

注:服务器情况:2台服务器,内网服务器包含(activemq、minio、nginx、redis、mysql、后端java服务)。外网服务器只有后端java服务,访问内网的中间件(内网服务器开放了部分指定端口) 问…

01_FreeRTOS移植

FreeRTOS移植 FreeRTOS移植FreeRTOS移植-中断文件修改 FreeRTOS移植 内核移植时用到的文件 复制工程模板,不需要的源文件全部删除 复制到工程文件中 放到这里 注释掉这两个重复定义的中断 替换掉工程中的裸机延时 FreeRTOS移植-中断文件修改

React脚手架的搭建与使用

React脚手架是开发现代Web应用的必备,其充分利用Webpack、Babel、ESlint等工具辅助项目的开发,当然这些工具也无需手动配置即可使用,脚手架的意义更多的是关注的是业务而不是工具的配置;项目的整体技术架构为:react w…

OpenHarmony实战开发-如何通过分割swiper区域,实现指示器导航点位于swiper下方的效果。

介绍 本示例介绍通过分割swiper区域,实现指示器导航点位于swiper下方的效果。 效果预览图 使用说明 1.加载完成后swiper指示器导航点,位于显示内容下方。 实现思路 1.将swiper区域分割为两块区域,上方为内容区域,下方为空白区…

git clone报错:error invalid path ‘dorisdockerthirdpartiesdocker-composexxxx‘

git clone报错:error: invalid path ‘doris/docker/thirdparties/docker-compose/xxxx’ 在周日晚上,我尝试从GitHub上克隆Doris的代码库,以便进行学习。在使用IntelliJ IDEA进行克隆时,我遇到了一个Git错误。具体操作如下&…

selenium反反爬虫,隐藏selenium特征

一、stealth.min.js 使用 用selenium爬网页时,常常碰到被检测到selenium ,会被服务器直接判定为非法访问,这个时候就可以用stealth.min.js 来隐藏selenium特征,达到绕过检测的目的 from selenium import webdriver from seleniu…

KDTree索引(K近邻搜索,半径R内近邻搜索)——PCL

K近邻搜索(K Nearest Neighbors) K近邻搜索是一种基于点数量的搜索方法,它会找到指定点附近最接近的K个邻居点。K近邻搜索中的K值是一个参数,您需要指定要搜索的邻居数量。该方法适用于需要查找固定数量邻居点的情况,…

2W 3KVDC 隔离 稳压单输出 DC/DC 电源模块——TPK-SAR 系列介绍

TPK-SAR系列产品是专门针对PCB上分布式电源系统中需要与输入电源隔离且输出精度要求较高的电源应用场合而设计。该产品适用于;1)输入电源的电压变化≤5%;2)输入输出之前要求隔离电压≥3000VDC;3)对输出电压…

使用两台主机实现博客的搭建

1.运行环境 这里的主机IP是自己虚拟器的IP。 主机主机名系统服务192.168.179.128Server-WebLinuxWeb192.168.179.129Server-NFSDNSLinuxNFS/DNS 2.基础配置 1.配置主机名,静态IP地址 2.开启防火墙并配置 3.部分开启SElinux并配置 4.服务器之间使用同ntp.aliyun.com…

正整数分解-第12届蓝桥杯省赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第54讲。 正整数分解&#…

Golang 开发实战day11 - Pass By Value

🏆个人专栏 🤺 leetcode 🧗 Leetcode Prime 🏇 Golang20天教程 🚴‍♂️ Java问题收集园地 🌴 成长感悟 欢迎大家观看,不执着于追求顶峰,只享受探索过程 Golang 开发实战day11 - 按值…

如何阻止访问您的网站

本周有一个客户,购买Hostease的HK Basic Linux虚拟主机,询问我们的在线客服,如何阻止部分地区或IP段访问他的网站。我们为用户提供教程,用户很快完成了设置。在此,我们分享这个操作教程,希望可以对您有帮助…

管理 nodejs 版本工具 nvm

nvm 方便切换不同版本的 node 及 对应的 npm 版本 一、安装nvm nvm官网 &#xff08;内含下载的文件&#xff0c;点击进去下载&#xff0c;并按照 网站文档步骤 操作即可&#xff09; 二、nvm 基础命令 nvm arch&#xff1a;显示node是运行在32位还是64位。nvm install <…

网上订餐系统|基于springboot的网上订餐系统设计与实现(源码+数据库+文档)

网上订餐系统目录 目录 基于springboot的网上订餐系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户功能模块的实现 &#xff08;1&#xff09;用户注册界面 &#xff08;2&#xff09;用户登录界面 &#xff08;3&#xff09;菜品详情界面 &#xff08…

随动系统同步性问题(跟随给定和跟随反馈的区别)

1、运动控制比例随动 运动控制比例随动系统_正运动随动系统-CSDN博客文章浏览阅读1.4k次,点赞2次,收藏5次。PLC如何测量采集编码器的位置数据,不清楚的可以参看我的另一篇博文:三菱FX3U PLC高速计数器应用(附代码)_RXXW_Dor的博客-CSDN博客本文主要以三菱FX3U系列的高速…

Groovy程序设计-【第一部分Groovy起步】-02-面向Java开发者的Groovy

前言&#xff1a; 知识点记录来源于【Groovy程序设计】一书中&#xff0c;本文仅作知识点记录供日后使用查询&#xff0c;不做教程使用。 groovy支持java语法&#xff0c;并且保留了java的语义&#xff0c;所以我们可以随心所欲的混用两种语言。 1.从Java到Groovy 先看一个…

vr兽医设备操作模拟仿真教学平台提升教学效果

在兽医教育的传统领域中&#xff0c;动物诊疗一直是一项不可或缺的实践环节。然而&#xff0c;传统的解剖教学方式受限于动物数量、种类以及安全隐患&#xff0c;无法充分满足学生的学习需求。随着VR虚拟仿真技术的不断精进&#xff0c;VR动物诊疗仿真实训系统为兽医教育带来了…

数字藏品app开发

数字藏品是指使用区块链技术&#xff0c;对应特定的作品、艺术品生成的唯一数字凭证。在保护其数字版权的基础上&#xff0c;数字藏品实现了真实可信的数字化发行、购买、收藏和使用。数字藏品是数字出版物的一种新形态&#xff0c;具有唯一的IP数字身份和所有权信息&#xff0…

什么是人才测评工具?

人才测评工具是指企业通过一系列科学的手段和方法对人的基本素质及其潜能进行测量和评定的活动。它的具体对象不是抽象的人&#xff0c;而是作为个体存在的人其内在素质及其表现出的绩效。随着经济的发展&#xff0c;企业对人才的渴求日益增加&#xff0c;这也导致各企业单位人…

Java与Kotlin语言的特色之处

一、Java特色之处&#xff1a; 1.多异常捕获 一个try块可能捕获到多个异常&#xff0c;可以使用多个catch块分别处理每个异常&#xff0c;也可以使用一个catch块处理多个异常&#xff08;多个异常使用管道符|分隔&#xff09;。 多个catch块代码&#xff1a; try{ }catch(IOExc…