我已经实现了一个在两个连续帧之间使用OpenCV的 calcOpticalFlowFarneback() 来计算密集光流的函数 . 我正在以 x,y 的形式将结果写入 txt-file (每个向量一行) . 因此,图像大小为 640x480 ,因此我有一个 307200 向量,表示两个连续帧之间图像中每个像素的速度方向 .

我想知道是否有可能根据光流信息计算变换矩阵 . 会说,是否有可能重建图像中的物体如何在两帧之间移动并重建变换矩阵,以便我可以将第二张图像与第一张图像对齐?

图像不包含我想跟踪的对象(由白色背景上的单个点构建的对象),但是对象本身是丰富场景的投影,因此光流信息中存在一些噪声 . 图像之间的帧速率 tf 是已知的 . 注意,尽管光流仅提供2D信息(因为输入图像是2D),但是变换矩阵稍后应该在3D对象上执行3D空间变换 . 我输入光流计算的2D图像是该对象的特定2D-'snapshots' . 由于受限制的自由度,来自2D光流的重建变换矩阵应足以正确地变换3D对象 .

我想尽可能多地使用内置的OpenCV功能 . 我已经阅读了cv::EstimateRegitTransformationhere,我认为这可能会有所帮助 . 但我不确定如何将307.200向量正确保存的所有信息都输入到这种矩阵的计算流水线中 . 也许我可以计算一个代表完整光流向量场平均值的单个向量,并使用其属性作为运动恢复的输入?