[英]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.