考虑某路标点 y 在若干个关键帧 k=1,⋅⋅⋅,n 中看到。
y∈R4 ,取齐次坐标。每次观测为 xk=[uk,vk,1]⊤,取归一化平 面坐标 (这样可以忽略掉内参)。
记投影矩阵Pk=[Rk,tk]∈R3×4,为 World 系到 Camera 系 投影关系:
∀k,λkxk=Pky
其中 λk 为观测点的深度值 (末知) 。
我们以一个通用方程来描述,这里我们把 λ 放到了左边,但是效果是一样的。
∀k,λkxk=[Rk,tk]y λkukvk1=p1p5p9p2p6p10p3p7p11p4p8p12XYZ1 根据上面式子中的第三行
λk=Pk,3⊤y Pk,3T 为 Pk 的第 3 行。
将 λk=Pk,3Ty 带入前两行得到
ukPk,3⊤y=Pk,1⊤yvkPk,3⊤y=Pk,2⊤y 每次观测将提供两个这样的方程,视 y 为末知量,并将 y 移到等 式一侧:
u1P1,3⊤−P1,1⊤v1P1,3⊤−P1,2⊤⋮unPn,3⊤−Pn,1⊤vnPn,3⊤−Pn,2⊤y=0→Dy=0 于是, y 为 D 零空间中的一个非零元素。
由于 D∈R2n×4 ,在观测次于大于等于两次时,很可能 D 满秩, 无零空间。 寻找最小二乘解:
ymin∥Dy∥22, s.t. ∥y∥=1 解法: 对 D⊤D 进行 SVD:
D⊤D=i=1∑4σi2uiuj⊤ 其中 σi 为奇异值,且由大到小排列, ui,uj 正交。此时,取 y=u4 ,那么该问题的目标函数值为 σ4 。判断该解有效性的条件: σ4≪σ3 。若该条件成立,认为三角化有效,否则认为三角化无效。实用当中,还需要加上 y 投影正负号的判定作为依据
TIPS
一般我们通过两对点进行三角化
u1P1,3⊤−P1,1⊤v1P1,3⊤−P1,2⊤u2P2,3⊤−P2,1⊤v2P2,3⊤−P2,2⊤y=0→Dy=0 则有
SVD求解,右奇异矩阵的最后一行就是最终的解。