本文是本人对空间中点的位置的推断的一些想法,有可能其他人已经有了类似的想法,权当做笔记了。
空间中位置的推断
1 目的
- 在空间中的某一位置,有一个物体 Object 出现,在地面上有至少三台设备利用相机拍摄到了这个物体。
- 假设 Object 的真实坐标为 Qgt=(xgt,ygt,zgt)。
- 假设设备编号为 i=1,2,...,N,设备 i 的拍摄坐标为 ξi=(xi,yi,zi)⊤,仰角为 ωi=(αi,βi,γi)⊤。
- 实际中,可以记 ξi=(longitudei,latitudei,altitudei)⊤,而 αi, βi, γi 表示拍摄方向的方向向量与 xOy, yOz, xOz 平面的夹角。
2 推导过程
2.1 由 α, β, γ 推导拍摄点 i 拍摄方向的方向向量
设 i 点的方向向量为 di=(di(x),di(y),di(z))⊤, ∣∣di∣∣=1,则
tanα=dx2+dy2dz, tanβ=dy2+dz2dx, tanγ=dx2+dz2dy
或
sinα=∣∣d∣∣dz=dz, sinβ=dx, sinγ=dy
从而有
di=(sinαi,sinβi,sinγi)⊤
2.2 由 ni 和 ξi 推导出点 i 的拍摄方向所在直线 li 方程
由设定可得,li 经过拍摄点 ξi,因此
li: sinαix−xi=sinβiy−yi=sinγiz−zi
2.3 寻找直线 li 和 lj 上的点 Pi 和 Pj 使得 min∣∣Pi−Pj∣∣2
理想情况下,为找到 Object 的坐标,只需找到直线 li 和 lj 的交点。
然而,由于拍摄角度的问题,无法保证 li 和 lj 一定相交,因此先找到点 Pi 和 Pj 使 min∣∣Pi−Pj∣∣2 即两点间距离最短。
首先,li 和 lj 必过点 Ai=ξi 和 Aj=ξj,则有 OAi=ξi,OAj=ξj,再由向量加法,有 OPi=OAi+AiPi,又由于 AiPi 与方向向量 di 共线,得
OPi=ξi+ti⋅di, (ti∈R)
同理
OPj=ξj+tj⋅dj, (tj∈R)
点 Pi 和 Pj 间的距离为
∣PiPj∣=∣OPj−OPi∣=∣(ξj−ξi)+tj⋅dj−ti⋅di∣
两边取平方,得到关于 ti 和 tj 的函数,求最小值
y=[(ξj−ξi)+tj⋅dj−ti⋅di]2=ti2∣di∣2−2titj(di⋅dj)+tj2∣dj∣2−2ti[(ξj−ξi)⋅di]+2tj[(ξj−ξi)⋅dj]+(ξj−ξi)2
求解上述方程最小值,解得 ti 和 tj,即可求得 OPi 和 OPj,即求出 Pi 和 Pj 的坐标。
也可以利用当 Pi 和 Pj 距离取最小值时,PiPj 与方向向量的垂直关系求解 ti 和 tj:
{PiPj⋅di=0PiPj⋅dj=0
2.4 估计 Object 的坐标
由上一部分,可以求得两个点 Pi 和 Pj 使得它们之间的距离在拍摄直线 li 和 lj 间最短,由于目的都是拍摄到 Object,因此可以假设 Object 就在线段 PiPj 附近,也可以说再线段中点 Pij 附近。
注意,前提是必须有三台设备拍摄 Object,因此有三条拍摄直线 li,lj,lk,按照上面的计算过程,可以得到三个中点
Pij, Pjk, Pik
(注意,上面表达中隐含有 Pij=Pji)
那么 Object 即在这三个点附近,再取这三个点的中点,记其为 Object 的坐标估计值
O=3Pij+Pjk+Pik
当然,若有 N 条拍摄直线,那么可以得到 CN2=2N(N−1) 个中点,此时 Object 的坐标估计值可以写为
O=N∑i=1N∑j=i+1NPij
有了估计值,此问题还能化为最小二乘问题
minf=∣∣Ogt−O∣∣2