《计算机视觉之三维重建》笔记3-单视几何
北邮鲁鹏老师的课程《计算机视觉之三维重建(深入浅出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 lhTv=0
所以 l h T K d = 0 l_h^TKd=0 lhTKd=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θ=∥d1Td2∥d1Td2=∥K−1v1∥(K−1v1)T∥K−1v2∥K−1v2=v1K−TK−1v1 v2K−TK−1v2 v1K−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-单视几何相关推荐
- 计算机视觉之三维重建——第一章:摄像机几何《深入浅出sfm和SLAM核心算法 (鲁鹏)》
文章目录 第一章:摄像机几何 1. 针孔模型&透镜 1.1 小孔成像原理 1.2 针孔相机数学模型 1.3 透镜 (1)焦距 (2)近轴折射模型(带透镜的小孔成像模型) (3)失焦 (4)径向 ...
- 《计算机视觉之三维重建》笔记1-数学基础
2012年就接触了三维视觉和SLAM,monoSLAM,基于EKF的.当时这个方向还没有起来,现在在ARVR.机器人.自动驾驶中都需SLAM技术.疫情出不去,居家办公之余,决定重温一下三维视觉和SLA ...
- 2021/06/29计算机视觉期末复习笔记整理
计算机视觉期末复习笔记整理 引言 我的复习参考 期末考试考题回忆 PPT对应中文笔记整理 参考的几篇博客的笔记 引言 刚结束可能是我学生时代最后一场考试了,orz热乎着,记录一下. 这门课是学校新开的 ...
- 计算机视觉之三维重建——深入浅出SFM系统与SLAM系统的核心算法
文章目录 第一章:摄像机几何 1. 针孔模型&透镜 1.1 小孔成像原理 1.2 针孔相机数学模型 1.3 透镜 (1)焦距 (2)近轴折射模型(带透镜的小孔成像模型) (3)失焦 (4)径向 ...
- VGPNN 笔记(单视频多样化编辑,视频类比)
VGPNN 笔记(单视频多样化编辑,视频类比) <Diverse Video Generation from a Single Video> 论文:https://arxiv.org/ab ...
- 吴恩达《机器学习》学习笔记四——单变量线性回归(梯度下降法)代码
吴恩达<机器学习>学习笔记四--单变量线性回归(梯度下降法)代码 一.问题介绍 二.解决过程及代码讲解 三.函数解释 1. pandas.read_csv()函数 2. DataFrame ...
- 吴恩达《机器学习》学习笔记二——单变量线性回归
吴恩达<机器学习>学习笔记二--单变量线性回归 一. 模型描述 二. 代价函数 1.代价函数和目标函数的引出 2.代价函数的理解(单变量) 3.代价函数的理解(两个参数) 三. 梯度下降- ...
- 检测单击鼠标左键并拖动的消息_计算机视觉OpenCV学习笔记(四):关于鼠标的相关事件函数...
(7)把鼠标当画笔 本篇目标: 学会使用OpenCV中的鼠标处理的相关事件,事件回调函数怎么去定义,参数有哪些,以及如何注册鼠标监听事件. 7.1 .1 回调函数的定义: 1 def name(eve ...
- 算法设计与分析课程复习笔记11——单源最短路径
算法设计与分析课程复习笔记11--单源最短路径 单源最短路径 最短路径问题 输入:有权有向图G=(V,E) 路径p={ v 0 , v 1 , . . . , v k v_0, v_1, . . . ...
最新文章
- 小功率电子镇流荧光灯相关实验
- 填补商用安全产品空白 山石云安全升级版本亮相OpenStack Days
- Mysql-ROW_FORMAT
- 深入浅出的webpack4构建工具--webpack4+react构建环境(二十)
- linux+mysql+导出备份_Linux系统MySQL备份的导入导出的具体分析
- “中国音乐金钟奖”落地成都 今年起将连续举办三届
- OpenShift Security (8) - 安装并运行 DevSecOps 应用
- But don‘t be fooled, this phone does not
- c语言第三次作业(循环),C语言——第三次作业 - osc_kt69pvbx的个人空间 - OSCHINA - 中文开源技术交流社区...
- java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.JPEGCodec
- java 求集合真子集_干货 | 集合与函数概念知识点总结
- 在竞赛中不断成长--(广油最帅的崽)行走的皮卡丘
- 陆维家具设计拆单软件
- Netty4 学习笔记之三:粘包和拆包
- vlookup使用步骤_VLOOKUP函数的使用方法详解
- C语言 十进制转换为二进制
- Jetson Nano交叉编译教程
- PYthon 获取快捷方式(Lnk文件)指向文件
- 详解科大讯飞语音识别
- HDFS fsimage和edits中的文件信息查看