首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于15帧的时间窗口,如何在密集光流中找到特征点(特定像素)的速度?

对于15帧的时间窗口,如何在密集光流中找到特征点(特定像素)的速度?
EN

Stack Overflow用户
提问于 2019-01-15 03:42:28
回答 1查看 1.4K关注 0票数 1

我想跟踪每个像素作为特征点的时间窗口15帧使用Farneback密集光流。使用flow=cv2.calcOpticalFlowFarneback(prvs,None,0.5,3,15,3,5,1.2,0)显示了前一帧中每个像素的dx和dy。在这里,我想跟踪15帧的某些特征点像素,并找到该特征点的速度。

如何用轨迹长度L的空间位置序列特征点的密集光流来估计速度?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-15 09:38:29

你已经有dx和dy了。有了这些信息,如果你知道时间t的话,你总是可以得到这样的像素的速度。

代码语言:javascript
复制
vx =  dx / t
vy =  dy / t

dx和dy可能是负的,所以它会保持某种方向.请记住,原点是左上角,并指向右下角。

这样,您就可以有每个像素的速度每帧每维。您可以随时跟踪像素并计算其轨迹长度并将其分割成时间,可以说是像素的平均速度在某种程度上。

为此,计算轨迹中每个点的长度:

代码语言:javascript
复制
length =  sqrt(dx**2 + dy**2)

并将它们添加到像素后面,我的意思是:

代码语言:javascript
复制
totalLength = length(prev1[y,x]) + length(prev2[y+prev1[y,x][1], prev2[x+prev1[y,x]][0]]) ....

然后用时间除以totalLength。

如果你想要总位移的速度,我指的是从起始点到终点的速度(如果像素来回移动的话,可以是0),然后通过增加位移来跟踪像素,然后计算速度。

代码语言:javascript
复制
disp = (x,y) + prev1[y,x] + prev2[y,x] ...
speed = disp / t

我希望这能对你有所帮助,如果不是这样的话,我会留下评论的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54192407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档