计算机视觉之三维重建(3)---单视几何

news2024/12/23 13:37:13

文章目录

  • 一、问题提出
  • 二、无穷远点、无穷远线、无穷远平面
    • 2.1 2D空间
    • 2.2 3D空间
  • 三、影消点和影消线
    • 3.1 2D平面上的无穷远点,无穷远线变换
    • 3.2 影消点
    • 3.3 影消线
  • 四、单视重构


一、问题提出

 1. 当摄像机标定后,内部参数 K K K 已知,外部参数 [ R , T ] [R,T] [R,T] 已知,是否可以根据单个图像的测量值 p p p 去估算 P P P:一般情况下不能,因为 P P P 可以位于 C C C p p p 定义的直线上的任意位置。
在这里插入图片描述

 2. 一般情况下不能,但是总有一些场合可以从二维图像转换到三维场景结构。那接下就要研究比如如何将下面这幅图从二维图像转换成三维场景。

在这里插入图片描述

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

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

2.1 2D空间

 1. 对于一条2D平面上的直线,我们可以用 a x 1 + b x 2 + c = 0 ax_1+bx_2+c=0 ax1+bx2+c=0 来表示。把其中的参数拿出来构成向量并定义为 l l l(一般说到参数向量 l l l 就表示直线)。 x x x 作为直线上的一个点,齐次坐标表示为 x = [ x 1 , x 2 , 1 ] T x=[x1,x2,1]^T x=[x1,x2,1]T x x x l l l 满足 x T l = 0 x^Tl=0 xTl=0 或者 l T x = 0 l^Tx=0 lTx=0

在这里插入图片描述

 2. 定义两条直线叉乘得到的积,表示交点的坐标。(这里由叉乘的定义可以理解)

在这里插入图片描述

 3. (1) 下图右上角的齐次坐标 x ∞ x_∞ x 在欧式坐标下表示无穷远点。 (2) 任意选取两条直线 l l l l ′ l' l,使得 − a / b = − a ′ / b ′ -a/b=-a'/b' a/b=a/b,即斜率相同的两条线平行。 (3) 直线 l l l l ′ l' l 叉乘得到 x ∞ x_∞ x

在这里插入图片描述

 4. 同一平面直线(在2D平面上均为同一平面)的无穷远点均位于同一无穷远线上,我们定义无穷远线为 l ∞ = [ 0 , 0 , 1 ] T l_∞=[0,0,1]^T l=[0,0,1]T

在这里插入图片描述

2.2 3D空间

 1. 对于一个3D空间中的面可以定义为 a x 1 + b x 2 + c x 3 + d = 0 ax_1+bx_2+cx_3+d=0 ax1+bx2+cx3+d=0。同理可以将参数拿出来构成参数向量形式,定义参数表示的面 Π = [ a , b , c , d ] T Π=[a,b,c,d]^T Π=[a,b,c,d]T。对于一个面上的点 x = [ x 1 , x 2 , x 3 , 1 ] T x=[x1,x2,x3,1]^T x=[x1,x2,x3,1]T,仍然有 x T Π = 0 x^TΠ=0 xTΠ=0 或者 Π T x = 0 Π^Tx=0 ΠTx=0 成立。

在这里插入图片描述

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

在这里插入图片描述

 3. 3D空间中的无穷远点,定义齐次坐标中的 x 4 x_4 x4 为0,其他三个坐标为直线的方向。此时必须保证同一平面上的平行线相交于同一无穷远点。

在这里插入图片描述

 4. 平行平面上的任意一对平行线,在无穷远处都会相交于无穷远点。很多个无穷远点会构成无穷远线。所以:对于平行平面会在无穷远处相交于同一条公共线,即无穷远直线;而若干条无穷远直线形成无穷远平面。定义无穷远平面为 Π ∞ = [ 0 , 0 , 0 , 1 ] T Π_∞=[0,0,0,1]^T Π=[0,0,0,1]T

在这里插入图片描述

三、影消点和影消线

 影消点和影消线是无穷远点和无穷远线投影到像素平面的对应关系。

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

 1. 对于2D平面上点到点的变换就是乘以一个变换矩阵的映射关系,即 p ′ = H p p'=Hp p=Hp H H H 表示变换矩阵。对于透视和仿射变换而言,仿射变换后的无穷远点还是无穷远点,透视变换后的无穷远点不再是无穷远点。

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

3.2 影消点

 1. 影消点:三维空间中的无穷远点经过摄像机在图像中的投影点。

在这里插入图片描述

 2. 一般我们定义三维空间的平行线方向为 d = [ a , b , c ] T d=[a,b,c]^T d=[a,b,c]T,而三维空间中的无穷远点为 x ∞ = [ a , b , c , 0 ] T x_∞=[a,b,c,0]^T x=[a,b,c,0]T。假设像平面的影消点为 v v v,那么一定有 v = K d v=Kd v=Kd 成立。结论:给一个影消点和摄像机的内外参数,我们就可以知道三维空间中一组平行线的方向。
.

在这里插入图片描述

3.3 影消线

 1. 影消点:三维空间中的无穷远线经过摄像机在图像中的投影线。影消线与无穷远线的关系为 l ′ = H − T l l'=H^{-T}l l=HTl

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

 4. 总结:

在这里插入图片描述

四、单视重构

 1. 注意是一共是四条线,两组平行线之间的夹角为 θ θ θ,根据余弦定理可以得到夹角与两组平行线直线方向的关系,如下图所示:

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

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

相关文章

界面控件DevExpress ASP.NET Ribbon组件 - 完美复刻Office 365体验!

无论用户是喜欢传统工具栏菜单外观、样式,还是想在下一个项目中复制Office 365 web UI,DevExpress ASP.NET都提供了所需要的工具,帮助用户打造更好的应用程序界面。 P.S:DevExpress ASP.NET Web Forms Controls拥有针对Web表单&a…

JavaWeb -- HTTP -- WEB服务器TOMCAT

一.HTTP介绍: HTTP(Hyper Text Protocol) 实际上是一种超文本传输的协议,规定了浏览器跟服务器之间的一些数据传输的规则 例如B/S 对于浏览器的请求,以及相应服务器的响应,都必须依靠这种协议,规范,才能够彼此之间相互 理解 HTTP的协议特点: 1.基于TCP协议: 面向连接 更加安全…

Vscode初建Vue时几个需要注意的问题

首先放图 注意点1.打开文件夹时,可以是VUE2 或者其他,但不能是VUE,会报错 注意点2.终端输入命令“npm init -y" npm init -y -y 的含义:yes的意思,在init的时候省去了敲回车的步骤,生成的默认的packag…

【目标检测】YOLOv9理论解读与代码分析

前言 YOLO这个系列的故事已经很完备了,比如一些Decoupled-Head或者Anchor-Free等大的策略改动已经在YOLOv8固定下来,后面已经估计只有拿一些即插即用的tricks进行小改。 mmdetection框架的作者深度眸也在知乎上对“是否会有YOLOv9”这一观点发表看法&a…

搞了半天blender整动画这么爽,骨骼重定向一回,动作就可以到处套用,和音频对轨也好使

我们搞到了运动数据(可能是bvh文件,也可能是fbx文件)之后,想要让某个静态的模型动起来。 我们假定用的是Tpose的模型(因为我这个bvh文件是Tpose用的,所以为了动作映射不出问题,优先整的这种模型…

C语言——利用冒泡排序模拟实现qsort函数

一.冒泡排序 冒泡排序是C语言中众多排序中的一种。它的排序逻辑为(升序):从第一个元素开始和相邻的比较,如果第一个元素大于第二个元素,则交换,反之不交换;第二个再与第三个元素比较&#xff0…

jsvmp逆向实战X-Bogus篇,算法还原

jsvmp逆向实战X-Bogus篇,算法还原 前言X-Bogus算法逻辑寻找log插桩位置第四步第三步 前言 看过很多大佬关于X-Bogus算法还原的文章,都是通过log插桩,分析日志信息再结合动态调试一步步抽丝剥茧,最终还原算法,但是不同…

第1篇:Mysql数据库表结构导出字段到Excel(一个sheet中)

package com.xx.util;import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.sql.*; import java.io.*;public class DatabaseToExcel {public static void main(String[] args) throws Exception {// 数据库连接配置String u…

基于SpringBoot和HeatMap的全球地震热力图可视化实践

目录 前言 一、关于热力图 1、HeatMap简介 2、属性和方法介绍 二、全球地震热力图反演 1、地震信息查询开发 2、前端地图开发 三、地震带反演成果 1、三大地震带反演 2、地震区域分析 总结 前言 众所周知,全球的地震带主要可以分为三处地震带——环太平洋地…

利用API打造卓越的用户体验

🍎个人博客:个人主页 🏆个人专栏:日常聊聊 ⛳️ 功不唐捐,玉汝于成 目录 正文 1. 数据驱动的设计 2. 功能扩展与整合 3. 实时性与响应性 4. 个性化推荐与定制化服务 结语 我的其他博客 正文 随着数字化时代的…

我的电脑win11系统安装了谷歌浏览器,桌面的快捷方式打不开

安装好浏览器以后双击打不开右键打开文件位置也弹窗报错提示 但是我发现开始栏里面可以打开 说明我的软件应该是没有问题的,研究了一下 我实际的安装目录在:C:\Program Files\Google\Chrome\Application 桌面的快捷方式右键查看属性显示的地址却不对&a…

js生成笛卡尔集合

let arr[[黑, 金, 白],[16G, 32G],[电信, 移动, 联通], ]let listarr.reduce((a, b) > { return a.flatMap(x > b.map(y > [...x, y]))}, [[]] )console.log(list)生成结果

easyExcel大数据量导出oom

easyExcel大数据量导出 异常信息 com.alibaba.excel.exception.ExcelGenerateException: java.lang.OutOfMemoryError: GC overhead limit exceededat com.alibaba.excel.write.ExcelBuilderImpl.fill(ExcelBuilderImpl.java:84)at com.alibaba.excel.ExcelWriter.fill(Excel…

(MATLAB)第二十一章 Simulink仿真设计初步

Simulink是MATLAB的重要组成部分,可以非常容易地实现可视化建模,并把理论研究和工程实践有机地结合在一起,不需要书写大量程序,只需要使用鼠标和键盘对已有模块进行简单的操作和设置。 21.1 Simulink简介 Simulink是MATLAB软件的…

汽车ECU的虚拟化技术(五) -- 对MCU虚拟化实现难点的思考

目录 1.概述 2.虚拟化软件的难点 2.1 虚拟化中的中断处理 2.2 虚拟ECU的通信 3.小结 1.概述 在上面文章里汽车ECU的虚拟化技术(四) -- 对MCU虚拟化实现难点的思考-CSDN博客,解了OEM面临新的电子电气架构下的集成难点,引入了hypervisor以及VM调度机制…

内网使用rustdesk进行远程协助

文章目录 前言一、搭建rustdesk中继服务器二、搭建文件下载服务器三、创建引导脚本四、使用 前言 内网没有互联网环境,没法使用互联网上有中继服务器的远程协助工具,如teamviewer、todesk、向日癸等;在内网进行远程维护可以自己搭建中继服务…

缤纷浏览器 —— 一键换肤,个性随心换(H5实现浏览器换肤效果)

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

新版仿蓝奏网盘|城通网盘|百度网盘|闪客网盘|网盘源码系统,个人网盘系统

(购买本专栏可免费下载栏目内所有资源不受限制,持续发布中,需要注意的是,本专栏为批量下载专用,并无法保证某款源码或者插件绝对可用,介意不要购买!购买本专栏住如有什么源码需要,可向博主私信,第二天即可发布!博主有几万资源) 这是一款仿蓝奏网盘、城通网盘、百…

BGP4+简介

定义 BGP是一种用于自治系统AS(Autonomous System)之间的动态路由协议,常用版本是BGP-4,BGP-4只能传递IPv4路由。针对IPv6的BGP4扩展,通常称为BGP4。 目的 BGP4用于在AS之间传递路由信息,并不是所有情况…

自媒体用ChatGPT批量洗稿软件V5.9环境配置/软件设置教程【汇总】

大家好,我是淘小白~ 首先,感谢大家的支持~~ ChatGPT采集洗稿软件V5.9版本更新,此次版本更新修改增加了一些内容: 1、自定义多条指令,软件自动判断指令条数,进行输入 2、增加谷歌浏览多账号轮询&#xf…