Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Video 有没有使用ffmpeg删除GoPro鱼眼的方法_Video_Ffmpeg_Fisheye_Gopro - Fatal编程技术网

Video 有没有使用ffmpeg删除GoPro鱼眼的方法

Video 有没有使用ffmpeg删除GoPro鱼眼的方法,video,ffmpeg,fisheye,gopro,Video,Ffmpeg,Fisheye,Gopro,由于采用了以下过滤器,使用ffmpeg似乎可以补偿鱼眼失真: k1和k2的值是什么,特别是对于gopro? 有办法计算它们吗?FFmpeg有一个过滤器,可以用来纠正视频中的径向失真。也就是说,如果没有更多的背景信息,比如相机的型号和设置,就很难提供更多的信息。我怀疑这将需要一点尝试和错误无论如何 PS:你有没有试过在下面运行相机的软件?某些版本显然预先定义了这种校正过滤器,并且很容易访问。我不认为有一个通用的设置可以覆盖所有GoPro型号和镜头。还应考虑到人们可以使用一些定制/更换镜片 我希望得

由于采用了以下过滤器,使用ffmpeg似乎可以补偿鱼眼失真:

k1
k2
的值是什么,特别是对于gopro? 有办法计算它们吗?

FFmpeg有一个过滤器,可以用来纠正视频中的径向失真。也就是说,如果没有更多的背景信息,比如相机的型号和设置,就很难提供更多的信息。我怀疑这将需要一点尝试和错误无论如何


PS:你有没有试过在下面运行相机的软件?某些版本显然预先定义了这种校正过滤器,并且很容易访问。

我不认为有一个通用的设置可以覆盖所有GoPro型号和镜头。还应考虑到人们可以使用一些定制/更换镜片

我希望得到一个示例图像,其中包含您必须处理的内容,但不要紧……
希望以下内容对您有所帮助

检查此链接以了解(适用于其他型号)。要大致了解最佳
k1
k2
值,您应该找到与图像分辨率最接近的纵横比,然后

H.FOV deg
除以
V.FOV deg
,然后将结果乘以
Diag.FOV deg

示例:其中图片大小为1920 x 1080:这使其成为16:9宽屏

GoPro 3设置:16 x 9宽屏::
H视野
=69.5 |V视野=118.2 | |
诊断
=133.6

所以
118.2/69.5*133.6=227.216等

对于
k1
,结果现在是整数
227
(去掉小数点)

对于
k2
0.022
似乎是通用的(所有测试图像),因此您可以尝试
k2=-.022

对于
cx
cy
将它们保留为:
cx=0.5:cy=0.5:

例如:

ffmpeg-i in.mp4-vf“lenscorrection=cx=0.5:cy=0.5:k1=-0.227:k2=-0.022”out.mp4

结果:(通过GoPro Hero-2视频找到原始图像)


对于GoPro英雄5和6:

ffmpeg-i input.mp4\
-vf'透镜方向=k2=0.006:k1=-0.18'\
输出.mp4

对于GoPro 3+,视野宽度为16:9

ffmpeg -i input.mp4 -vf "lenscorrection=0.5:0.5:-0.335:0.097" output.mp4

您可以使用ffmpeg的
lenscorrection
修复鱼眼,但结果在边缘上看起来很糟糕

我写了关于使用ffmpeg纠正失真的各种方法-我认为
lensfun
v360
过滤器比lenscorrection过滤器更好

也就是说,理论上,您应该能够使用OpenCV函数计算k1和k2的值。您需要使用标志
校准固定主点
(以及透镜方向假设的将主点固定在图像中心的坐标),
校准固定K3
(因为透镜方向不使用
K3
),以及
校准固定S1(S2)S3(代码>(因为修正不考虑切线失真)。有示例代码可用,您可以简单地修改以执行此操作。


然而,当我尝试时,我被卡住了,因为我无法在OpenCV中找到固定焦距的方法,但在lenscorrection中,焦距被硬编码为图像对角线的一半。

谢谢回答,但我正在寻找lenscorrection(或其他开源,不使用第三方软件)的ffmpeg参数是的,答案是thx,但是
k1
k2
的特定值对于GoProdUpplicate在视频中是非常棒的:@abernier我认为提供一个示例输入图像(视频抓取)可以加快得到一些答案。太棒了!你刚刚赢得了赏金;)但是,你能解释一下k2值吗?为什么它是“普遍的”?谢谢again@abernier谢谢关于
k2与其说它是通用的,还不如说它适用于那种鱼眼镜头。我的测试图片都有一个“圆圈内的图像”类型的外观(黑色边缘)。它可能不适合全景镜头(图像失真,但屏幕没有黑色边缘)。我现在正在执行一项任务,但今晚晚些时候会用额外的信息/示例进行更新。
ffmpeg -i input.mp4 -vf "lenscorrection=0.5:0.5:-0.335:0.097" output.mp4