北邮鲁鹏老师的课程《计算机视觉之三维重建(深入浅出sfm和SLAM核心算法)》 笔记

3,单视几何

3.1 2D

直线

平面上直线用 l = ( a , b , c ) T l=(a,b,c)^T l=(a,b,c)T来表示,点 x = ( x , y , 1 ) T x=(x,y,1)^T x=(x,y,1)T,直线上的点:
l T x = 0 l^Tx=0 lTx=0 直线的法向量:
n ⃗ = ( b , − a ) \vec n=(b,-a) n =(b,−a) 直线的方向向量:
d ⃗ = ( a , b ) \vec d=(a,b) d =(a,b) 两直线 l , l ′ l,l' l,l′的交点:
x = l × l ′ x=l\times l' x=l×l′

无穷远点线

两条平行线相交于无穷远点,可得直线 l l l的无穷远点:
x ∞ = ( b , − a , 0 ) T x_\infty=(b,-a,0)^T x∞​=(b,−a,0)T

x ∞ = l × l ′ = ( a , b , c 1 ) × ( a , b , c 2 ) = ( b c 2 − b c 1 , − ( a c 2 − a c 1 ) , a b − a b ) = ( b , − a , 0 ) x_\infty=l\times l'=(a,b,c_1)\times(a,b,c_2)=(bc_2-bc_1,-(ac_2-ac_1),ab-ab)=(b,-a,0) x∞​=l×l′=(a,b,c1​)×(a,b,c2​)=(bc2​−bc1​,−(ac2​−ac1​),ab−ab)=(b,−a,0)

所有的无穷远点形如 ( x , y , 0 ) T (x,y,0)^T (x,y,0)T,形成的无穷远线为:
l ∞ = ( 0 , 0 , 1 ) T l_\infty=(0,0,1)^T l∞​=(0,0,1)T

3.2 3D

平面

3维空间中平面 Π = ( a , b , c , d ) T \Pi=(a,b,c,d)^T Π=(a,b,c,d)T,点 x = ( x , y , z , 1 ) T x=(x,y,z,1)^T x=(x,y,z,1)T,平面上的点:
Π T x = 0 \Pi^Tx=0 ΠTx=0 平面的法向量:
n = ( a , b , c ) T n=(a,b,c)^T n=(a,b,c)T

直线

三维空间中直线可用两个平面相交得到,这种表示略繁琐,这边只关心直线的方向,用直线的方向 d d d来表示直线 l l l:
d = ( a , b , c ) T d=(a,b,c)^T d=(a,b,c)T

无穷远

直线 l l l的无穷远点为:
l ∞ = ( a , b , c , 0 ) T l_\infty=(a,b,c,0)^T l∞​=(a,b,c,0)T

l l l上的点可表示成 x = ( a λ , b λ , c λ , 1 ) T x=(a\lambda,b\lambda,c\lambda,1)^T x=(aλ,bλ,cλ,1)T,即 x = ( a , b , c , 1 λ ) T x=(a,b,c,\frac{1}{\lambda})^T x=(a,b,c,λ1​)T
x ∞ = lim ⁡ λ → ∞ ( a , b , c , 1 λ ) T = ( a , b , c , 0 ) T x_\infty=\lim_{\lambda\rightarrow\infty}(a,b,c,\frac{1}{\lambda})^T=(a,b,c,0)^T x∞​=limλ→∞​(a,b,c,λ1​)T=(a,b,c,0)T

所有的无穷远点形成的无穷远面:
Π ∞ = ( 0 , 0 , 0 , 1 ) T \Pi_\infty=(0,0,0,1)^T Π∞​=(0,0,0,1)T

3.3 影消点影消线

在相机坐标系下,直线 l l l的方向 d = ( a , b , c ) T d=(a,b,c)^T d=(a,b,c)T,其无穷远点为 x ∞ = ( a , b , c , 0 ) T x_\infty=(a,b,c,0)^T x∞​=(a,b,c,0)T,在投影在图像上的点成为影消点为 v v v:
v = K d v=Kd v=Kd d = K − 1 v ∥ K − 1 v ∥ d=\frac{K^{-1}v}{\|K^{-1}v\|} d=∥K−1v∥K−1v​

v = M x ∞ = K [ I , 0 ] [ a b c 0 ] = K [ a b c ] = K d v=Mx_\infty=K[I,0]\left[\begin{array}{c}a\\b\\c\\0\end{array}\right]=K\left[\begin{array}{c}a\\b\\c\end{array}\right]=Kd v=Mx∞​=K[I,0]⎣⎢⎢⎡​abc0​⎦⎥⎥⎤​=K⎣⎡​abc​⎦⎤​=Kd

平面 Π \Pi Π的法向量为 n n n,其无穷远线 l ∞ l_\infty l∞​在图像上的投影为影消线 l h l_h lh​:
n = K T l h n=K^Tl_h n=KTlh​ 影消线是由影消点构成。

l ∞ l_\infty l∞​上的点 P = ( a , b , c , 0 ) T P=(a,b,c,0)^T P=(a,b,c,0)T在图像上的影消点 v v v, l h T v = 0 l_h^Tv=0 lhT​v=0
所以 l h T K d = 0 l_h^TKd=0 lhT​Kd=0
平面 Π \Pi Π上的直线方向 d d d都垂直与 n n n,有 n T d = 0 n^Td=0 nTd=0
⇒ n = K T l h □ \Rightarrow n=K^Tl_h\square ⇒n=KTlh​□

3.4 单视重构

两条直线 d 1 , d 2 d_1,d_2 d1​,d2​的夹角为 θ \theta θ,影消点 v 1 , v 2 v_1,v_2 v1​,v2​,令 ω = ( K K T ) − 1 \omega=(KK^T)^{-1} ω=(KKT)−1:
cos ⁡ θ = v 1 T ω v 2 v 1 T ω v 1 v 2 T ω v 2 \cos\theta=\frac{v_1^T\omega v_2}{\sqrt{v_1^T\omega v_1}\sqrt{v_2^T\omega v_2}} cosθ=v1T​ωv1​ ​v2T​ωv2​ ​v1T​ωv2​​

cos ⁡ θ = d 1 T d 2 ∥ d 1 T d 2 ∥ = ( K − 1 v 1 ) T ∥ K − 1 v 1 ∥ K − 1 v 2 ∥ K − 1 v 2 ∥ = v 1 K − T K − 1 v 2 v 1 K − T K − 1 v 1 v 2 K − T K − 1 v 2 = v 1 T ω v 2 v 1 T ω v 1 v 2 T ω v 2 \cos\theta=\frac{d_1^Td_2}{\|d_1^Td_2\|}=\frac{(K^{-1}v_1)^T}{\|K^{-1}v_1\|}\frac{K^{-1}v_2}{\|K^{-1}v_2\|}=\frac{v_1K^{-T}K^{-1}v_2}{\sqrt{v_1K^{-T}K^{-1}v_1}\sqrt{v_2K^{-T}K^{-1}v_2}}=\frac{v_1^T\omega v_2}{\sqrt{v_1^T\omega v_1}\sqrt{v_2^T\omega v_2}} cosθ=∥d1T​d2​∥d1T​d2​​=∥K−1v1​∥(K−1v1​)T​∥K−1v2​∥K−1v2​​=v1​K−TK−1v1​ ​v2​K−TK−1v2​ ​v1​K−TK−1v2​​=v1T​ωv1​ ​v2T​ωv2​ ​v1T​ωv2​​

直线垂直时, cos ⁡ θ = 0 ⇒ \cos\theta=0\Rightarrow cosθ=0⇒
v 1 T ω v 2 = 0 v_1^T\omega v_2=0 v1T​ωv2​=0

单视标定

找到空间中相互垂直的三个平面的图像(一般房屋都具有此性质),并在图像上找出三条互相垂直线的影消点 v 1 , v 2 , v 3 v_1,v_2,v_3 v1​,v2​,v3​,则得到方程:
{ v 1 T ω v 2 = 0 v 2 T ω v 3 = 0 v 3 T ω v 1 = 0 \left\{\begin{array}{l}v_1^T\omega v_2=0\\ v_2^T\omega v_3=0\\ v_3^T\omega v_1=0 \end{array}\right. ⎩⎨⎧​v1T​ωv2​=0v2T​ωv3​=0v3T​ωv1​=0​ 如果相机是零倾斜,且方像素,则 K K K有三个自由度,所以 ω \omega ω有三个自由度,则可以求解方程组得到相机的内参数。

单视重构


求得 K K K后,可以在图像上找出一个平面的影消线 l h l_h lh​,通过 n = K T l h n=K^Tl_h n=KTlh​可恢复该平面的三维信息。
单视重构需要知道一些先验信息,如平行线、垂直线,且这些都需要人工去图像上做标记,适用于有大量平行线的场景中。

《计算机视觉之三维重建》笔记3-单视几何相关推荐

  1. 计算机视觉之三维重建——第一章:摄像机几何《深入浅出sfm和SLAM核心算法 (鲁鹏)》

    文章目录 第一章:摄像机几何 1. 针孔模型&透镜 1.1 小孔成像原理 1.2 针孔相机数学模型 1.3 透镜 (1)焦距 (2)近轴折射模型(带透镜的小孔成像模型) (3)失焦 (4)径向 ...

  2. 《计算机视觉之三维重建》笔记1-数学基础

    2012年就接触了三维视觉和SLAM,monoSLAM,基于EKF的.当时这个方向还没有起来,现在在ARVR.机器人.自动驾驶中都需SLAM技术.疫情出不去,居家办公之余,决定重温一下三维视觉和SLA ...

  3. 2021/06/29计算机视觉期末复习笔记整理

    计算机视觉期末复习笔记整理 引言 我的复习参考 期末考试考题回忆 PPT对应中文笔记整理 参考的几篇博客的笔记 引言 刚结束可能是我学生时代最后一场考试了,orz热乎着,记录一下. 这门课是学校新开的 ...

  4. 计算机视觉之三维重建——深入浅出SFM系统与SLAM系统的核心算法

    文章目录 第一章:摄像机几何 1. 针孔模型&透镜 1.1 小孔成像原理 1.2 针孔相机数学模型 1.3 透镜 (1)焦距 (2)近轴折射模型(带透镜的小孔成像模型) (3)失焦 (4)径向 ...

  5. VGPNN 笔记(单视频多样化编辑,视频类比)

    VGPNN 笔记(单视频多样化编辑,视频类比) <Diverse Video Generation from a Single Video> 论文:https://arxiv.org/ab ...

  6. 吴恩达《机器学习》学习笔记四——单变量线性回归(梯度下降法)代码

    吴恩达<机器学习>学习笔记四--单变量线性回归(梯度下降法)代码 一.问题介绍 二.解决过程及代码讲解 三.函数解释 1. pandas.read_csv()函数 2. DataFrame ...

  7. 吴恩达《机器学习》学习笔记二——单变量线性回归

    吴恩达<机器学习>学习笔记二--单变量线性回归 一. 模型描述 二. 代价函数 1.代价函数和目标函数的引出 2.代价函数的理解(单变量) 3.代价函数的理解(两个参数) 三. 梯度下降- ...

  8. 检测单击鼠标左键并拖动的消息_计算机视觉OpenCV学习笔记(四):关于鼠标的相关事件函数...

    (7)把鼠标当画笔 本篇目标: 学会使用OpenCV中的鼠标处理的相关事件,事件回调函数怎么去定义,参数有哪些,以及如何注册鼠标监听事件. 7.1 .1 回调函数的定义: 1 def name(eve ...

  9. 算法设计与分析课程复习笔记11——单源最短路径

    算法设计与分析课程复习笔记11--单源最短路径 单源最短路径 最短路径问题 输入:有权有向图G=(V,E) 路径p={ v 0 , v 1 , . . . , v k v_0, v_1, . . . ...

最新文章

  1. 小功率电子镇流荧光灯相关实验
  2. 填补商用安全产品空白 山石云安全升级版本亮相OpenStack Days
  3. Mysql-ROW_FORMAT
  4. 深入浅出的webpack4构建工具--webpack4+react构建环境(二十)
  5. linux+mysql+导出备份_Linux系统MySQL备份的导入导出的具体分析
  6. “中国音乐金钟奖”落地成都 今年起将连续举办三届
  7. OpenShift Security (8) - 安装并运行 DevSecOps 应用
  8. But don‘t be fooled, this phone does not
  9. c语言第三次作业(循环),C语言——第三次作业 - osc_kt69pvbx的个人空间 - OSCHINA - 中文开源技术交流社区...
  10. java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.JPEGCodec
  11. java 求集合真子集_干货 | 集合与函数概念知识点总结
  12. 在竞赛中不断成长--(广油最帅的崽)行走的皮卡丘
  13. 陆维家具设计拆单软件
  14. Netty4 学习笔记之三:粘包和拆包
  15. vlookup使用步骤_VLOOKUP函数的使用方法详解
  16. C语言 十进制转换为二进制
  17. Jetson Nano交叉编译教程
  18. PYthon 获取快捷方式(Lnk文件)指向文件
  19. 详解科大讯飞语音识别
  20. HDFS fsimage和edits中的文件信息查看

热门文章

  1. 在名为商品库的数据库中包含有商品规格表Content和商品特性表Property
  2. win10计算机怎么连接网络,Win10笔记本电脑,用有线连接网络怎么设置
  3. 微信小程序在线客服接入功能详解
  4. 开发一个投票项目的JAVA服务端-SSM项目
  5. kerberos使用详解
  6. Windows下安装并使用Exet2Fsd进行分区读写文件
  7. 阿里云盘变本地硬盘CloudDrive卸载的方法
  8. EXCEL之进销管理系统
  9. js日期加一天或者减一天
  10. 微信公众号认证法人信息验证失败怎么办?