如何在 15 帧的时间 window 的密集光流中找到特征点(特定像素)的速度?
How can I find speed of a feature point (certain pixel) in dense optical flow for temporal window of 15 frames?
我想使用 Farneback 密集光流跟踪每个像素作为 15 帧的时间 window 的特征点。使用 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 并将其除以时间,您可以说是像素的平均速度。
为此,您计算轨迹中每个点的长度:
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
希望对你有帮助,如果没有请留下评论。
我想使用 Farneback 密集光流跟踪每个像素作为 15 帧的时间 window 的特征点。使用 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 并将其除以时间,您可以说是像素的平均速度。
为此,您计算轨迹中每个点的长度:
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
希望对你有帮助,如果没有请留下评论。