使用光流对比图像

时间:2017-06-14 03:50:51

标签: python opencv scikit-image

我有两个图像(frame1和frame2),我可以使用opencv计算u,v:

flow = cv2.calcOpticalFlowFarneback(prvs,next, 0.5, 1, 3, 15, 3, 5, 1, 0)

我想使用这个u来翻译frame1,v使用各种光流方法量化差异的质量。我打算使用这些u,v。

进行推断

有没有一种简单的方法可以达到这个目的?

1 个答案:

答案 0 :(得分:6)

计算简单翻译的一种方法是平均流量:

table {
 overflow: auto;
 height: 100px;
 table-layout: fixed;
 width: 100%;

}

这给出了翻译所需的向量avg_u = np.mean(flow[:, :, 0]) avg_v = np.mean(flow[:, :, 1])

关于您的评论,您似乎希望将每个像素(avg_u, avg_v)移动到其流向量(x,y)指定的位置。

首先,生成笛卡尔网格:

(u(x,y), v(x,y))

然后,所需的映射只是使用流程添加此网格:

height, width = flow.shape[0, 1]
R2 = np.dstack(np.meshgrid(np.arange(width), np.arange(height)))

最后,执行cv2.remap

pixel_map = R2 + flow