2015-06-14 83 views
11

这似乎可以用ffmpeg的感谢鱼眼失真补偿的lenscorrection过滤器除去GoPro的鱼眼:有没有办法使用的ffmpeg

ffmpeg -i in.mp4 -vf "lenscorrection=cx=0.5:cy=0.5:k1=-.25:k2=-.25" out.mp4 

为​​和k2,特别是对于一个GOPRO什么样的价值观? 有没有一种方法来计算它们?

+0

视频复制过来:http://video.stackexchange.com/questions/12667/linux-command-line-option-to-do-video-lens-correction – payne

+0

@abernier我想提供一个**输入**图像(视频抓取)的例子会加快得到一些答案。 –

回答

4

FFmpeg有一个lenscorrection过滤器,可用于纠正视频中的径向失真。这就是说,没有更多的上下文 - 例如相机的型号和设置 - 很难提供更多信息。无论如何,我怀疑它需要一点反复试验。

PS:你有没有试过在WINE下运行相机的软件?它的一些版本显然具有预定义并容易访问的这种修正过滤器。

+3

感谢您的答案,但我正在寻找镜头校正(或其他开源,不使用第三方软件)的ffmpeg参数。 – user4223883

+0

是的,对于答案thx,但'k1'和'k2'的具体值对于gopro来说会很棒 – abernier

11

我不认为有一个通用的设置来覆盖所有的GoPro型号&镜头。同时人们也可以使用一些定制/替换镜头。

我所期待的一个例子形象特色你有什么用工作,但没关系...
希望下面的这些是对你有用以某种方式

检查此链接为GoPro Hero 3 settings(适用到其他型号)。为了获得最佳的​​和k2值的一个粗略的想法,你会发现最近的宽高比你的图像分辨率,然后...

鸿沟H. FOV degV. FOV deg和乘法结果与Diag. FOV deg

例如:其中图片尺寸为1920 x 1080:这使它成为16:9宽屏幕。

的GoPro 3设置:16×9宽屏幕:: H fov = 69.5 || V fov = 118.2 || Diag = 133.6

所以118.2/69.5 * 133.6 = 227.216 etc

为​​结果是现在整数227(丢弃小数点)。

对于k20.022似乎通用(所有测试图像),所以你可以试试k2=-.022

对于cxcy保持为: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的英雄-2视频的Google images原始图像中找到)。

+0

如果需要,算法可以在命令内完成。 – LordNeckbeard

+0

非常好!你刚赢得赏金;)但是,你能否更详细地解释k2值?为什么它是“普遍”?再次感谢 – abernier

+1

@abernier谢谢。关于'k2',它不是那么普遍,而只是它适用于这种类型的鱼眼镜头。我的测试图片都有一个“圆圈内的图像”类型的外观(黑色边缘)。对于全景镜头来说可能并不是最好的(失真图像,但是没有黑色边缘的fils屏幕)。我现在正在执行任务,但会在今晚晚些时候更新信息/示例。 –