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