计算机视觉之三维重建(2)---摄像机标定

news2024/11/24 4:53:57

文章目录

  • 一、回顾线代
    • 1.1 线性方程组的解
    • 1.2 齐次线性方程组的解
  • 二、透镜摄像机的标定
    • 2.1 标定过程
    • 2.2 提取摄像机参数
    • 2.3 参数总结
  • 三、径向畸变的摄像机标定
    • 3.1 建模
    • 3.2 求解
  • 四、变换
    • 4.1 2D平面上的欧式变换
    • 4.2 2D平面上的相似变换和仿射变换
    • 4.3 2D平面上的透射变换
    • 4.4 3D平面上的欧式变换
    • 4.5 3D平面上的仿射变换
    • 4.5 3D平面上的透射变换


一、回顾线代

1.1 线性方程组的解

 对于线性方程组 A x = y Ax=y Ax=y,当矩阵 A A A 列满秩情况时:(1) 行数(方程数)小于未知数个数,欠定方程组,多解。(2) 行数(方程数)等于未知数个数,唯一解。(3) 行数(方程数)大于未知数个数,超定方程组,无解。

在这里插入图片描述

1.2 齐次线性方程组的解

  对于线性方程组 A x = 0 Ax=0 Ax=0,当矩阵 A A A 列满秩情况时:(1) 行数(方程数)小于未知数个数,欠定方程组,多解。(2) 行数(方程数)等于未知数个数,只有零解。(3) 行数(方程数)大于未知数个数,超定方程组,除零解外无解。

在这里插入图片描述

二、透镜摄像机的标定

2.1 标定过程

 1. 摄像机标定,即求解摄像机的内、外参数矩阵。摄像机的内、外参数矩阵描述了三维世界到二维像素的映射关系。

 2. 首先对于摄像机标定问题,约定像素坐标平面的点用 p p p 表示(不再用 P ′ P' P 表示),世界坐标系的点用 P P P 表示(不再用 P w P_w Pw 表示)。

在这里插入图片描述

 3. 当我们已知多个位置的对应关系时,那我们的目标就是根据这些点对应关系求出摄像机的内、外参数。

在这里插入图片描述

 4. 投影矩阵 M M M 3 × 4 3×4 3×4 的矩阵,我们写成如下的形式,则 m 1 , m 2 , m 3 m_1,m_2,m_3 m1,m2,m3 都是 1 × 4 1×4 1×4 的矩阵。
在这里插入图片描述

 那么像素坐标系的一个点 p i p_i pi 就可以定义为:

在这里插入图片描述

 4. 下面公式是将任意一个像素坐标系上的点,通过等式变换得到一个齐次线性方程,而多个点对又可以构成齐次线性方程组。
 摄像机投影矩阵有11个自由度(未知量)。由于每一个二维点在像素坐标系下为两个值,那么对于11个未知量来说最少需要12个方程来进行求解(由于像素坐标系下点的两个横纵坐标成对出现),那么就需要六对点来对应,但实际应用中一定是使用多于六对点来对应,通过最小二乘法消掉一部分错误的噪声点对,可以获得更好的鲁棒性效果。
 大多数情况下,生成的齐次线性方程数是远大于11的,方程数大于未知参数,齐次线性方程组为一个超定方程组,所以可以用齐次线性方程组的最小二乘法求解方法来求解同样的问题。

在这里插入图片描述

在这里插入图片描述

2.2 提取摄像机参数

 1. 将下面的投影矩阵展开,左一列为 3 × 3 3×3 3×3 的矩阵,右一列为 3 × 1 3×1 3×1 的向量,合起来投影矩阵为一个 3 × 4 3×4 3×4 的矩阵,由于通过齐次线性方程组的最小二乘法求解内外参数,从而导致真正的投影矩阵和求的投影矩阵之间存在一个比例系数 ρ ρ ρ 的关系,所以,括号里的为真实的投影矩阵(未知), M M M 为求解得到的投影矩阵。

在这里插入图片描述

 2. 我们把求解得到的投影矩阵 M M M 写成 [ A , b ] [A,b] [A,b] A A A 就是前三列, b b b 是最后一列,所以 ρ A = K R ρA=KR ρA=KR
A A A b b b 都是已知的。

在这里插入图片描述

 3. 旋转矩阵中每一行的模都是1,所以可以得到以下的结论。利用 ρ a 1 T ⋅ ρ a 3 T ρ{a_1}^T · ρ{a_3}^T ρa1Tρa3T ρ a 2 T ⋅ ρ a 3 T ρ{a_2}^T · ρ{a_3}^T ρa2Tρa3T 可以求出 u 0 u_0 u0 v 0 v_0 v0:点乘。

在这里插入图片描述

 4. 利用 ρ a 1 T × ρ a 3 T ρ{a_1}^T × ρ{a_3}^T ρa1T×ρa3T ρ a 2 T × ρ a 3 T ρ{a_2}^T × ρ{a_3}^T ρa2T×ρa3T 可以求出下面图中的式子。:叉乘。

在这里插入图片描述

 5. 由上面的式子可以得到 α α α β β β 的表达式。再将 ρ 2 ( a 1 × a 3 ) ρ^2(a_1 × a_3) ρ2(a1×a3) ρ 2 ( a 2 × a 3 ) ρ^2(a_2 × a_3) ρ2(a2×a3) 进行点乘,然后带入 α α α β β β 的表达式可以得到关于 θ θ θ 的表达式。

在这里插入图片描述

在这里插入图片描述

 (1) 此时我们也可以令 θ = 90 ° θ=90° θ=90° c o s θ cosθ cosθ 为0,满足零倾斜透视情况,那么分子 ( a 1 × a 3 ) ⋅ ( a 2 × a 3 ) (a_1 × a_3) · (a_2 × a_3) (a1×a3)(a2×a3) 为0,满足Faugeras定理中的第二条零倾斜透视矩阵性质。

 (2) 我们令 α = β α=β α=β 那么一定满足 α α α 的平方等于 β β β 的平方,即 ( a 1 × a 3 ) ⋅ ( a 1 × a 3 ) = ( a 2 × a 3 ) ⋅ ( a 2 × a 3 ) (a_1 × a_3) · (a_1 × a_3)= (a_2 × a_3) · (a_2 × a_3) (a1×a3)(a1×a3)=(a2×a3)(a2×a3),且令 θ = 90 ° θ=90° θ=90° 满足零倾斜透视情况,此时满足Faugeras定理中的第三条零倾斜且宽高比为1的透视矩阵性质。

 6. r i r_i ri 是个方向向量,不用管前面的系数。所以利用 ρ a 2 T × ρ a 3 T ρ{a_2}^T × ρ{a_3}^T ρa2T×ρa3T 可以求出 r 1 r_1 r1 r 3 r_3 r3 可以直接得出,最后 r 2 = r 1 × r 3 r_2=r_1 × r_3 r2=r1×r3

在这里插入图片描述

 7. 利用公式 ρ b = K T ρb=KT ρb=KT 可以求出 T T T

在这里插入图片描述

上面求解推导过程中有几个注意点:
(1) 列向量模的求法:
在这里插入图片描述
(2) 向量的点乘(内积)
在这里插入图片描述
(3) 向量的叉乘(外积)
两个向量叉乘的运算结果是一个向量而不是一个标量。并且两个向量叉乘得到的向量与这两个向量组成的坐标平面垂直。
在这里插入图片描述

2.3 参数总结

 1. 各个参数的最终公式如下所示:

在这里插入图片描述

 2. 我们要注意取点时不要取同一平面的点。

在这里插入图片描述

三、径向畸变的摄像机标定

3.1 建模

 1. 径向畸变会导致图像的放大率随着距离光轴距离的增加而减小,换句话说,距离摄像机中心近的影响小,距离摄像机中心远的畸变影响大。

 2. 定义一个 λ λ λ,满足和摄像机中心 d d d 之间的多项式关系,对原来像素坐标系和世界坐标系的映射关系间添加一个 S λ S_λ Sλ 矩阵。下图中 d 2 d^2 d2 表示点距离摄像机坐标系中心的距离。

在这里插入图片描述

 3. 对于径向畸变问题不再是一个齐次线性方程组的问题,而是一个非线性的问题,由于 λ λ λ u u u v v v 之间存在了映射关系,导致 λ λ λ 不再是一个简单的参数,也无法再转换为齐次方程组的 A x = 0 Ax=0 Ax=0 的关系,只能建立成 f ( x ) = 0 f(x)=0 f(x)=0 的非线性关系。

在这里插入图片描述

3.2 求解

在这里插入图片描述

四、变换

4.1 2D平面上的欧式变换

 1. 欧式变换,也称为欧几里得变换或刚性变换,是一种较为基本的变换方式。在欧式变换中,同一个向量在各个坐标系下的长度和角度都不会发生变化,它只涉及物体的旋转和平移运动,不改变物体的形状和大小。这种变换方式在视觉SLAM(同步定位与地图构建)中具有重要的应用,用于描述相机等刚体的运动定位和构图过程。

 2. 欧式变换具有长度、夹角和体积不变性,即在变换过程中,物体的长度、各部分的夹角以及体积都会保持不变。

 3. 等距变换包括欧式变换( σ = 1 σ=1 σ=1)和镜像变换( σ = − 1 σ=-1 σ=1)。

在这里插入图片描述

4.2 2D平面上的相似变换和仿射变换

 1. 相似变换就在欧式变换基础上添加了一个比例因子 s s s,使得大小会有所变化,但形状不变,保持相似性。

在这里插入图片描述

 2. 仿射变换中形状和大小已经完全变化,但是不同形状之间平行性,面积比值,平行线段长度比值仍然不变。

在这里插入图片描述

4.3 2D平面上的透射变换

 透射变换不保持平行性,只能保持原来是个点现在还是个点,原来是个线现在还是个线,原来在一个平面现在还在一个平面。
在这里插入图片描述

在这里插入图片描述

4.4 3D平面上的欧式变换

:下图中的 s s s 为缩放因子,欧式变换 s = 1 s=1 s=1,相似变换 s s s 就不定了。

在这里插入图片描述

在这里插入图片描述

4.5 3D平面上的仿射变换

在这里插入图片描述

在这里插入图片描述

4.5 3D平面上的透射变换

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

深入浅出前端本地储存(1)

引言 2021 年,如果你的前端应用,需要在浏览器上保存数据,有三个主流方案: CookieWeb Storage (LocalStorage)IndexedDB 这些方案就是如今应用最广、浏览器兼容性最高的三种前端储存方案 今天这篇文章就聊一聊这三种方案的历史…

全球首例AI软件工程师Devin:Cognition AI引领智能编程新纪元

近日,初创企业Cognition AI震撼发布了全球首位AI软件工程师——Devin,这一开创性的突破标志着人工智能在编程与软件开发领域的应用迈上了全新的台阶。Devin以其卓越的计算机推理与规划能力,正在重新定义我们对软件工程实践的理解。 Devin&am…

软件设计师:03 - 数据库系统

一、数据模型的分类 1.1、概念数据模型 1.2、结构数据模型 1.3 真题 二、三级模式 概念模式对应的是基本表,概念模式也称为模式 外模式对应的是视图,也称用户模式或者子模式 内模式对应的是数据库里面的存储文件,也称存储模式 真题 三、两级…

漏洞发现-漏扫项目篇Poc开发Yaml语法反链判断不回显检测Yaml生成

知识点 1、Xray&Afrog-Poc开发-环境配置&编写流程 2、Xray-Poc开发-数据回显&RCE不回显&实验室 3、Afrog-Poc开发-数据回显&RCE不回显&JDNI注入 章节点: 漏洞发现-Web&框架组件&中间件&APP&小程序&系统 扫描项目-综合…

三连杆滑块机构运动学仿真 | 【Matlab源码+理论公式文本】|曲柄滑块 | 曲柄连杆 | 机械连杆

【程序简介】💻🔍 本程序通过matlab实现了三连杆滑块机构的运动学仿真编程,动态展现了三连杆机构的运动动画,同时给出了角位移、角速度和角加速度的时程曲线,除了程序本身,还提供了机构运动学公式推导文档…

防火墙互联技术

1.防火墙基础配置 2.配置防火墙远程管理 3.配置防火墙管理员角色 4.配置防火墙系统时钟 抓包

自动化测试报告生成(Allure)

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 之前尝试使用过testNG自带的测试报告、优化过reportNG的测试报告…

备战蓝桥杯D33 - 真题 - 松散子序列

题目描述 解题思路 ps:思路是我看了大佬的题解后自己的理解,自己给自己捋清楚思路。 1.设置输入,将字符串输入 2.因为输入的是字符,但要找出字符的最大价值,所以先将字符串转化成对应的数值。 这时候就要用到ord函…

基于SSM的宿舍管理系统的设计与实现(JSP,MySQL)

摘 要 随着社会发展、信息技术的普及,人们日常管理工作也发生了巨大的变化。信息化技术之渗透各行业的方方面面。学生宿舍管理作为校园管理工作的重要一环,不仅关系到学生自身的确切利益,同时也是对校园管理工作重大考验。近来年由于在校学生…

YOLOv9改进策略:卷积魔改 | 分布移位卷积(DSConv),提高卷积层的内存效率和速度

💡💡💡本文改进内容: YOLOv9如何魔改卷积进一步提升检测精度?提出了一种卷积的变体,称为DSConv(分布偏移卷积),其可以容易地替换进标准神经网络体系结构并且实现较低的存…

MISC:常见编码

一、字符编码 1.ASCII码 使用指定7位或8位二进制数组合表示128-256种可能。 常⻅考点:解题过程中给出十进制或十六进制的连续数值。 进制转换工具: ASCII text,Hex,Binary,Decimal,Base64 converter (rapidtables.com) 2.Base64编码 ASCII编码以8个比特…

RISC-V架构的三种特权模式如何切换

1、RISC-V的三种特权模式 特权模式功能描述机器模式(M-mode)具有最高特权等级,具有访问所有资源的权限,通常运行固件和内核用户模式(U-mode)权限要比M模式低,通常是用来运行操作系统内核管理员…

sqlserver列出表的所有字段名

1、纵向列出所有字段 SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME tablename;2、横向列车所有字段,以‘,’分隔 SELECT STUFF((SELECT , column_nameFROM information_schema.columnsWHERE table_name tablenameFOR XM…

C++进阶:二叉搜索树介绍、模拟实现(递归迭代两版本)及其应用

上次介绍完多态后:C进阶:详解多态(多态、虚函数、抽象类以及虚函数原理详解) 也是要开始继续学习了 文章目录 1.二叉搜索树1.1概念1.2二叉搜索树特性1.3 二叉搜索树的操作 2.模拟实现2.1项目文件规划2.2基本结构2.3各种接口、功能…

【C语言】—— 指针三 : 参透数组传参的本质

【C语言】—— 指针三 : 参透数组传参的本质 一、数组名的理解二、使用指针访问数组2.1、指针访问数组2.2、[ ] 的深入理解2.3、数组与指针的区别 三、一维数组的传参本质四、数组指针变量4.1、数组指针变量是什么4.2、 数组指针的初始化 五、二维数组传参的本质 一…

DML - 增删改(insert into,delete,update)

引言:对比DB / 表结构 : create , drop , alter 本次记录 数据操作 语言: 1.进入 hive 数据库,再打开 ryx1 表 2. insert select 3. update select 4. delete select

外卖项目:使用AOP切面编程实现增删改查的操作日志记录(debug断点调试)

文章目录 一、问题描述二、问题分析三、断掉调试四、代码展示 一、问题描述 需求:将项目中增、删、改相关接口的操作日志记录到数据库表中。 操作日志信息包含: 操作人、操作时间、执行方法的全类名、执行方法名、方法运行时参数、返回值、方法执行时…

武汉星起航:专业团队引领,经验与创新共铸跨境电商新辉煌

在竞争激烈的跨境电商市场中,武汉星起航电商公司凭借其专业的运营团队和多年的行业经验,成功脱颖而出。这支拥有丰富经验的团队,不仅深刻了解跨境电商市场的动态,更通过持续创新和个性化解决方案,为合作伙伴提供了强有…

STM32CubeMX学习笔记26---FreeRTOS互斥量

一、互斥量简介 1、互斥量用于互锁,可以充当资源保护的令牌,当一个任务希望访问某个资源时,它必须先获取令牌,当任务使用完资源后,必须返还令牌,以便其他任务可以访问该资源。 2、互斥量一般用于临界资源…

GPT-4引领AI新纪元,Claude3、Gemini、Sora能否跟上步伐?

【最新增加Claude3、Gemini、Sora、GPTs讲解及AI领域中的集中大模型的最新技术】 2023年随着OpenAI开发者大会的召开,最重磅更新当属GPTs,多模态API,未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚…