三维重建(3)--单视几何

目录

一、无穷远点、无穷远线、无穷远平面

1、2D平面上的无穷远问题

2、3D平面上的无穷远问题 

二、影消点与影消线

1、2D平面上的无穷远点,无穷远线变换

2、影消点

3、影消线

三、单视重构 

1、两平行线夹角与影消线关系

2、单视图标定


一、无穷远点、无穷远线、无穷远平面

        对于下面所有的坐标均用齐次坐标表述,而不是欧式坐标

1、2D平面上的无穷远问题

(1)2D平面上的线

        对于一条2D平面上的直线,我们可以用ax_1+bx_2+c=0 来表示,其中参数可以单独拿出来,作为一个整体,一个参数向量的形式(后续将沿用这种方法来表示一条线),即下面的\mathbf{\mathit{l}}=[a \hspace{0.25cm} b \hspace{0.25cm} c]^T,x作为直线上的一个点表示为x=[x_1,x_2,1]^T,这也满足了x^Tl=0,后续对于直线上的点与直线的关系均满足x^Tl=0条件。

(2)2D平面上线的交点

        定义两条直线叉乘得到的积,表示交点的坐标。如何证明2D平面上两条线的交点,交点与每一条直线间一定满足x^Tl=0关系,那么与点乘相同,可以证明一个被定义为x=l \times l'的点与两条直线分别垂直(点乘等于0),则他一定同时在两条线上,即相交。

(3) 2D平面上的无穷远点

        首先任意选取两条直线l,l',s.t.a/b=a'/b',即斜率相同两条线平行,那么若存在两条平行直线的交点x_\infty,则一定满足x_\infty =l \times l',且x_\infty \propto [b \hspace{0.15cm} -\hspace{0cm} a \hspace{0.25cm} 0]^T,我们也可以反过来证明两条直线的任意一条均穿过无穷远点,只需要满足l^Tx_\infty =0,对于2D平面上广义的无穷远点可以定义为x_\infty=[1,1,0]^T(后续无穷远点变换会用到)。

(4)2D平面上的无穷远线

        同一平面(在2D平面上均为同一平面)的无穷远点均位于同一无穷远线上,我们定义无穷远线为l_\infty=[0 \hspace{0.25cm} 0 \hspace{0.25cm} 1]^T,对于任意一个无穷远点一定满足最后一个齐次坐标x_3为0,所以对于任意一个2D平面下的无穷远点一定会在无穷远线上满足l_\infty ^Tx_\infty =0成立。

2、3D平面上的无穷远问题 

(1)3D空间中的面

        对于一个3D空间中的面可以定义为ax_1+bx_2+cx_3+d=0,同理可以将参数拆解为参数向量形式,定义参数表示的面\Pi = [a \hspace{0.25cm} b \hspace{0.25cm} c \hspace{0.25cm} d],对于一个面上的点x=[x_1,x_2,x_3,1] ^T,仍然有x^T \Pi =0 成立。

(2) 3D空间中的直线

        3D空间中的直线,一般很难去表示,可以用直线方向来粗略表示。

(3)3D空间中的无穷远点

        3D空间中的无穷远点,定义为x_4为0,其他三个坐标任意。此时必须保证同一平面上的平行线相交于同一无穷远点。

(4)3D空间中的无穷远线和无穷远面 

        对于平行平面会在无穷远处相交于同一条公共线,即无穷远直线,而若干条无穷远直线形成无穷远平面。定义无穷远平面为\Pi=[0,0,0,1]^T

二、影消点与影消线

1、2D平面上的无穷远点,无穷远线变换

(1)2D平面无穷远点变换

        变换主要考察投影变换和仿射变换,对于2D平面上点到点的变换就是乘以一个变换矩阵的映射关系,即p'=HpH表示变换矩阵,对于透视和仿射变换而言,仿射变换的无穷远点不变,透视变换的无穷远点不同。

点到点变换请参考:三维重建(2)--摄像机标定-CSDN博客

(2)2D平面线的变换 

        线的变换等价于任意点x在线l上,该点x进行变换得到x' ,变换后的点x'又一定在变换后的线l'上,所以通过式子的代换得到了线与线之间变换是乘以一个变换矩阵的转置的逆的映射关系,即l'=H^{-T}l

 (3)2D平面的无穷远线的变换

        根据线到线的变换关系,可以得到对于无穷远线经过仿射变换不变,透视变换会改变。

2、影消点

         影消点:三维空间中的无穷远点在图像中的投影点,在多视几何中,三维空间中两条平行线相交于无穷远点,而投影到二维空间的像平面坐标下就是一个有有意义坐标的点。

        一般我们定义三维空间的平行线方向为d=[a,b,c]^T,而三维空间中的无穷远点为x_\infty=[a,b,c,0]^T,假设像平面的影消点为v,那么一定有v=Kd成立,建立起影消点与无穷远点的关系(在不考虑摄像机外参数的情况下,即M=K)。此时d没有规定模长为1,所以进行规范化直线方向,得到d=\frac{K^{-1}v}{||K^{-1}v||}

3、影消线

        影消线:三维空间中的无穷远线在图像中的投影线,即影消线,由于摄像机经过一个透视变换将三维空间的坐标转换为二维坐标,那么可以利用线与线的变换关系,计算出影消线与无穷远线的关系l_{horiz}=H^{-T}l_\infty

        下图为三维空间下,同一平面的两条平行线在无穷远处相交,在像平面下形成的影消点,无数影消点形成影消线。

        另外可以得到影消线与平面法向量的关系,我们可以知道多个平行平面会聚在无穷远处得到无穷远线,无穷远线经过投影变换到像平面得到影消线,假设一个点P位于生成无穷远线的平行平面中的任意一个\Pi上的一点,记平面法向量为n,那么一定满足n^T P=0,另外该点经过投影变换一定在影消线上,满足l_h ^T(K[I \hspace{0.25cm} 0]P)=0成立,所以一定有n=K^Tl_h成立。

三、单视重构 

1、两平行线夹角与影消线关系

         注意是一共是四条线,两组平行线之间的夹角为θ,根据余弦定理可以得到夹角与两组平行线直线方向的关系,其中定义\omega=(K K^T)^{-1}

                                                cos\theta=\frac{d_1 \cdot d_2}{|d_1||d_2|}=\frac{v_1^T \omega v_2}{\sqrt{v_1^T \omega v_1} \sqrt{v_2^T \omega v_2}}

2、单视图标定

         由于K有5个自由度,而一般我们只能找到三组互相垂直的平行线,如下图这种典型的三个平面互相垂直,在三个平面上选择三组平行线,那么最多只能得到三个方程,而三个方程不能精确的解出五个未知数,所以一般我们规定零倾斜,正方形像素,此时内参矩阵中的θ=90°,α=β,此时只剩下三个未知数\alpha,c_x,c_y,理论上可以解出图像中的任意点,直线位置。

        接下来我们可以根据平面法向量和影消线之间的关系重构出世界坐标下的任何一个平面。

        但仍然存在弊端,我们无法还原出真实世界与重构场景之间的缩放比例大小,我们也不知道摄像机如何拍摄这张照片,场景的真实世界地理位置。

        如果我们无法确定出图片中的影消线和影消点,那么场景重构将无法完成,而一般图片中是缺少这些信息的。

Reference:https://www.bilibili.com/video/BV1xF411a7YQ/?spm_id_from=333.999.0.0

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue3 在 history 模式下通过 vite 打包部署白屏

Vue3 在 history 模式下通过 vite 打包部署后白屏; 起因 hash 模式 url 后面跟个 # 强迫症犯了改成了 history,就此一波拉锯战开始了 ... 期间 nigix 和 router 各种反复排查尝试最终一波三折后可算是成功了 ... Vue官方文档 具体配置可供参考如下: 先简要介绍下,当前项目打包…

【网站项目】331基于jsp的超市库存商品管理系统

🙊作者简介:多年一线开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

paramiko 、netmiko抛出 No existing session的解决方法。

写这篇文章,是因为我在H3C交换机上很正常的代码,可以ssh登录,但huawei交换机上失败,用CSDN上的文章关于allow_agentFalse,look_for_keysFalse 处理还是失败后,找相关的一些帖子总结的必须修改paramiko的源代码文章。 如…

Mysql:重点且常用的 SQL 标签整理

目录 1 <resultMap> 标签 2 <sql> 标签 3 <where> 标签 4 <if> 标签 5 <trim> 标签 6 <foreach> 标签 7 <set> 标签 1 <resultMap> 标签 比如以下代码&#xff1a; <resultMap type"SysCollege" id&qu…

【2024.1.19练习】B:01串的熵

B: 01串的熵&#xff08;5分&#xff09; 问题描述 对于一个长度为23333333的01串&#xff0c;如果其信息熵为11625907.5798&#xff0c;且0 出现次数比1 少&#xff0c;那么这个01 串中0出现了多少次&#xff1f; 我的代码&#xff1a; 注意调用<cmath>以便于对数运算…

Android-三方框架的源码

ARouter Arouter的整体思路是moduelA通过中间人ARouter把路由信息的存到仓库WareHouse&#xff1b;moduleB发起路由时&#xff0c;再通过中间人ARouter从仓库WareHouse取出路由信息&#xff0c;这要就实现了没有依赖的两者之间的跳转与通信。其中涉及Activity的跳转、服务prov…

2024 Move开发者大会在上海圆满落幕,第三期星航计划启动

*以下文章来源于MoveFuns &#xff0c;作者MoveFuns 至各位Mover&#xff1a; 2024 Move DevConfShanghai 圆满成功。在这次盛会上&#xff0c;我们围绕着Move生态关键的一年这一主题进行了深入的讨论和交流。 以下是本次会议的总结回顾&#xff1a; 大会盛况 本次大会在上…

大模型学习与实践笔记(九)

一、LMDeply方式部署 使用 LMDeploy 以本地对话方式部署 InternLM-Chat-7B 模型&#xff0c;生成 300 字的小故事 2.api 方式部署 运行 结果&#xff1a; 显存占用&#xff1a; 二、报错与解决方案 在使用命令&#xff0c;对lmdeploy 进行源码安装是时&#xff0c;报错 1.源…

innoDB存储引擎

1.逻辑存储结构 行数据->行->页->区->段->表空间 表空间(ibd文件)&#xff0c;一个mysql实例可以对应多个表空间&#xff0c;来存储记录&#xff0c;索引等数据。 段&#xff1a;分为数据段和索引段&#xff0c;回滚段&#xff0c;数据段就是B树的叶子节点&am…

神器yakit之web fuzzer功能

前言 yakit并不像burp一样单独设置爆破模块&#xff0c;但是yakit也是可以爆破的&#xff0c;并且更好用&#xff08;个人感觉&#xff09;。 手工测试场景中需要渗透人员对报文进行反复的发送畸形或者特定的payload进行查看服务器的反馈并以此来进行下一步的判断。 Fuzz标签便…

Gazebo的模型下载。

git clone zouxu634866/gazebo_modelshttps://gitee.com/zouxu6348660/gazebo_models.git&#xff0c;并完成路径配置。 &#xff08;本文提供了gitee下载&#xff0c;国外的Github下载较慢。&#xff09;

《WebKit 技术内幕》之四(1): 资源加载和网络栈

第四章 资源加载和网络栈 使用网络栈来下载网页和网页资源是渲染引擎工作的第一步 1.WebKit 资源加载机制 1.1 资源 网页本身就是一种资源、网页还需要依赖很多其他的资源(图片、视频) &#xff08;1&#xff09;HTML 支持的资源主要包括以下几种类型&#xff1a; HTML 页…

【并发编程系列】putIfAbsent和getOrDefault用法

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

高效火情监测,科技助力森林防火【数字地球开放平台】

数字地球开放平台-以卫星遥感为核心的空天信息服务开放平台 (geovisearth.com) 2019年3月30日&#xff0c;四川省凉山州木里县爆发了一场森林火灾&#xff0c;火点位于海拔3800米左右&#xff0c;地形险峻、坡度陡峭、谷深难以抵挡火势。在扑救的过程中&#xff0c;27名森林消防…

服务器自动拉取git代码运行脚本

# 1.场景分析 工作中常常会遇到本地编辑shell脚本或者python脚本完成后需要在服务器上运行的情况&#xff0c;每次进行拷贝费时费力。下面介绍下通过git管理器&#xff0c;实现本地与服务器代码同步的方式。选择公司搭建的gitlab为例&#xff1a; 2.gitlab配置服务器ssh密钥 …

【陈老板赠书活动 - 22期】- 人工智能(第三版)

陈老老老板&#x1f9d9;‍♂️ &#x1f46e;‍♂️本文专栏&#xff1a;赠书活动专栏&#xff08;为大家争取的福利&#xff0c;免费送书&#xff09; &#x1f934;本文简述&#xff1a;活就像海洋,只有意志坚强的人,才能到达彼岸。 &#x1f473;‍♂️上一篇文章&#xff…

shopee西班牙站选品:如何在Shopee西班牙站点上进行选品策略

在Shopee西班牙站点进行选品时&#xff0c;卖家需要考虑一系列策略&#xff0c;以确保产品符合当地市场需求并取得良好的销售业绩。以下是一些关键策略&#xff0c;卖家可以参考并应用到自己的选品过程中。 先给大家推荐一款shopee知虾数据运营工具知虾免费体验地址&#xff0…

数据中心设备与线缆数据采集神器

​前言 在数据中心机房运维管理过程中&#xff0c;开展以下工作时通常我们采用手工表格的方式&#xff0c;效率低还容易出错&#xff0c;如&#xff1a; 数据中心机柜设备与线缆规划&#xff1b; 数据中心机柜设备与线缆变更记录&#xff1b; 数据中心机柜内设备与线缆数据采…

ACL【新华三与华为的区别】

【解释】acl简单点解释就是&#xff0c;一套根据需求而设置的规则 【背景】 192.168.1.0/24 网段不允许访问 192.168.2.0/24 网段&#xff0c;要求使用基本 ACL 实现20_1 可以访问 20_6 的 TELNET 服务&#xff0c;但不能访问 FTP 服务 【操作步骤】 {易混点 }&#xff1a;1. …
最新文章