相机标定笔记(1) -- 相机模型

news2024/11/19 0:47:38

什么需要相机标定

         我们知道,相机的图像是三维世界到2D平面的一个投影。仅从这个2D图像来看,我们无法得知图像中的物体在真实物理世界中有多大,距离相机的距离有多远。那么我们有没有办法从这个2D的图片结合相机的参数获得这些信息呢?答案是有的,方法有很多种,比如双目视觉技术,可以用来恢复三维信息。

        如何恢复精确的3D物体?图像失真(比如镜头畸变)了如何恢复?

        先用数学表达式描述对相机成像过程建模,然后通过数学表达式计算恢复这些信息。

相机标定主要解决的问题

        确定世界坐标系下三维空间点与像素平面像素点之间的转换关系(内参,外参)

        确定相机成像过程中的畸变系数,用作图像校正

相机模型

镜头

        镜头一般是由多片透镜组成,里面会有凹透镜、凸透镜等多种透镜,结构复杂。但在实际分析中,我们会将镜头做等效分析,将复杂的透镜组等效为一个凸透镜,对光线有汇聚作用。因此,先来看凸透镜的一些基本知识点。

薄凸透镜

        边缘薄中间厚,对光线有汇聚作用。

        主光轴: 过透镜两个表面曲率中心的直线。

        光心:薄透镜的中心(厚度趋于0时,两个表面顶点重合于光心)

        特点:1. 经过物点,平行于光轴的光线,经过凸透镜后,会经过焦点

                   2. 经过物点和光心的光线,经过凸透镜后,方向不变

                   3. 经过物点和物体侧焦点的光线,经过凸透镜后,平行于光轴射出

         上图中,Q点和P点这两点,实际上有多条光线发出。为了简化相机成像过程,我们用通过光心的光路来代表成像光路,如下图所示:

         但这个简化过程需要做几个假设:

        1. 假设没有像差;2. 不考虑景深(能够在成像面上清晰成像);3. 透镜为一个薄凸透镜

        这种简化的相机成像模型称为针孔相机模型

成像过程中的坐标系及坐标系转换

        关于本小节,在“几何角度理解相机成像过程”的笔记中已经有了描述,链接如下:

几何角度理解相机成像过程_亦枫Leonlew的博客-CSDN博客本笔记从几何角度来理解相机的成像过程,我们生活在三维世界中,相机所捕捉到的画面是2D的,3D空间中的点是如何投影到2D平面的过程是本笔记关注的。这个过程其实和3D游戏中的透视投影过程是一样的。本笔记只要知道矩阵乘法的知识就可以理解。https://blog.csdn.net/vivo01/article/details/128252788?spm=1001.2014.3001.5502

        这里只复习一下几个要点。

        世界坐标系:以被测物体的点作为参考定义的绝对坐标系。坐标记为(Xw,Yw,Zw)。

        相机坐标系:以相机光心为坐标原点,主光轴物方交点方向为z轴,平行于(虚拟)成像平面的两条垂直边分别为x和y轴。坐标记为(Xc,Yc,Zc)。

        图像坐标系:以主光轴与(虚拟)成像平面的交点为坐标原点,平行于(虚拟)成像平面的两条垂直边分别为x和y轴。坐标记为(x,y)。

        像素坐标系:以(虚拟)成像平面左上角顶点为原点,u和v轴平行于图像系的x和y轴,以像素为单位。坐标记为(u,v)。

        为什么引入虚拟成像面?以点P为例,其在实际成像面上的坐标和虚拟成像面的坐标是反的,虚拟成像面上的点Pv方向和世界坐标系上的方向是一致的,而实际成像面上的点Pr是倒置的。引入虚拟成像面后,在计算坐标系转换和投影时,就不用考虑符号问题了。

        

镜头畸变

        畸变原因:理想的成像点与实际成像点并不重合,存在像差。畸变是单色光学像差中的一种,也是唯一不会改变成像清晰度的像差(球面相差就会改变图像清晰度)。

        不同波长的光畸变曲线不同。透镜的畸变主要分为径向畸变和切向畸变。

径向畸变

        一般分为:枕形畸变(正畸变)和桶形畸变(负畸变)

        越向透镜边缘移动,径向畸变越严重,呈中心对称

 

         这里的正和负的意思,是指理论像高和实际像高之间的差值正负,如上图所示。

切向畸变

        由于透镜和sensor之间安装位置误差,导致透镜和成像平面无法严格做到平行所引发的畸变。一般是由于工艺导致。

         上图,从左到右分别是无切向畸变、sensor位置误差导致的切向畸变和镜头位置误差导致的切向畸变。

畸变数学模型

径向畸变模型(k3为例,opencv中会用到k6)

 切向畸变模型

径向畸变和切向畸变模型合并

  注意,为了消除畸变系数的尺度因子,坐标点和r规定是在单位焦平面上的坐标。单位焦平面是指f=1时的物方焦平面。

标定建模

数学模型

        结合针孔相机模型 + 镜头畸变,相机标定模型的建立过程:

 标定的数学模型

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

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

相关文章

ElasticSearch-全文检索

docker 下载安装 #es镜像 docker pull elasticsearch:7.4.2 #es的可视化工具 docker pull kibana:7.4.2mkdir -p /mydata/elasticsearch/config mkdir -p /mydata/elasticsearch/dataecho "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsear…

2023年北京/成都/南宁山东DAMA-CDGA/CDGP数据治理工程师认证报名

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

制造业ERP软件如何破解企业质量管理难题?

随着生产制造企业的快速发展,产品的好坏,在很大程度上取决于产品制造的质量管理水平,其水平的高低直接对应产品的竞争力。许多企业都面临着质量管控能力不足、质量检验数据记录不全、部分物料追溯困难等问题,一旦企业的产品出现质…

异步请求池的实现

异步请求池 两种请求模式 pipline请求:A在一个连接上打包多个请求发送给B,B将这些请求的结果打包返回异步请求:A一个连接一个请求,并创建一个线程检查发送的所有请求是否有结果返回(借助epoll)&#xff0…

F280049C Buffered Digital-to-Analog Converter (DAC)

目录DAC15.1 Introduction15.1.1 Features15.1.2 Block Diagram15.2 Using the DAC15.2.1 Initialization Sequence 初始化顺序15.2.2 DAC Offset AdjustmentDAC偏移调整15.2.3 EPWMSYNCPER Signal EPWMSYNCPER信号15.3 Lock Registers总结代码配置 driverlib代码配置 bitfield…

Blender和C4D有哪些不同?选Blender还是C4D?

众所周知,Blender和Cinema 4D是美术界最著名的两个名字。在比较这两款软件的时候,我们要仔细的看不同的方面。因此,您如何知道使用哪一个以及每个的关键方面是什么,例如渲染、建模、社区等等!Cinema 4D 是那些希望在电…

Doris(五)-监控、报警、优化、数据备份及恢复

目录1、监控和报警1.1、Prometheus1.2、Grafana2、优化2.1、查看 QueryProfile2.1.1、使用方式2.1.2、参数说明2.1.3、调试方式2.2、 Join Reorder2.2.1 原理2.2.2 示例2.3 Join 的优化原则2.4 导入导出性能优化2.4.1 FE 配置2.4.3 性能分析2.4.4 Broker 导入大文件2.5 Bitmap …

sharepoint 配置app id secret 用postman上传文件

配置APP ID 第一部是配置APPID,可以访问 https://{tenantName}.sharepoint.com/_layouts/15/appregnew.aspx 或者访问具体某个页面下的 https://{tenantName}.sharepoint.com/sites/testUpload/_layouts/15/appregnew.aspx 点击生成即可生成客户端的id和secret ti…

kubernetes控制器之StatefulSet

目录 一、无状态与有状态 1.1无状态 1.2有状态 二、StatefulSet 控制器 2.1 StatefulSet 控制器概述 2.2StatefulSet 控制器:网络标识 2.3StatefulSet 控制器:独享存储 一、无状态与有状态 Deployment控制器设计原则: 管理的所有Pod一…

TiDB丨Etcd API 未授权访问漏洞的修复

文章目录一、前言二、集群环境三、漏洞整改建议方案一方案二四、方案实施五、可能存在的风险六、总结一、前言 Etcd是一个采用HTTP协议的健/值对存储系统,它是一个分布式和功能层次配置系统,可用于构建服务发现系统。用于共享配置和服务发现的分布式&am…

KubeEdge云原生边缘计算公开课03——云原生边缘计算学术研究现状与趋势

KubeEdge云原生边缘计算公开课03——云原生边缘计算学术研究现状与趋势曹建农:Collaborative Edge ComputingEdge Computing: the Driven force of AIoTThe Emergence of AIoTEdge ComputingCurrent Research on Edge ComputingComputation at EdgeIntelligence at …

MCU-51:LED点阵屏

之前我们介绍了控制LED灯亮灭的操作,今天我们要介绍一下控制LED点阵屏亮灭的操作,8*8的LED点阵屏,可以理解为八行或者八列LED灯的一个组合,可以使用它来显示一些字体与图案。 一、点阵屏介绍 1.1 简介 LED点阵屏由若干个独立的…

八、购物车案例

一、购物车案例 1.1、使用npm i命令&#xff0c;安装依赖 1.2、编写页面布局 App.vue <template><div class"app-container"><Header></Header><Goods></Goods><Footer></Footer></div> </template>…

【直播教程】直播间没人看?5大技巧教你提升!

直播是连接店铺、品牌、产品和消费者之间的桥梁。人是视觉动物&#xff0c;店铺的产品、团队和服务是后端的内容&#xff0c;产品再好&#xff0c;团队再强大&#xff0c;前端的消费者看不到&#xff0c;背后的努力都是徒然。所以&#xff0c;在粉丝对店铺、对品牌不熟悉的情况…

CouchDB(1):apache CouchDB介绍与安装

1 apache CouchDB介绍 Apache的CouchDB是⼀个免费的开源的数据库。 官网&#xff1a;https://couchdb.apache.org/ 其主要特点如下&#xff1a; 1.schema free &#xff08;不需要提前设计表&#xff09;2.documented oriented &#xff0c; json structure data(⾯向⽂档)3…

openresty配置资源访问控制

openresty配置资源访问控制 介绍 我们这的需求是&#xff0c;arcgis server发布了很多图层数据&#xff0c;这些数据需要被用户申请后才能访问。申请后给用户一个地址和key&#xff0c;让用户可以用key和地址访问地图资源。 这里我准备使用openresty和认证服务&#xff08;j…

电商API接口开发系列,亲测有效,请求示例说明

在电商运营活动中&#xff0c;价格是贯穿始终的关键因素&#xff0c;而品牌方有效利用价格数据也能够推动企业更好的发展。 当品牌方能够精准获取商品的到手价时&#xff0c;有利于做好商品的定价复盘工作、后续的价格分析工作&#xff0c;也能够为后面的调价作参考&#xff1…

分享| 如何在自有App中引入小游戏?

之前有跟大家分享过ios系统上引入FinClip SDK&#xff0c;并将小程序游戏运行到自有App 中&#xff0c;这周就继续分享如何在Android系统中引入FinClip SDK。 近期FinClip 官方正在举行小游戏支持的功能内测&#xff0c;有兴趣的朋友可以去看看。手动指引&#xff1a;小游戏内…

多寄存器内存访问指令与栈

目录 一、多寄存器内存访问指令 二、多寄存器内存访问指令的寻址方式 三、栈的种类与使用 3.1栈的概念 3.2栈的分类 四、栈的应用举例 4.1叶子函数的调用过程举例 4.2非叶子函数的调用过程举例 一、多寄存器内存访问指令 MOV R1, #1 MOV R2, #2 MOV R3…

什么是物联网安全?

物联网安全是专注于保护物联网中连接的设备和网络的技术领域。物联网涉及将互联网连接添加到相互关联的计算设备、机械和数字机器、物体、动物或人的系统中。每个“事物”都提供了一个唯一的标识符以及通过网络自动传输数据的能力。如果设备没有得到适当的保护&#xff0c;允许…