如何使用运动矢量作为转换源对图像执行变换?

时间:2014-08-06 10:10:50

标签: python image-processing

我想使用x264的运动估计算法来校正一张图片中相对于另一张图片的运动。

所以,基本上,我想使用手机相机连续快速拍摄两张照片,并将这两张照片组合成一张(用于HDR拍摄)。在拍摄两张照片所需的时间之间,相机会移动一点,因此第二张照片的视角与第一张照片完全不同,因此我需要找到一种方法来校正第二张照片的动作。图片。

要做到这一点,我使用x264,并编码一个由两帧组成的视频,这两帧是用相机拍摄的两张照片。我使用选项--bframes 0,以便x264输出一个I帧和一个P帧。 P帧将包含将I帧(第一帧)的各种宏块映射到P帧(第二帧)的运动矢量。运动矢量可以如下可视化:

Motion vectors

First frame

我尝试对所有矢量求和,并沿着生成的矢量移动第二个图像。但这仅在图像中间进行校正;距离中心越远越远。这至少是由于这种方法无法检测旋转造成的。

因此。现在我有大量的矢量被放置在相关图片的2D空间中的不同点上。 我知道PIL有一个transform函数,我希望它可以用来执行实际转换。

但是,

  1. 我应该使用哪个transform函数(EXTENTAFFINEQUADMESHPERSPECTIVE)来实现变换我正在寻找?
  2. 如何根据运动搜索估算算法中的一组矢量计算此变换函数的参数?

0 个答案:

没有答案