前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么不同焦距的鱼眼镜头可以达到同样的视角?

为什么不同焦距的鱼眼镜头可以达到同样的视角?

作者头像
3D视觉工坊
发布2023-04-30 09:42:09
2630
发布2023-04-30 09:42:09
举报

一句话总结的话,因为普通镜头和鱼眼镜头的投影关系不同。

假设某个点在视野中与光轴的夹角是 \theta,这个点在底片上成的像距离底片中心为 y 那么,对普通镜头来说,y = f * tan(\theta),这里 f 是焦距。由于底片大小是一定的,也就是 y 的最大值是定死的,所以 \theta 的最大值就和焦距 f 是对应的,f 越短,\theta 的最大值就越大,也就是视野越广。

第一次答案有误,现在修正。

=== 修改 ===

对鱼眼镜头来说,并不是按照正切的投影关系,而是故意设计成其他的投影关系,以便容纳更广的视野。那么选用怎样的投影关系呢?一般来说应该要符合这样几个条件:

1、连续可导

2、能容纳大视野(甚至超过180),也就是说对应的 y 必须比正切投影关系的 y 要小

3、形式简单,便于分析计算

4、最好有一定的物理意义

从这几个条件出发,常见的几种投影方式如下 [1]

1、y = 2 f * tan(\theta / 2) 体视投影,Stereographic (conform)

2、y = f * \theta 等距投影,方位等距投影,Linear scaled (equidistant)

3、y = 2 f * sin(\theta / 2) 等立体角投影,方位等积投影,Equal area (equisolid angle)

4、y = f * sin(\theta) 正交投影,Orthographic

其中,第二条等距投影的关系中,可以加入比例系数 k 来调节畸变的程度以适应不同的视野。这几种投影关系中,2.等距投影 和 1.等立体角投影 使用较多,并且也有明确的物理意义(物理意义就不再赘述了,毕竟和这个问题关系有点远了)。

我不知道提问的这两个镜头具体的投影方式,不过民用镜头里面使用 2.等距投影 的较多。假设都是采用这种投影方式,那么即使不同的焦距 f,只要比例系数 k 能对应的话,同样能做到视野180。并且从这个式子可以看出,如果投影方式都是 2.等距投影 的话,这两者的变形程度是一样的。(我原来的答案里说法有误)

=== 完毕 ===

仅凭记忆还是不太靠谱 sigh,带来一些误导了,抱歉

当然,对鱼眼镜头来说还有很多投影方式,各自有各自的出发点(并不是简单凑一个数学公式)。考虑投影方式不同,那么不同焦距而视野范围相同就更不奇怪了。

至于为什么普通镜头的投影关系前面没有比例系数 k 也很好理解,如果有了这个 k 那么照片和实物就无法保持"相似"了,就会有变形。

稍等我有空模拟几个图贴出来看看吧,对不同投影方式的成像特点就很直观了

=== 更新 ===

下午闲着没事琢磨着写了个程序模拟了一下几种不同的投影方式的效果。下面几幅图中,视野范围依次变大。首先是正常的镜头,这是一个视角接近120的超广角镜头

然后是体视投影的鱼眼镜头,焦距是上面那个普通镜头的1.5倍,但是视野范围反而大一些。下面几幅图所用的焦距都和此图一致。

然后是等距投影的效果

然后是等立体角投影

最后是正交投影,很明显,正交投影只能拍摄小于等于180视角的画面

[1] http://en.wikipedia.org/wiki/Fisheye_lens#Mapping_function

[2] 鱼眼镜头光学 王永仲 著 科学出版社

观点二

作者|欲三更

关于这件事,我一直想写一个“白话”版的文章解释一下,赶巧看到这个题目,就在这写吧。

理论详细了解可以查阅《鱼眼镜头光学》的这本书,但是只说理论似乎还是不太容易了解这里面的缘由。

如果你对基本的小孔成像有了解,你可以这么形象地理解:

上图是经典的小孔成像几何模型,可以看到左边的像平面是一个平面。这反映在数码相机中,就是 CCD/CMOS 感光阵列是一个平面。当我们在讨论普通镜头视场角和焦距的关系的时候,是以这个事实为基础的。但是,存在径向畸变的“异性”镜头(鱼眼镜头是其中一种)的作用,就是在小孔成像模型中,把成像面变成一个曲面。想象一下,在上图中的模型中,如果把左边的像平面变成一个半球形,像碗一样扣在小孔上,岂不是甭管什么焦距,都能获得 180 度的视场角?

比如下面这张焦距/视场角换算表中最左边的那个半圆。

现实中的鱼眼镜头基本就是这么个意思,只不过通过复杂的数学运算,设计师们能设计出等效于各种曲面的鱼眼镜头,球面、抛物面,以及只能用多项式去逼近的,没有明确解析式的复杂曲面。甚至能设计出视场角大于 180 度的镜头(*注意,这里只是个形象的比喻,后面我会解释)。

当我们获得了“像曲面”这个概念,基本上就可以对各种广角镜头的工作方式产生“画面感”了。但是,毕竟现实中的 CCD/CMOS 一般还是平面的,或者内部的结构我们都不管,最终你照出来的照片,总归是平面的。所以接下来的问题就是怎么把想象出来的“像曲面”上的像素,映射到平面的照片上?

最直接的影射方式,就是把一巴掌把曲面给“拍扁”了,这样映射出来的图像是类似这样的:

这是最常见的鱼眼镜头图像,这种图像不损失视场,也不需要特殊处理,相机输出的图像就是这样子的,可以认为是“原始图像”。

现在我解释一下星号处的比喻:在我们做映射计算的时候,有必要关心“像曲面”是什么曲面吗?没有必要,因为甭管是什么形状,只要凸的,我都能等效成把半球拍扁的过程中像素间的投影函数map(θ)。所以把“像曲面”理解成“像球面”就行了。

等距投影为例:

h=map(θ)=f∗θ

其中 f 是焦距,h 是像高,就是一个点到像中心的距离,θ 是视角。

把这个公式翻译一下,就是:像高等于以焦距为半径,视角为圆心角的一段圆弧的弧长。你可以理解成“像球面”上取一段弧长。

顺便可以推知,当视场角大于 180 度,θ取值可能大于π/2 ,正交投影就不能用了,因为sin(θ)在[0,π]上不是单调递增的,看看正交投影几何模型就很明白了:

当θ 大于π/2 的时候,茶壶“背面”的部分被挡住了。

Ok,如果我的脑神经回路和大多数人差不多的话,到这里我已经用非常形象易懂的语言把鱼眼镜头的基本理解讲完了(国内讲这个的文章实在是太含糊了,外人根本无法理解)。

下面扯个闲篇儿,现在 VR 比较火,youtube 和国内的视频网站都推出了 360 度全景视频播放的功能。那种视频如果不是后期拼接的话,那就是用鱼眼镜头拍摄的。但是如果你把那些视频下载下来,会发现不是圆的,而是这样的:

这个叫做“等距圆柱投影”(equirectangular),也叫正方形投影,可以从上面那个圆饼图中变换出来。这种投影方式在 VR 视频源中是主流方法。上面的图是两个鱼眼镜头的图像变换后拼成了一幅图。

所谓等距圆柱投影,就是竖直方向上采用等距投影,水平方向采用圆柱投影。你可以理解成用一个圆柱形的圆筒把像球面给包了起来。

这种投影方式最常见的领域就是世界地图:

想象一下,用一张世界地图把一个地球仪卷起来,你就能理解这种投影方式是怎么做的了。地球仪就是那个“像球面”,地图就是投影后的照片。很容易想到,这种投影方式出来的图像,高和宽都是f∗π ,所以叫正方形投影,而360 度视频是两个拼成一个,所以高宽比是 1:2,这也是为什么这种视频标准高宽比是 1:2 的原因。

最后插一句:“像曲面”这个概念,未必纯粹是虚构的,Sony 就推出过曲面 CMOS 这种黑科技,长这样:

这就是 Sony 的"曲面 CMOS 感光元件",他们的科技树点的有点恐怖了啊..

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 3D视觉工坊 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档