欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 计算机视觉之三维重建-单视几何

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

2025/1/31 1:55:38 来源:https://blog.csdn.net/weixin_61091146/article/details/145266403  浏览:    关键词:计算机视觉之三维重建-单视几何

相机标定后,也无法从2D图像恢复出3D场景,因为2D点与光心连线上的任意3D点都满足条件。

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

1.1 2D平面
(1)2D平面上的直线

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

(2)2D平面直线交点

      定义两条直线叉乘得到的积,表示交点的坐标。如何证明2D平面上两条线的交点,x=l \times l'的点与两条直线分别垂直,则他一定同时在两条线上,即相交。

        点乘:也叫数量积,表示一个向量在另一个方向上的投影长度。    

(3)2D平面无穷远点

        无穷远点在齐次坐标下才能表示,所以在2维空间中,第三维为0表示无穷远点。

        首先任意选取两条直线l,l'-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交点的第三维为0则为无穷远点。

        证明?两条直线的任意一条均穿过无穷远点,只需要满足l^Tx_\infty =0(满足点乘为0,表示点在直线上),对于2D平面上广义的无穷远点可以定义为x_\infty=[1,1,0]^T(后续无穷远点变换会用到)。

(4)2D平面无穷远线

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

1.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空间无穷远点

        三维空间中齐次下第4维为0:3D空间中的无穷远点,定义为x_4为0,其他三个坐标任意。

        a,b,c表示线的方向

        eg:直线方向=[a,b c],则无穷远点就是在第四维上加一个0

(4)3D空间无穷远平面

         同一平面上的平行线的无穷远点的连线就是无穷远线。每一个平面对应一个无穷远线。而若干条无穷远直线形成无穷远平面。定义无穷远平面为\Pi=[0,0,0,1]^T

        两个平行平面对应的无穷远线是同一根线。(另一个角度解释:这根线也可以理解为这两个平面在无穷远处的交线)

2. 影消点与影消线

2.1 2D平面无穷远点和线的变换
(1)2D平面无穷远点的变换

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

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

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

        即l'=H^{-T}l

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

2.2 影消点

         影消点(像素坐标系下):三维空间中的无穷远点(世界坐标系下齐次坐标表示,最后一维为0)在图像中的投影点,在多视几何中,三维空间中两条平行线相交于无穷远点,而投影到二维空间的像平面坐标下就是一个有有意义坐标的点。 

p_{\infty }=Mx_{\infty }

        像素坐标系下欧式表示:

u=\frac{p_{1}}{p_{3}}

v=\frac{p_{2}}{p_{3}}

2.3 影消点与直线方向

        摄像机坐标系到像素坐标系,所以没有旋转平移(不考虑摄像机外参数)。

        三维空间的平行线方向为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||}

        给出影消点v和摄像机的内参数k则可以求出三维空间中一组平行线的方向d(已知二维的求三维的)

2.4 影消线

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

2.5 影消线与平面法向量

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

        已知影消线l_{horiz}和摄像机内参数矩阵K,求三维空间中的平面(平面π对应的影消线l_{\infty }l_{\infty }的投影为l_{horiz}(已知二维的求三维的)

        三维空间中平面的法向量与像素平面内的影消线通过摄像机内参数矩阵建立联系

2.6 总结

二维与三维之间的关系

影消点与直线的关系

影消线与面的关系

3. 单视重构

        先估计相机内参数(假设摄像机零倾斜且具有方形像素,给出3个垂直的面就可以求出K)

        有了摄像机内参数可以建立法向量和影消线的关系,求出法向量就可以知道面的信息了

        就可以大致恢复场景

        但是需要很多先验知识(空间中线、面之间的关系需要手动输入到系统中去)

3.1 两组平行线的夹角与影消点

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

3.2 w的性质

  3.3 单视图标定举例

        由于\omega具有5个自由度,目前列出的3个方程无法求出\omega,因此假定摄像机零倾斜且具有方形像素,则\omega_{2}=0\omega_{1}=\omega_{3},此时就可以求出\omega,进而分解出K(利用影消点和线的关系求解)三个面垂直求出摄像机内参数

        根据影消线与面之间的关系重构平面的法向量。(求出面的方向)

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

        差一个相似性变换

        弊端:需要先验信息

        不需要先验信息怎么进行重构