【三维重建】摄像机几何

想知道如何从二维图像中如何恢复三维点,需要先知道三维点是如何映射成二维点的。

原理很简单,就是我们小学学的小孔成像原理
在这里插入图片描述
为了方便我们对针孔相机模型进行数学建模,我们往往对虚拟像平面进行研究,因为虚拟像平面的方向与我们实际物体的方向一致。

在这里插入图片描述

根据相似三角形原理,可以得到三维坐标到二维坐标的映射:
P = [ x y z ] ⟹ P ′ = [ x ′ y ′ ] ( x ′ = f x z y ′ = f y z ) P = \begin{bmatrix}x \\ y\\ z \end{bmatrix} \Longrightarrow P' = \begin{bmatrix}x' \\ y' \end{bmatrix} \left ( \begin{matrix} x' = f\frac{x}{z} \\ y' = f\frac{y}{z} \end{matrix} \right) P= xyz P=[xy](x=fzxy=fzy)
将像平面原点坐标移动到图像的左下角: ( x , y , z ) ⟶ ( f x z + c x , f x z + c y ) \left(x,y,z \right) \longrightarrow \left(f\frac{x}{z} +c_x,f\frac{x}{z}+c_y \right) (x,y,z)(fzx+cx,fzx+cy)

加上现实世界单位(m)到数码图片单位(pixel)的转换量: ( x , y , z ) ⟶ ( f k x z + c x , f k x z + c y ) \left(x,y,z \right) \longrightarrow \left(fk\frac{x}{z} +c_x,fk\frac{x}{z}+c_y \right) (x,y,z)(fkzx+cx,fkzx+cy)
在这里插入图片描述

至此,完成了相机坐标到像平面坐标的映射: P = ( x , y , z ) ⟶ P ′ = ( α x z + c x , β y z + c y ) \mathbf{P=(x,y,z) \longrightarrow P'= \left(\alpha \frac{x}{z} + c_x,\beta \frac{y}{z} + c_y\right)} P=(x,y,z)P=(αzx+cx,βzy+cy)

在上面这个公式中, z z z是会改变的,因此 P P P P ′ P' P并不是线性变换,我们需要引入齐次坐标,使它成为线性变换。

欧式坐标变为齐次坐标就是在最后增加一个维度,并让它的值为1:
( x , y ) ⟶ [ x y 1 ] ( x , y , z ) ⟶ [ x y z 1 ] (x,y) \longrightarrow \begin{bmatrix}x \\ y\\1 \end{bmatrix} {\kern 20pt} (x,y,z) \longrightarrow \begin{bmatrix}x \\ y\\z\\1 \end{bmatrix} (x,y) xy1 (x,y,z) xyz1
齐次坐标转欧式坐标:
[ x y w ] ⟶ ( x w , y w ) [ x y z w ] ⟶ ( x w , y w , z w ) \begin{bmatrix}x\\y\\w \end{bmatrix} \longrightarrow (\frac{x}{w},\frac{y}{w}) {\kern 20pt}\begin{bmatrix}x\\y\\z\\w \end{bmatrix} \longrightarrow (\frac{x}{w},\frac{y}{w},\frac{z}{w}) xyw (wx,wy) xyzw (wx,wy,wz)
齐次坐标转到欧式坐标的结果并不是一一对应的,比如(1,1,1)和(2,2,2)转到欧式坐标都是(1,1),它们之间相差一个系数。

在这里插入图片描述

变为齐次坐标后 P P P P ′ P' P就是线性变换的, z z z的变化不会影响最后的投影结果。

由于制造工艺的原因,像平面可能不是一个矩形,所以需要引入 θ \theta θ​进行建模:

在这里插入图片描述

在进行三维重建的时候往往需要用到多个相机,因此需要外参矩阵将所有点的坐标系进行统一。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文架构介绍

论文架构 背景:建议2段左右完成,字数控制在500左右为佳,对应子题目1过渡段:写150字左右的过渡段,承上启下,回答部分子题目2、3的要求正文实践部分:一般3-7个论点,根据题目的要求来看…

语音识别---节拍器

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计3077字,阅读大概需要3分钟 🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号&#xf…

react + xlsx 表格导出功能 全部实现

需求 : 在react中将表格多样化导出 , 既可以全部导出所有表格数据 , 也可以选择性导出 导出可以选择三种样式 选择了全部 , 不能选其他 全部导出 部分导出 1 导出按钮下拉弹出三种导出格式 <Dropdownmenu{{items: [{label: (<aonClick{() > {setFormat(xlsx)}}>…

淡茶和浓茶的标准

按照《品深淡茶冲泡标准》&#xff0c;淡茶茶汤中的咖啡碱不得高于31.67mg/100mL&#xff0c;可可碱不得高于2.67mg/mL&#xff0c;茶碱不得高于1.50mg/100mL&#xff0c;茶多酚不得高于143mg/mL&#xff0c;按照各类茶叶中各物质的含量情况&#xff0c;茶水比例不得高于1:150&…

Linux网络-部署YUM仓库及NFS共享服务

目录 一.YUM仓库服务 1.YUM概述 1.1.YUM&#xff08;Yellow dog Updater Modified&#xff09; 2.准备安装源 2.1.软件仓库的提供方式 2.2.RPM软件包的来源 2.3.构建CentOS 7 软件仓库 2.4.在软件仓库中加入非官方RPM包组 3.一键安装软件包的工具&#xff1a; 好处&a…

fs-extra替代 Node内置 fs 模块,更安全、更强大的文件操作库

fs-extra 是作为替代 Node.js 内置 fs 模块创建的&#xff0c;当你的项目中引入 fs-extra 后&#xff0c;就可以像下面这样做。将所有使用 require(fs) 的地方&#xff1a; const fs require(fs) // this is no longer necessary 改成 require(fs-extra)&#xff1a; con…

im即时通讯源码/仿微信app源码+php即时通讯源码带红包+客服+禁言等系统php+uniapp开发

即时通讯(IM)系统是现代互联网应用中不可或缺的一部分&#xff0c;它允许用户进行实时的文本、语音、视频交流。随着技术的发展&#xff0c;IM系统的功能越来越丰富&#xff0c;如红包、客服、禁言等。本文将探讨如何使用PHP语言开发一个功能完备的即时通讯系统&#xff0c;包括…

Java Set集合

1. Set接口 1.1 Set接口概述 Set接口继承自Collection接口&#xff0c;所以与Collection接口中的方法基本一致&#xff0c;并没有对Collection接口进行功能上的扩充&#xff0c;只是比Collection接口更加严格。 Set集合的特点是无序且不可重复&#xff1a; 无序&#xff1a;不…

网卡自动切换AP和AC模式

AC模式搜索不到WiFi AC模式是指client模式&#xff0c;也就是可以自动接入wifi的模式 参考将外置网卡设置为 AP模式之后&#xff0c;发现搜索不到wifi了 &#xff08;换了一台ubuntu测试发现可以&#xff0c;所以不是硬件问题&#xff09; 经过nmcli device status查看设备发…

OCC笔记:图形可视化的实现方式

注&#xff1a;文中参看的occ的源码版本为7.4.0 1、实现思路概览 整体架构 主要有3大块&#xff1a;AIS&#xff08;Application Interactive Services &#xff0c;直译为&#xff1a;应用程序交互服务&#xff09;、Graphics&#xff08;图形&#xff09;、Geometry & T…

2024.05.06作业

自由发挥应用场景&#xff0c;实现登录界面。 要求&#xff1a;尽量每行代码都有注释。 #include "yuanshen.h"yuanshen::yuanshen(QWidget *parent): QWidget(parent) {//窗口相关设置this->resize(1600,910);this->setFixedSize(1600,910);//窗口标题this-…

【C语言】数据类型

有哪些数据类型&#xff1f; char - 字符数据类型&#xff0c;存储一个字符&#xff0c;大小是1字节。short - 短整型&#xff0c;存储一个整数&#xff0c;大小是2字节。int - 整型&#xff0c;存储一个整数&#xff0c;大小是4字节。long - 长整型&#xff0c;存储一个整数&…