用例:
给定已知(模拟)三维场景,并且:
2个对应的二维点向量v,v'其中v'表示三维点的投影,包括相对变换(使用5点算法提取)。
相机内部矩阵“k”
相对摄像机旋转矩阵“R”
相对相机平移“T”(按比例)
计算三角化的三维点位置(按比例)
实施:
对于每个摄影机,使用
[rayv]=[vx,vy,0]*k.inv()
[rayv']=[v'x,v'y,0]*k.inv()
向[rayv']添加相对旋转(影响光线方向)
[RayV']=[RayV']*[R]
形成两条射线的三维直线方程
L=[0,0,0]+[rayV](第一条光线与原点0,0,0相交)
L'=[T]+[RAYV'](添加相对摄影机平移)
在空间中查找点,使两条光线之间的距离最小,根据:
https://www.youtube.com/watch?v=HC5YikQxwZA
问题是:
导出的相机光线在z坐标系中偏离较大,而x,y的偏离最小,生成的三角点与生成的场景不一致。
我在这里做错什么了?上面的数学是正确的吗?射线计算和射线公式推导是否正确?
最佳答案
若要从二维点创建齐次坐标,必须将光线计算中的0替换为1。