当前位置: 首页 > news >正文

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

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

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


目录

一、相机的工作原理

二、相机的标定参数

三、标定方法

作者介绍


一、相机的工作原理

通过相机拍摄图像,可以将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/

相关文章:

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

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

如何在 Ubuntu 上启用 IPv6

一、前提条件 一台安装了 Ubuntu 22.04 的计算机具有 sudo 权限的用户账户已连接到支持 IPv6 的网络 二、检查系统是否支持 IPv6 在启用 IPv6 之前,首先要确保您的系统支持 IPv6。要检查内核是否启用了 IPv6,可以运行以下命令: cat /proc/…...

Mac电脑上有什么好玩的格斗游戏 《真人快打1》可以在苹果电脑上玩吗

你是不是喜欢玩格斗游戏?你是不是想在你的Mac电脑上体验一些刺激和激烈的对战?在这篇文章中,我们将介绍Mac电脑上有什么好玩的格斗游戏,以及《真人快打1》可以在苹果电脑上玩吗。 一、Mac电脑上有什么好玩的格斗游戏 格斗游戏是…...

【leetcode面试经典150题】55. 逆波兰表达式求值(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…...

云轴科技ZStack入选中国信通院《高质量数字化转型产品及服务全景图(2023年度)》

近日,由中国互联网协会主办、中国信通院承办的“2024高质量数字化转型创新发展大会”暨“铸基计划”年度会议在北京成功召开。 本次大会发布了2024年度行业数字化转型趋势,总结并展望了“铸基计划”2023年取得的工作成果及2024年的工作规划。同时&#…...

Workerman开启ssl方法如下

参考地址 Workerman开启ssl方法如下-遇见你与你分享 准备工作: 1、Workerman版本不小于3.3.7 2、PHP安装了openssl扩展 3、已经申请了证书(pem/crt文件及key文件)放在了/etc/nginx/conf.d/ssl下 4、配置文件 location /wss { proxy_set…...

如何防止服务器被攻击

如何防止服务器被攻击 第1步:切断网络; 服务器的攻击来源都必须通过互联网,一旦切断网络,它们就失去了攻击的入口,你可以通过切断网络的方式,以最快的速度切断攻击源,保护服务器所在网络的其他主机服务器。…...

18 统计网站每日的访问次数

1.将竞赛的数据上传HDFS,查看数据的格式 通过浏览器访问hdfs,查看该文档前面的部分数据 每条数据的字段值之间使用逗号隔开的 ,最终时间是第五个自动,获取第五个字段值的中的年月日。 2.通过Idea创建项目mr-raceData ,基础的配置 修改pom.xml,添加依赖 …...

Java PDF文件流传输过程中速度很慢,如何解决?

专栏集锦,大佬们可以收藏以备不时之需: Spring Cloud 专栏:http://t.csdnimg.cn/WDmJ9 Python 专栏:http://t.csdnimg.cn/hMwPR Redis 专栏:http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏:http://t.csdni…...

MCU最小系统晶振模块设计

单片机的心脏:晶振 晶振模块 单片机有两个心脏,一个是8M的心脏,一个是32.768的心脏 8M的精度较低,所以需要外接一个32.768khz 为什么是8MHZ呢,因为内部自带的 频率越高,精度越高,功耗越大&am…...

ELK及ELFK排错

目录 一、ELK及ELFK排错思路 1.1filebeat侧排查 1.2logstash侧排查 1.3ES、kibana侧问题 一、ELK及ELFK排错思路 1.1filebeat侧排查 第一步:排查filebeat上的配置文件有没有写错,filebeat的配置文件是yml文件,一定要注意格式。 第二步…...

『Django』创建app(应用程序)

theme: smartblue 本文简介 点赞 关注 收藏 学会了 在《『Django』环境搭建》中介绍了如何搭建 Django 环境,并且创建了一个 Django 项目。 在刚接触 Django 时有2个非常基础的功能是需要了解的,一个是“app”(应用程序),另一个是 url(路由…...

Docker安装(一)

一、安装Docker 服务器系统:centos 7 1.本地有docker的首先卸载本机docker yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \dock…...

由于bug发现的现象

//********************************* 示例1 ******************************* $flag (float)2; var_dump($flag); if ($flag 2) { } var_dump($flag);//输出结果 float(2) int(2)//********************************* 示例2 ******************************* $flag (floa…...

ES源码四:网络通信层流程

听说ES网络层很难?今天来卷它😄 前言 ES网络层比较复杂,分为两个部分: 基于HTTP协议的REST服务端基于TCP实现的PRC框架 插件化设计的网络层模块(NetworkModule) 入口还是上一章的创建Node构造方法的地方…...

贝锐蒲公英自研异地组网新技术:远程视频监控,流畅度、清晰度大幅提升

在远程视频监控过程中,若遇到网络带宽若遇到网络波动,如:丢包、高延迟等,往往会导致视频流传输时发生数据丢失或延迟现象,从而严重影响视频画面的清晰度和流畅度。 比如:在公司总部集中监看远程矿山或户外水…...

C# aspose word实现模板方式打印及打印速度慢解决方法

1.引用dll nuget或者网上都有下载的方式。不过都要收费。下载地址:https://files.cnblogs.com/files/rolayblog/Tool.zip?t1713322422&downloadtrue 2.打印模板设计 新建一个doc文档,根据自己的需求画页面。 A、普通文本 在word中需要替换值的地方添…...

java纯文字游戏

java纯文字小游戏 package Test2;import java.util.Random;public class Role {private String name ;private int blood;private char gender;private String face;public Role() {}public Role(String name, int blood) {this.name name;this.blood blood;}public String …...

mac IDEA激活 亲测有效

1、官网下载mac版本IDEA并安装 2、打开激活页面 3、下载脚本文件 链接: https://pan.baidu.com/s/1I2BqdfxSJv1A96422rflnA?pwdm494 提取码: m494 4、命令行到该界面,执行 sudo bash idea.sh 可能出现的问题: 查看sh文件,targetFilePath…...

视频怎么去水印,轻松去视频水印的方法

视频水印是为了提高视频的版权保护能力,防止视频被盗用或者不正当使用,但另一方面会破坏视频的流畅度和清晰度,很影响视觉观感和后续创作。想要去除视频水印,下面三种方法你必须得知道,赶紧看过来~ 1、使用美图秀秀(A…...

vue3+element+AntDesign(自动导入)+pina+vite+js+pnpm搭建项目框架

vue3elementAntDesign(自动导入)pinavitejspnpm搭建项目框架 文章目录 vue3elementAntDesign(自动导入)pinavitejspnpm搭建项目框架1. 安装pnpm:通过以下命令安装pnpm,它是一个快速、零配置的包管理工具。2. 初始化项目:在命令行中执行以下命…...

Android Studio XML 预览View 底部移动到右边

以前 XML 的预览都是在右边的,最近不知道为什么突然到下面去了,很不习惯 找半天想把 预览view 移动到右边,一直没找到按钮。 误打误撞移回来了,原来只要再点击一次 split,就可以变动位置了,记录一下。...

计算机网络——实现smtp和pop3邮件客户端

实验目的 运用各种编程语言实现基于 smtp 协议的 Email 客户端软件。 实验内容 1. 选择合适的编程语言编程实现基于 smtp 协议的 Email 客户端软件。 2. 安装 Email 服务器或选择已有的 Email 服务器,验证自己的 Email 客户端软件是否能进行正常的 Email 收发功…...

【Spring】面试题汇总

Spring1. 什么是 Spring 框架?2. 谈谈你对于 Spring IoC 的了解3. 什么是依赖注入4. Spring的依赖注入有几种方式5. 将一个类声明为 Bean 的注解有哪些?6. Component 和 Bean 的区别是什么?7. 注入 Bean 的注解有哪些?8. Bean 的作用域有哪些?9. Bean…...

thinkphp6入门(23)-- 如何导入excel

1. 安装phpexcel composer require phpoffice/phpexcel composer update 2. 前端 <form class"forms-sample" action"../../xxxx/xxxx/do_import_users" method"post" enctype"multipart/form-data"><div class"cont…...

【数据结构3-栈和队列】

数据结构3-栈和队列 1 栈-特殊的线性表-先进后出1.1 栈的三个案例 2 队列-与栈相反-先进先出2.1 队列的案例 3 用C实现栈的代码&#xff1a;4 用C实现队列的代码 1 栈-特殊的线性表-先进后出 1.1 栈的三个案例 2 队列-与栈相反-先进先出 2.1 队列的案例 3 用C实现栈的代码&…...

STL--list双向链表

功能 将数据进行链式存储 链表&#xff08;list&#xff09;是一种物理存储单元上非连续的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接实现的 链表的组成&#xff1a;链表由一系列结点组成 结点的组成&#xff1a;一个是存储数据元素的数据域&#xff0…...

ElasticSearch入门篇

简介 ElasticSearch简介&#xff1a;简称为es&#xff0c; es是一个开源的高扩展的分布式全文检索引擎&#xff0c;它可以近乎实时的存储、检索数据&#xff1b;本身扩展性很好&#xff0c;可以扩展到上百台服务器&#xff0c;处理PB级别的数据。es也使用Java开发并使用Lucene…...

MAXHUB会议解决方案持续进化,以“高效”为核心推动行业发展

4月16日&#xff0c;MAXHUB 2024新品发布会在视源股份&#xff08;002841&#xff09;北京产业园圆满举行。本次发布会以“智会融合 进化不止”为主题&#xff0c;首发MAXHUB高效会议解决方案&#xff0c;以AI智能、开放兼容、场景化交付为方向&#xff0c;为用户提供高效、便捷…...

CentOS 7安装Redis

说明&#xff1a;本文介绍如何在CentOS 7操作系统下安装Redis 下载安装 首先&#xff0c;去官网上下载所需要安装的版本&#xff0c;官网地址&#xff1a;https://download.redis.io/releases/&#xff0c;我这里下载3.2.1版本的 下载完&#xff0c;上传到云服务器上&#xf…...

做旅游网站图片哪里找/网站秒收录工具

目录RedisRedis特点单线程PK多线程C#使用redis数据类型Windows--RedisStringHashTableSetZSetList分布式异步队列&#xff1a;12306买票&#xff1a;发布订阅模型&#xff1a;Redis REmote Ditionary Server 远程字典服务器&#xff1a;基于内存存储—速度快&#xff1b; 对外提…...

B2C网站开发工程师招聘/班级优化大师下载安装最新版

世界各地的企业都在担忧网络安全威胁问题&#xff0c;特别是每天看到大量窃取信息和知识产权的网络入侵报告&#xff0c;以及新型漏洞利用方法的兴起&#xff0c;包括勒索软件、高级持续性威胁和内部威胁等。 让问题更严重的是当前快速变化的运营环境&#xff0c;包括云计算、物…...

域名备案查询网站/市场营销的策划方案

先看效果个人觉的是比较好用的 1、视频播放器的左上角&#xff0c;按照操作步骤&#xff0c;选择使用direct3D 9 2、右击视频播放器&#xff0c;找到 选项 按钮&#xff0c;点击 3、弹框&#xff0c;点基本&#xff0c;多重处理方式中的 单个进程即选即播 4、选择 播放--“时…...

wordpress改变域名/抖音黑科技引流推广神器

&#xfeff;&#xfeff;Android ImageView的setImageLevel和level-list使用简介在Android开发中&#xff0c;有时候需要对一个ImageView设置很多不同图片以表示某种应用状态&#xff0c;比如&#xff0c;典型的是手机的信号强度从强到弱有多种状态图&#xff1b;wifi有解锁和…...

四川建设工程招标网/天津seo诊断技术

android 获取IMEI号 android 获取 imei号码 核心代码: Imei ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)).getDeviceId(); 1.加入权限 在manifest.xml文件中要添加 <uses-permission android:name"android.permission.READ_PHONE_STATE" /> 2.代…...

怎么建立一个网站链接/竞价托管怎么做

与类有关的系统函数&#xff1a; class_exists(“类名”), 判断一个类是否存在&#xff08;是否定义过&#xff09; interface_exists(“接口名”), 判断一个接口是否存在&#xff08;是否定义过&#xff09; get_class( $obj ), 获得某个对象$obj 的所属类 get_parent_class($…...