簡體   English   中英

如何在 15 幀的時間窗口的密集光流中找到特征點(特定像素)的速度?

[英]How can I find speed of a feature point (certain pixel) in dense optical flow for temporal window of 15 frames?

我想使用 Farneback Dense 光流跟蹤每個像素作為 15 幀時間窗口的特征點。 使用 flow=cv2.calcOpticalFlowFarneback(prvs,next,None,0.5,3,15,3,5,1.2,0) ,它顯示前一幀中每個像素的 dx 和 dy。 在這里,我想跟蹤超過 15 幀的某些特征點像素並找到該特征點的速度。

如何通過具有一系列空間位置的特征點的密集光流來估計速度,軌跡長度為 L?

你已經有了 dx 和 dy。 有了這些信息,如果您知道時間t您就可以始終獲得此類像素的速度。

vx =  dx / t
vy =  dy / t

dx 和 dy 可以是負數,因此它會保持某種方向......記住原點是左上角,指向右下角。

通過這種方式,您可以擁有每個維度每幀每個像素的速度。 您可以隨時跟蹤像素並計算其軌跡長度並將其隨時間划分,您可以在某種程度上說是像素的平均速度。

為此,您計算軌跡中每個點的長度:

length =  sqrt(dx**2 + dy**2)

並將它們添加到像素之后,我的意思是:

totalLength = length(prev1[y,x]) + length(prev2[y+prev1[y,x][1], prev2[x+prev1[y,x]][0]]) ....

然后將 totalLength 除以時間。

如果你想要總位移的速度,我的意思是從初始點到終點的速度(如果像素來回移動,則可能為 0)然后只需通過添加位移來跟蹤像素,然后計算速度.

disp = (x,y) + prev1[y,x] + prev2[y,x] ...
speed = disp / t

我希望這對您有所幫助,如果沒有,請發表評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM