如何使用光流图像将后一帧扭曲到前一帧
Posted
技术标签:
【中文标题】如何使用光流图像将后一帧扭曲到前一帧【英文标题】:How to warp the later frame to previous frame using optical flow image 【发布时间】:2017-05-18 07:21:24 【问题描述】:我只有两张图片,一张是当前帧,一张是其他方式计算出来的光流图。
当前帧是:
光流图为:
我的问题是如何使用这两个图像计算前一帧?
我看到了一种解决方案,只是使用双线性插值将当前帧扭曲到带有光流图像的最后一帧。但我不知道该怎么做。
那么,有人可以给我一些建议或想法吗?非常感谢。
【问题讨论】:
参见:OpenCV warping image based on calcOpticalFlowFarneback。 【参考方案1】:您正在寻找 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))。您的代码基本上是在将网格添加到流程中吗? 光流通常是从前一个图像竞争到当前图像。如果要从当前图像中获取上一个,则必须反转流向以上是关于如何使用光流图像将后一帧扭曲到前一帧的主要内容,如果未能解决你的问题,请参考以下文章