首页 > 解决方案 > 有没有办法在ffmpeg中应用曲线弯曲?

问题描述

我有四个摄像头,每个摄像头为我提供篮球场的不同部分。由于相机物理位置的轻微偏移和相机边缘的镜头失真,我不能在没有某种校正的情况下简单地将视频拼接在一起。

我查看了 ffmpeg 的perspective过滤器以及lenscorrection过滤器。在前一种情况下,它只能创建一个梯形,而不是我想要的弯曲图像。在后一种情况下,使用负值k1并且k2似乎朝着正确的方向前进,但它要么使图像的顶部和底部扭曲到无意义的噪声点,要么它放大图像以至于我失去了重要的细节。

对于下面的示例图片,最终我希望中场线(右侧的蓝色垂直线)是垂直的,并且我希望底部白色桌子上的杂乱电线保持可见和可识别。

给定一个如下所示的视频:

在此处输入图像描述

我希望产生如下内容:

在此处输入图像描述

这张图片是使用 GIMP 中的“曲线弯曲”滤镜制作的,但我只是目不转睛地盯着它——所以它并不完美。理想情况下,一旦我得到确切的参数,中场线将完全垂直

使用lenscorrection过滤器时,没有值k1并且k2似乎得到了我想要的效果:

消极k1的,消极的k2

在此处输入图像描述

消极k1的,积极的k2

在此处输入图像描述

正面k1,负面k2

在此处输入图像描述

积极k1的,积极的k2

在此处输入图像描述

一般来说:

标签: ffmpeg

解决方案


我写了一篇关于这个主题的帖子。奇怪的是,我还试图使篮球场的视频不失真。

有几个选项:

  1. 尝试找到与您的相机产生的投影大致匹配的标准投影(例如鱼眼、立体投影等),然后查看或测量相机的视场。此时,您可以使用新v360滤镜将图像校正为直线投影(这是现实生活中的直线在图像中保持笔直的投影)。
  2. 要么为您的相机找到一个数据库条目lensfun,要么创建一个(在他们的文档中有说明),或者发送图片并要求维护人员去做。然后您可以使用lensfun过滤器来准确校正失真。

如果您希望它准确,Lensfun 可能是最佳选择,但根据您的相机,您可能会发现 v360 产生足够好的结果,而且速度明显更快。


推荐阅读