我通过 OpenCV calcOpticalFlowPyrLK 函数在我之前跟踪的点上计算光流(OF)。这可以正常工作。现在我尝试获得相对深度 Z。
为此,我尝试对 u 和 v 使用以下 2 个等式:
(Tz*x - Tx*f) (Tz*y - Ty*f)
u = ______________ v = _____________
Z Z
我省略了方程的旋转部分,因为我假设我有纯平移。从上面求解 Z 的两个方程,并尝试用从前面的 OF 计算步骤中获得的值(坐标)计算 Z。
- 对于变量 x,yi 使用来自 image1 的图像坐标。
- 对于 u 和 vi 使用从 OF 计算中获得的点 i -> image2 中的跟踪点。
- 例如,假设 x = 413,y = 210,u = 415,v = 210,Tx = -0.9,Ty = -0.176,Tz = -0.3846,f = 640
我的问题是我得到了 2 个不同的 Z 值。在我看来,两者的深度应该相等吗?
我搜索了一些关于如何解决我的问题的更多信息,并找到了一篇很好的论文,除了我认为他们在性能分析中混合了 Farnback 和 LK。据我了解等式(4,第 4 页)背后的数学原理,它与上面的等式相同,只是在矩阵表示中。我试着用上面的值来解决它,结果我得到了一个 2x2 矩阵。不知道我应该如何处理 4 个 Z 值?!
希望有人可以解释我做错了什么并引导我朝着正确的方向前进,以便我能够从 OF 中获得正确的 Z 值(深度)。谢谢!