C++ OpenCV LK光流深度(Z)

C++ OpenCV LK光流深度(Z),c++,opencv,depth,opticalflow,C++,Opencv,Depth,Opticalflow,我通过OpenCV calcOpticalFlowPyrLK函数计算我之前跟踪的点上的光流(OF)。这是应该的。现在我尝试获得相对深度Z 为此,我尝试使用以下2个方程来表示u和v: (Tz*x - Tx*f) (Tz*y - Ty*f) u = ______________ v = _____________ Z Z 我省略了方程的旋转部分,因为我假设我有纯平移。 从上面解出Z的两个方程,

我通过OpenCV calcOpticalFlowPyrLK函数计算我之前跟踪的点上的光流(OF)。这是应该的。现在我尝试获得相对深度Z

为此,我尝试使用以下2个方程来表示u和v:

     (Tz*x - Tx*f)           (Tz*y - Ty*f)
u =  ______________      v = _____________
            Z                     Z
我省略了方程的旋转部分,因为我假设我有纯平移。 从上面解出Z的两个方程,并尝试使用我从上一个计算步骤获得的值(坐标)计算Z

  • 对于变量x,y,我使用了image1中的图像坐标
  • 对于u和v,我使用从计算->图像2中的跟踪点中获得的点
  • 例如,假设x=413,y=210,u=415,v=210,Tx=-0.9,Ty=-0.176,Tz=-0.3846,f=640
我的问题是我得到了两个不同的Z值。 在我看来,两者的深度应该相等

我搜索了更多关于如何解决我的问题的信息,并找到了一个很好的方法,除了我认为他们在性能分析中混合了Farnback和LK。 据我所知,方程式(第4页,第4页)背后的数学与上面的方程式相同,只是矩阵表示。我也试着用上面的值来解,结果得到了一个2x2矩阵。不知道我应该怎么处理4Z值

希望有人能解释我做错了什么,并引导我朝着正确的方向前进,这样我就能从中得到正确的Z值(深度)。谢谢