我想使用x264的运动估计算法来校正一张图片中相对于另一张图片的运动。
所以,基本上,我想使用手机相机连续快速拍摄两张照片,并将这两张照片组合成一张(用于HDR拍摄)。在拍摄两张照片所需的时间之间,相机会移动一点,因此第二张照片的视角与第一张照片完全不同,因此我需要找到一种方法来校正第二张照片的动作。图片。
要做到这一点,我使用x264
,并编码一个由两帧组成的视频,这两帧是用相机拍摄的两张照片。我使用选项--bframes 0
,以便x264
输出一个I帧和一个P帧。 P帧将包含将I帧(第一帧)的各种宏块映射到P帧(第二帧)的运动矢量。运动矢量可以如下可视化:
我尝试对所有矢量求和,并沿着生成的矢量移动第二个图像。但这仅在图像中间进行校正;距离中心越远越远。这至少是由于这种方法无法检测旋转造成的。
因此。现在我有大量的矢量被放置在相关图片的2D空间中的不同点上。 我知道PIL有一个transform函数,我希望它可以用来执行实际转换。
但是,
transform
函数(EXTENT
,AFFINE
,QUAD
,MESH
,PERSPECTIVE
)来实现变换我正在寻找?