为什么需要对相机标定?

news2024/12/24 22:11:58

以下内容来自系统教程如何搞定单目/鱼眼/双目/阵列 相机标定?

点击领取相机标定资料和代码

为什么需要对相机标定? 我们所处的世界是三维的,而相机拍摄的照片却是二维的,丢失了其中距离/深度的信息。从数学上可以简单理解为,相机本身类似一个映射函数,其将输入的场景,通过某种关系映射为一张RGB图片,即 file 而相机标定,就是使用数学模型和数学方法来近似逼近这一复杂映射函数的过程。标定后的相机即具有了描述这一过程的能力,从而可以用于各种计算机视觉的任务,如深度恢复、三维重建等,本质上都是对丢失的距离信息的恢复。 file 为什么说是逼近,因为我们永远也不可能百分之百得知一个真实的相机是如何投影图像的

相机标定到底在标什么? 机器视觉中,需要标定的应用场景可以简单分为如下几类:

单目视觉应用,如单帧测距、车载 ADAS 辅助、单目SLAM等 这类应用,我们通常需要相机自身的成像模型参数以及相机相对某个坐标系下的相对位姿。

比如下图简单场景,我们知道相机的朝向以及和地面的高度,就可以大致估计出相机某个像素对应物体的距离(物体高度已知或贴近地面) file 这种模型在一些简单的车载的任务上比较常见,比如推测前车距离

再如工业上比较常见的机器人控制,需要构建机器人坐标系和其视觉坐标系之间的相对位置关系(也就是手眼标定) file 再比如单目深度恢复,一些传统的单目深度恢复通常使用固定尺寸的物体作为标志物,之后移动物体,通过相机中物体大小来判断实际的拍摄距离。 file 再比如大家熟知的一些SLAM方法 file 目前有一些自监督的深度学习方法也会使用相对姿态信息作为监督,比如最近的 ManyDepth: file 双目/多目/RGB-D组合 这类应用更加常见,我们需要获取相机自身信息,以及各个相机之间的相对位姿关系,有时也需要获取其和某固定坐标系之间的关系,举几个例子:

如车载全景环视(图片来自网络) 我们需要获取四个相机相对位姿以及其和地面坐标系的关系,才能得到最终的全景拼接结果(图片来自网络)。

再如AR应用 file 或者更复杂的相机阵列 file 标定方法简述 目前相机标定方法主要分为三类: file 而传统相机标定中张正友标定法仅使用一个规格已知的平面标定板进行标定,制作成本较低,因此是目前主流的标定方案。

张正有标定操作步骤 张正友标定方案使用平面标志物,通常是规整的棋盘格或者点阵图,如下 file 当然,通常情况下为了方便区分图片中棋盘格朝向,我们一般使用宽高不同的棋盘格。

将标志物打印后,使用待标定相机拍摄不同角度多组标定图案 file ,三张图片就可以完成标定,但是为了减小标定误差,拍摄图片会稍微多一些

标定图案需要保证平整 每张图片中标志物尽量占据画面1/4以上,不同标定板角度尽量存在一个相对明显的旋转和平移 拍摄时应尽量保证相机参数不变 这里主要是焦距不变,焦距变化会导致部分fov变化,从而影响几乎全部的标定参数。当然,大多数场景中相机本身焦距都是固定的,而消费级,如手机镜头由于其本身畸变不大,且焦距较短,因此影响会比较小。

拍摄图案的总和需要覆盖整个画面 由于圆点在模糊情况不会改变其中心点位置,精度理论上会更好一些

拍摄图案的总和需要覆盖整个画面 我们知道标定本身可以理解为一个拟合各个像素位置成像的过程,如果覆盖不完全,就会导致某些区域像素处于无约束状态,从而出现标定错误。我们常见的图片去畸变后边缘扭曲大多是该原因导致的。

使用标定工具进行标定计算 不同标定板的优缺点 以下部分图片来自数据来自文章 Accurate camera calibration using iterative refinement of control points

file 棋盘格本身存在角点检测不精确的问题 file 如角点边缘并不一定满足正交的要求,而这是亚像素角点提取的一种要求。

圆点检测更精确,但是会存在偏心误差 file AprilTag 如果部分被遮挡也是可用的 file 以上内容来自系统教程如何搞定单目/鱼眼/双目/阵列 相机标定?

本文由博客一文多发平台 OpenWrite 发布!

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

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

相关文章

Peppol网络对接流程

Peppol 代表泛欧在线公共采购,现在连接到 Peppol 的组织可以通过高度安全的国际网络交换商业文件。知行软件通过了 PEPPOL 的 AS2 及 AS4 测试,被 OpenPEPPOL AISBL 正式认证为 PEPPOL 接入点供应商。可以在Peppol查询到相关接入点信息,如下&…

TH9-搭建后台系统

TH9-搭建后台系统1、项目架构1.1 概述1.2 API网关1.2.1 搭建网关依赖引导类跨域问题配置类配置文件1.2.2 配置鉴权管理器1.3 Nacos配置中心1.3.1 添加依赖1.3.2 添加bootstrap.yml配置1.3.3 nacos添加配置2、后台系统2.1 概述2.2 环境前端搭建2.2.1 导入数据库2.2.2 导入静态页…

MYSQL-INNODB索引构成详解

作者:郑啟龙 摘要: 对于MYSQL的INNODB存储引擎的索引,大家是不陌生的,都能想到是 B树结构,可以加速SQL查询。但对于B树索引,它到底“长”得什么样子,它具体如何由一个个字节构成的&#xff0c…

插入排序

目录 插入排序 思路: 原理视频: 代码: 时间复杂度: 总结: 题目链接: 插入排序 题目描述: 插入排序基本思想是每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。 输入N个整数,将它们从…

【设计模式】代理模式(Proxy Pattern)

代理模式属于结构型模式,当一个对象不处于相同内存空间时、创建开销大时、需要进行安全控制时或需要代理处理一些其他事物时可以使用代理模式。代理模式通过为另一个类提供一个替身类来控制对这个类的对象的访问。 文章目录代理模式的介绍代理的分类:优点…

了解CloudCompare软件

CloudCompare是一款基于GPL开源协议的3D点云处理软件, 打开一个点云; 按住鼠标拖动旋转会出现坐标轴; 如果选中 TLS/GBL, 会出来右边这个线框,可以一起旋转;查了一下,TLS/GBL似乎是地面激光雷达…

2022年国际工程行业研究报告

第一章 行业概况 国际工程是指一个工程项目从咨询、投资、招投标、承包(包括分包)、设备采购、培训到监理各个阶段的参与者来自不止一个国家,并且按照国际工程项目管理模式进行管理的工程。国际工程是一种综合性的国际经济合作方式,是国际技术贸易的一种…

了解Linux内核内存映射

【推荐阅读】 深入linux内核架构--进程&线程 路由选择协议——RIP协议 轻松学会linux下查看内存频率,内核函数,cpu频率 纯干货,linux内存管理——内存管理架构(建议收藏) 概述Linux内核驱动之GPIO子系统API接口 一. 内存映射原理 由于所…

shadow阴影属性

shadow阴影属性 盒子阴影CSS中新增了盒子阴影,我们可以使用box-shadow属性为盒子添加阴影 源代码 box-shadow: h-shadow v-shadow blur spread color inset; h-shadow 必需,水平阴影的位置,允许负值 v-shadow…

AI 揭晓答案,2022世界杯冠军已出炉

卡塔尔世界杯,究竟谁能捧起大力神杯,就让我们用机器学习预测一下吧! 文章目录数据源技术提升数据集构建功能开发数据分析模型世界杯模拟结论数据源 为了构建机器学习模型,我们需要来自团队的数据。首先需要一些能够说明球队表现的…

Java学习之多态参数

目录 多态参数 父类-Employee类 子类-Worker类 子类-Manager类 Test类-要求1 main类-PolyParameter 在main类中调用Test类的showEmpAnnual(Employee e) 方法 运行结果 Test类-要求2 代码 main方法内调用 分析 运行结果 多态参数 方法定义的形参类型是父类&#xff0…

青竹画材创业板IPO被终止:年营收4.15亿 文投基金是股东

雷递网 雷建平 12月8日河北青竹画材科技股份有限公司(简称:“青竹画材”)日前IPO被终止。青竹画材曾计划募资4.1亿元,其中,3.08亿元用于美术画材产能扩建项目,2317.35万元用于研发中心项目,7966…

Selenium+python常见问题,闪退,找不到元素

1、闪退问题: 由于缺少浏览器对应驱动。谷歌:chromedriver驱动;火狐:geckodriver驱动 查看Chrome版本 查找Chrome和ChromeDriver的对应关系 打开Chrome,在设置 – 关于Chrome下载对应ChromeDriver ChromeDriver下载…

本地存储:localStorage,sessionStorage,和cookie。区别

localStorage: 特点: 永久存储支持跨页面通讯,也就是在其他页面同样可以获取到你存好的数据。只能存储字符串类型的数据,不能存储复杂数据类型 sessionStorage: 特点: 临时存储,会话级别&am…

68. 关于 SAP ABAP 报表的多语言显示问题

文章目录 SAP 标准程序的多语言显示支持自开发 Screen 的字段,如何实现多语言显示呢?总结最近一个朋友向我发起知乎咨询,询问 SAP ABAP 报表的字段文本,到底是存储在哪些数据库表里的。 随着后来笔者同这位朋友的深入沟通,得知这位朋友询问的问题背后,实际上包含了一个重…

Windows系统还原失败该怎么办?

系统还原是Windows系统中一个强大的实用程序,它允许您将系统回退到以前的时间点及状态。该功能可以用来撤销对系统所做的一系列更改,比如,当您执行了驱动程序的更新后,计算机出现了异常,您就可以通过系统还原的操作将系…

【微服务】1、一篇文章了解 Eureka 注册中心(理论加代码)

Eureka 的作用和案例使用一、Eureka 的作用(注册中心)二、Eureka 代码(1) 搭建 Eureka 注册中心① 创建项目,引入 spring-cloud-starter-netflix-eureka-server 依赖【eureka 服务端依赖】② 编写 eureka 服务端启动类(启动类添加…

WSO2使用Jenkins进行CI/CD

WSO2使用Jenkins进行CI/CD1. Tool Install1.0 Port 1.1 wso2 Install 1.2 Tool Install(git/vim/jenkins)2. Jenkins CI/CD2.1 Apictl Command2.1 Apictl Command5.2.1 Setting up the environment5.2.2 Setup repository5.2.3 Setup JFrog Artifactory5.2.4 Configure Jenkins…

计算机网络复习(四)

4-15.一个3200位长的TCP报文传到IP层,加上160位的首部后成为数据报。下面的互联网由两个局域网通过路由器连接起来。但第二个局域网所能传送的最长数据帧中的数据部分只有1200位。因此数据报在路由器必须进行分片。试问第二个局域网向其上层要传送多少比特的数据&am…

JavaScript进阶教程——原始类型与引用类型、对象拷贝(克隆)

文章目录序原始类型与引用类型基本概念两种类型的区别赋值比较函数传参对象拷贝对象克隆的使用场景:对象拷贝的分类:浅拷贝深拷贝序 解决JavaScript中比较烧脑的问题: 原始类型与引用类型闭包原型对象this关键字bind、apply、call异步编程 …