我有四个摄像头,每个摄像头都为我提供了篮球场的不同部分。由于摄像机的实际位置略有偏移以及摄像机边缘周围的镜头变形,因此我无法在没有某种校正的情况下简单地将视频拼接在一起。
我研究了ffmpeg的perspective
过滤器以及lenscorrection
过滤器。在前一种情况下,它只能创建梯形,而不能生成我想要的弯曲图像。在后一种情况下,对k1
和k2
使用负值似乎是朝正确的方向前进,但是它会使图像的顶部和底部失真至无意义的噪点,或者放大了太多了,以至于我丢失了重要的细节。
对于下面的示例图片,最终我希望中场线(右侧的蓝色垂直线)是垂直的,并且我希望底部白色桌子上的一堆电线保持可见和可识别。 / p>
此图像是使用GIMP中的“曲线弯曲”滤镜制作的,但我只是盯着它看-所以它并不完美。理想情况下,一旦获得确切的参数,中场线将 完全垂直
lenscorrection
过滤器时,k1
和k2
的值似乎没有达到我想要的效果:负k1
,负k2
:
负k1
,正k2
:
正面k1
,负面k2
:
正面k1
,正面k2
:
通常:
答案 0 :(得分:3)
我写了a post关于这个主题的书。奇怪的是,我还试图扭曲篮球场的视频。
有一些选择:
v360
滤镜将图像校正为直线投影(在现实生活中,直线在图像中保持直线)。lensfun
中为您的相机找到一个数据库条目,或者创建一个(在其文档中有说明),或者发送图片并要求维护者进行操作。然后,您可以使用lensfun
过滤器来准确校正失真。Lensfun如果想要准确的话可能是最好的选择,但是根据相机的不同,v360可能会产生足够好的结果,并且速度明显更快。
答案 1 :(得分:0)
简短的回答:否。FFMPEG没有弯曲功能。也就是说,无论如何弯曲都是不合适的。镜头校正 是必要的,提供的参数还差得远。
最终,我只是编写了一个脚本,使用lensfun
通过不同的镜头转储数千张图像,然后将它们略写为一个看起来不错的