《计算机视觉之三维重建》笔记4-三维重建基础

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

4,三维重建基础

4.1,点重建问题

  • P1:已知: p , p ′ , K , R , T p, p', K, R, T p,p,K,R,T,求 P P P
  • P2:已知: p , p ′ , K p, p', K p,p,K,求 P , R , T P, R, T P,R,T
  • P3:已知: p , p ′ p, p' p,p,求 P , K , R , T P, K, R, T P,K,R,T
    在这里插入图片描述

P1求解,三角化:
方法1:求解线性方程组
{ p = K [ I , 0 ] P p ′ = K [ R , T ] P \left\{ \begin{array}{l} p=K[I,0]P \\ p'=K[R,T]P \end{array}\right. { p=K[I,0]Pp=K[R,T]P

方法2:求解优化问题
P ∗ = arg min ⁡ P d ( p , M P ) + d ( p ′ , M ′ P ) P^*=\argmin_P d(p, MP) + d(p', M'P) P=Pargmind(p,MP)+d(p,MP)

4.2,多视几何关键问题

  • 摄像机几何:从一或多张图像中求解摄像机内外参数K,R,T
  • 场景几何:通过两至多幅图像中求解场景坐标P
  • 对应关系:已知一幅图像中p点,求另外一张图像中的对应点p’

4.3,极几何

在这里插入图片描述
极几何描述两个视图的几何关系

定义
  • 极平面:过 P , O 1 , O 2 P,O_1,O_2 P,O1,O2的平面
  • 基线:直线 O 1 O 2 O_1O_2 O1O2
  • 极线:极平面与像平面交线 l , l ′ l,l' l,l
  • 极点:基线与像平面交点 e , e ′ e,e' e,e
性质
  • 所有的极平面相交于基线
  • 像平面上所有的极线相交于极点
  • p p p的对应点在极线 l ′ l' l
特殊视图:
  • 平行试图
  • 前向平移

4.4,本质矩阵

先讨论规范相机情况: K = K ′ = I K=K'=I K=K=I,坐标系 O 2 O_2 O2 O 1 O_1 O1的变换为 R , T R,T R,T,定义本质矩阵 E = T × R E=T\times R E=T×R,有:
p ′ T E p = 0 p'^TEp=0 pTEp=0

证明:
根据1.4节可知: p ′ , O 2 p',O_2 p,O2在坐标系 O 1 O_1 O1的坐标分别为 R T p ′ − R T T , − R T T R^Tp'-R^TT,-R^TT RTpRTT,RTT
即: O 1 p ′ → = R T p ′ − R T T , O 1 O 2 → = − R T T \overrightarrow{O_1p'}=R^Tp'-R^TT,\overrightarrow{O_1O_2}=-R^TT O1p =RTpRTT,O1O2 =RTT
可得: O 1 p ′ → × O 1 O 2 → = R T T × R T p ′ \overrightarrow{O_1p'}\times\overrightarrow{O_1O_2}=R^TT\times R^Tp' O1p ×O1O2 =RTT×RTp
由于: O 1 p ′ → × O 1 O 2 →   ⊥   O 1 p → \overrightarrow{O_1p'}\times\overrightarrow{O_1O_2}\ \perp\ \overrightarrow{O_1p} O1p ×O1O2   O1p
得: ( R T T × R T p ′ ) T p = 0 (R^TT\times R^Tp')^Tp=0 (RTT×RTp)Tp=0
( R T T × R T p ′ ) T p = ( R T ( T × p ′ ) ) T p = ( R T [ T × ] p ′ ) T p = p ′ T [ T × ] T R p = − p ′ [ T × ] R p = − p ′ T ( T × R ) p = − p ′ T E p □ (R^TT\times R^Tp')^Tp=(R^T(T\times p'))^Tp=(R^T[T_\times]p')^Tp=p'^T[T_\times]^TRp=-p'[T_\times]Rp=-p'^T(T\times R)p=-p'^TEp\square (RTT×RTp)Tp=(RT(T×p))Tp=(RT[T×]p)Tp=pT[T×]TRp=p[T×]Rp=pT(T×R)p=pTEp

推论:

1, E e = 0 Ee=0 Ee=0

证明:
O 1 , e O_1,e O1,e O 2 O_2 O2下的坐标分别为 T , R e + T T,Re+T T,Re+T
O 2 e → × O 2 O 1 → = 0 \overrightarrow{O_2e}\times\overrightarrow{O_2O_1}=0 O2e ×O2O1 =0
得: T × ( R e + T ) = 0 T\times (Re+T)=0 T×(Re+T)=0
∴ T × R e + T × T = 0 \therefore T\times Re+T\times T=0 T×Re+T×T=0
∴ T × R e = 0 \therefore T\times Re=0 T×Re=0,即 E e = 0 □ Ee=0\square Ee=0

2, e ′ T E = 0 e'^TE=0 eTE=0

证明:
O 2 , e ’ O_2,e’ O2,e O 1 O_1 O1下的坐标分别为 − R T T , R T e ′ − R T T -R^TT,R^Te'-R^TT RTT,RTeRTT
O 1 e ′ → × O 1 O 2 → = 0 \overrightarrow{O_1e'}\times\overrightarrow{O_1O_2}=0 O1e ×O1O2 =0
得: − R T T × ( R T e ′ − R T T ) = 0 -R^TT\times(R^Te'-R^TT)=0 RTT×(RTeRTT)=0
∴ R T ( T × e ′ ) = 0 \therefore R^T(T\times e')=0 RT(T×e)=0
R T ( T × e ′ ) = R T [ T × ] e ′ = − R T [ T × ] T e ′ = − ( [ T × ] R ) T e ′ R^T(T\times e')=R^T[T\times]e'=-R^T[T\times]^Te'=-([T\times]R)^Te' RT(T×e)=RT[T×]e=RT[T×]Te=([T×]R)Te,即 E T e ′ = 0 □ E^Te'=0\square ETe=0

3,极线: l ′ = E p , l = E T p ′ l'=Ep,l=E^Tp' l=Ep,l=ETp

证明:
根据推论1可得: p ′ T E e = 0 p'^TEe=0 pTEe=0,又 p ′ T E p = 0 p'^TEp=0 pTEp=0
所以直线 p ′ T E p'^TE pTE过点 e e e和点 p p p,即极线 l l l
∴ l = E T p ′ \therefore l=E^Tp' l=ETp
同理: l ′ = E p □ l'=Ep\square l=Ep

4.5,基础矩阵

拓展到一般相机情形,定义基础矩阵 F = K ′ − T [ T × ] R K − 1 F=K'^{-T}[T_\times] RK^{-1} F=KT[T×]RK1,有
p ′ T F p = 0 p'^TFp=0 pTFp=0

证明:
将一般相机的像平面映射到规范相机像平面上: p c = K − 1 p , p c ′ = K − 1 p ′ p_c=K^{-1}p,p_c'=K^{-1}p' pc=K1p,pc=K1p即可得证.

推论:

同本质矩阵一样,有:
1, F e = 0 Fe=0 Fe=0
2, e ′ T F = 0 e'^TF=0 eTF=0
3,极线: l ′ = F p , l = F T p ′ l'=Fp,l=F^Tp' l=Fp,l=FTp

基础矩阵估计

获得N对匹配点 < p i ( u i , v i ) , p i ′ ( u i ′ , v i ′ ) > <p_i(u_i,v_i),p_i'(u_i',v_i')> <pi(ui,vi),pi(ui,vi)>,带入基础矩阵公式得到关于基础矩阵的线性方程组 W f = 0 Wf=0 Wf=0,其中 W W W是关于点的信息的已知矩阵, f f f是将 F F F按行排成一个列向量。

第一步

初步求解 F F F的估计 F ^ \hat F F^
解法一,8点算法:由于 F F F的自由度为7,选取8个点,求解线性方程组得到 F ^ \hat F F^
W f ^ = 0 W\hat f=0 Wf^=0解法二,约束优化问题:
f ^ = arg min ⁡ f ∣ ∣ W f ∣ ∣ , s . t ∣ ∣ f ∣ ∣ = 1 \hat f=\argmin_f ||Wf||,\quad s.t ||f||=1 f^=fargminWf,s.tf=1

第二步

第一步中求得的 F ^ \hat F F^秩为3,实际 F F F的秩为2,可求解优化问题:
F = arg min ⁡ F   ∥ F − F ^ ∥ F , s t . d e t ( F ) = 0 F=\argmin_F\ \lVert F-\hat{F}\rVert_F,\quad st.det(F)=0 F=Fargmin FF^F,st.det(F)=0
F ^ \hat F F^进行SVD分解:
F ^ = U [ s 1 0 0 0 s 2 0 0 0 s 3 ] V T ⇒ F = U [ s 1 0 0 0 s 2 0 0 0 0 ] V T \hat{F}=U\left[ \begin{array}{lll} s_1&0&0 \\ 0&s_2&0 \\ 0&0&s_3 \end{array}\right]V^T \Rightarrow F=U\left[ \begin{array}{lll} s_1&0&0 \\ 0&s_2&0 \\ 0&0&0 \end{array}\right]V^T F^=Us1000s2000s3VTF=Us1000s20000VT

归一化8点法

问题:精度较低,10+像素点误差,因为 W W W矩阵中涉及像素点坐标的乘积,会比较大,导致整个计算的误差较大。
解决办法是对像素点进行归一化。

4.6,单应矩阵

在这里插入图片描述
场景中的点位于同一平面 π \pi π,平面单位法向量为 n n n,定义单应矩阵 H = K ′ ( R + t n d T ) K − 1 H=K'(R+tn_d^T)K^{-1} H=K(R+tndT)K1,其中 n d = n / d n_d=n/d nd=n/d,则有点对应关系: p ′ = H p p'=Hp p=Hp

证明:
O 1 P → ⋅ n = d \overrightarrow{O_1P}\cdot n=d O1P n=d,令点P在 O 1 O_1 O1坐标系下的三维坐标为 P P P
则有 n T ⋅ P = d n^T\cdot P=d nTP=d
相机模型: p = K P , p ′ = K ′ ( R P + t ) p=KP,p'=K'(RP+t) p=KP,p=K(RP+t)
p ′ = K ′ ( R P + t ) = K ′ ( R P + t ⋅ 1 ) = K ′ ( R P + t ⋅ n T P d ) = K ′ ( R P + t ⋅ n d T ⋅ P ) = K ′ ( R + t n d T ) P = K ′ ( R + t n d T ) K − 1 K P = H p □ p'=K'(RP+t)=K'(RP+t\cdot 1)=K'(RP+t\cdot \frac{n^TP}{d})=K'(RP+t\cdot n_d^T\cdot P)=K'(R+tn_d^T)P=K'(R+tn_d^T)K^{-1}KP=Hp\square p=K(RP+t)=K(RP+t1)=K(RP+tdnTP)=K(RP+tndTP)=K(R+tndT)P=K(R+tndT)K1KP=Hp

单应矩阵估计

一对点对应贡献两个方程,所以只需4个对应点,就可以通过线性方程估计出单应矩阵。

基础矩阵建立点与极线的关系,单应矩阵建立点与点的关系。

猜你喜欢

转载自blog.csdn.net/dragonchow123/article/details/125232442