如何使用光流图像将后一帧图像变形为前一帧图像

10

我只有两个图像,一个是当前的帧,另一个是通过其他方法计算得到的光流图像。

当前帧是: enter image description here

光流图像是: enter image description here

我的问题是如何使用这两个图像计算出前一帧?

我看到了一种解决方案,就是使用双线性插值将当前帧与光流图像变形为上一帧。但我不知道具体怎么做。

所以,能否有人给我一些建议或想法?非常感谢。


1个回答

13

你正在寻找OpenCV函数remap。如果你有当前图像(currImg)和光流矩阵(flow),那么你可以通过先反转光流再应用函数remap来预测上一张图片。在Python中,代码如下:

import cv2
h, w = flow.shape[:2]
flow = -flow
flow[:,:,0] += np.arange(w)
flow[:,:,1] += np.arange(h)[:,np.newaxis]
prevImg = cv2.remap(curImg, flow, None, cv.INTER_LINEAR)

你好!只是好奇:这里反转光流有什么意义吗?如果光流是从之前的图像到当前图像,根据cv2.remap的公式,dst(x,y)= src(map_x(x,y),map_y(x,y))。你的代码是否基本上是将网格添加到光流中? - Shanmy
光流通常是从先前的图像到当前的图像计算出来的。如果您想从当前图像获取先前图像,则必须反转光流方向。 - Tobias Senst

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接