NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - AI模型在线查看 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割
随着非标准传感器尺寸的数码相机的出现,人们似乎对焦距、视场和数字倍增器以及它们之间的关系产生了许多困惑。本文旨在尝试消除一些困惑。
首先让我们定义几个术语:
- 焦距(Focal Length):镜头的焦距定义为镜头聚焦于无限远处的物体时,镜头光学中心(或相机镜头等复杂镜头的次要主点)到焦点(传感器)的距离。这是镜头的主要物理特性,可以在光学实验室中测量。无论镜头安装在哪种相机上,焦距都保持不变。 7mm 焦距镜头始终是 7mm 焦距镜头,300mm 焦距镜头始终是 300mm 焦距镜头
- 视野(Field of View):镜头的视野(有时称为覆盖角或视角)定义为物体在相机的胶片或传感器上记录的角度(在物体空间中)。它取决于两个因素,镜头的焦距(见上文)和胶片或传感器的物理尺寸。由于它取决于胶片/传感器尺寸,因此它不是镜头的固定特性,并且只有在知道将要使用的胶片或传感器的尺寸时才能说明。对于用于形成矩形框架的镜头,通常会给出三个视野;水平 FOV、垂直 FOV 和对角线 FOV
- 数字倍增器(Digital Multiplier):数字倍增器是一个术语,随着传感器小于 35mm 相机框架尺寸的数码相机的使用增加而开始使用。由于镜头的视角取决于镜头的焦距和图像的大小,因此你可以定义一个“数字倍增器”,即镜头焦距必须增加的倍数,才能提供与镜头在数字传感器上相同的视角。例如,安装在带有“1.6x”倍增传感器的数码相机上的 100mm 焦距镜头在该相机上的视野与安装在全画幅 35mm 相机上的 160mm 镜头相同。它仍然是 100mm 焦距镜头,但它的作用就像 160mm 镜头在全画幅相机上的作用一样。
从摄影的角度来看,我们真正最感兴趣的是视野。如果我们想要广角拍摄,我们需要宽视野(例如,水平 84 度)。如果我们想要“正常”拍摄,我们需要“正常”视野(例如,水平 40 度),如果我们想要远摄拍摄,我们需要一个狭窄的视野(例如,水平 6.5 度)。
![](http://www.bimant.com/blog/content/images/2024/07/image-45.png)
对于那些习惯于以 35 毫米相机来思考的人来说,这些分别对应于焦距为 20 毫米、50 毫米和 300 毫米的镜头。然而,对于 4x5 相机用户来说,他们会考虑广角 80 毫米镜头、200 毫米标准镜头和 1200 毫米远摄镜头。
所以,视野不是由焦距决定的,而是由焦距和格式大小定义的。这就是为什么当我们谈到 APS-C 格式的数码单反相机(传感器约为 15 毫米 x 22 毫米)时,广角镜头现在是 12.5 毫米,标准镜头现在是 32 毫米,远摄镜头现在是 188 毫米。请注意,这些数字与 35 毫米数字除以“1.6 倍数字乘数”(或在本例中为“1.6 倍数字除法器”)相同。
1、直线镜头和鱼眼镜头
在摄影中,你会发现两种类型的镜头。
第一种是直线镜头(rectilinear lens),这是一种典型的镜头,它将拍摄对象中的所有直线渲染为图像中的直线(见下图)。这几乎是我们的眼睛看事物的方式,也正是针孔相机看事物的方式。对于正常和远摄用途,直线镜头是理想的选择,但对于极端广角用途则不然。在非常广角的镜头中,靠近画面边缘的物体会被“拉伸”。也不可能制作出具有 180 度(半球)覆盖范围的直线镜头。事实上,很难制作出水平覆盖范围超过 100 度的直线镜头
第二种镜头是鱼眼镜头(fisheye lens)。鱼眼镜头将不穿过画面中心的直线渲染为曲线(尽管穿过中心的线条仍然是直线)。画面边缘的物体没有被拉伸,但会变形。很容易制作出对角线覆盖范围为 180 度的镜头(“全画幅鱼眼镜头”),甚至水平、垂直和对角线视场均为 180 度的镜头(“圆形画幅鱼眼镜头”)——尽管这会导致图像呈圆形,而画面的其余部分则为暗色。
鱼眼镜头最初是为科学用途而制造的,因为它们具有半球形覆盖范围,可以在单个画面上成像整个天空,因此可用于天文和气象研究。第一台“鱼眼”相机是装满水的针孔相机,但幸运的是,技术已经想出了更方便的方法来制作鱼眼图像!
![](http://www.bimant.com/blog/content/images/2024/07/image-46.png)
上图显示了直线镜头和鱼眼镜头的针孔模型。在鱼眼镜头中,广角光线更多地向画面中心弯曲。要使用真实镜头实现这一点,必须使用非常大、弯曲度非常大的负前部元件,如下面的镜头图所示:
![](http://www.bimant.com/blog/content/images/2024/07/image-48.png)
2、计算直线镜头的视野
使用简单的三角函数,可以非常轻松地计算出聚焦于无限远处的直线镜头的视野。其公式为:
FOV (rectilinear) = 2 * arctan (frame size/(focal length * 2))
此处的 frame size
是指图像帧在 FOV 方向上的尺寸,因此对于 35mm(即 24mm x 36mm),水平 FOV 的帧尺寸为 36mm,垂直 FOV 的帧尺寸为 24mm,对角线 FOV 的帧尺寸为 43.25mm。
当镜头聚焦在比无限远更近的距离时,视野会变窄,但除非进入微距范围,否则变化非常小。修正公式为:
FOV (rectilinear) = 2 * arctan (frame size/(focal length * 2 * (m+1)))
其中 m
是放大倍数。在无穷远处,m=0,因此第一个公式适用。对于全画幅 35mm 相机,聚焦在无穷远处的 50mm 镜头的水平视野约为 39.6 度。对于聚焦在 0.55m 处的相同 50mm 镜头,放大倍数为 0.1,视野缩小到 36.2 度,因此你可以看到,即使对于非常近的焦点(0.55m 小于 22 英寸),FOV 也不会发生太大变化。
放大倍数可以通过以下方式估算:
m = (focal length)/(focus distance - focal length)
这是 50mm 镜头在 35mm 画幅上的水平视角与焦距的关系图。如你所见,视角保持相当恒定,直到焦距变得很短。
![](http://www.bimant.com/blog/content/images/2024/07/image-49.png)
这是对数轴上的相同图,以便你可以更好地看到短焦距下事物的变化:
![](http://www.bimant.com/blog/content/images/2024/07/image-50.png)
3、计算鱼眼镜头的视野
鱼眼镜头的情况则更为复杂,因为不存在所谓的“鱼眼”方程。相反,不同的鱼眼镜头制造商使用了几种不同的“映射方程”或“投影”。
最常见的可能是等立体角投影,无限远焦点的 FOV 如下:
FOV (equisolid fisheye) = 4 * arcsin (frame size/(focal length * 4))
等距投影也很流行,其视野由以下公式给出:
FOV (equidistance fisheye) = (frame size/focal length)*57.3
上式中57.3 是用于从弧度转换为度。
不太常见的是正交投影,它提供以下视野:
FOV (orthogonal fisheye) = 2 * arcsin (frame size/(focal length *2)
立体投影给出:
FOV (stereographic fisheye) = 4 * arctan (frame size/(focal length * 4))
当然,就像直线镜头很少真正是直线的(它们会受到桶形和枕形失真的影响)一样,鱼眼镜头通常不遵循这些方程所建议的精确映射。除非你尝试进行涉及将鱼眼图像中的点精确转换为“真实世界”坐标的科学研究,否则这通常无关紧要。
你可以将各种直线和鱼眼投影视为与地图投影有些类似。我们都知道地球是一个球体,但我们可以使用墨卡托投影在矩形地图上用水平和垂直直线表示纬度和经度来表示它。这可以看作是直线镜头映射的类比。然而,就像直线镜头倾向于拉伸边缘的物体一样,这种地图投影会拉伸极点附近的区域。鱼眼镜头投影将对应于各种地图投影,其中纬度和经度线不再是直线,而是面积成比例,例如方位角等面积。每种映射方案都会以某种方式扭曲“现实”。我们更习惯于看到其中一种,因此我们会认为其中一种是“正常的”,另一种是“扭曲的”,但这并不完全正确。
![](http://www.bimant.com/blog/content/images/2024/07/image-51.png)
下图显示了对于给定焦距的直线镜头和四种鱼眼镜头,视野与帧尺寸之间的关系。如你所见,无论帧尺寸有多大,直线镜头都无法达到 180 度视野,但所有鱼眼镜头都可以。你还可以看到,对于所有镜头,视野都会随着帧尺寸的增大而增大。
![](http://www.bimant.com/blog/content/images/2024/07/image-52.png)
请注意,你不能随便使用任何镜头并使用非常大的帧来获得宽阔的视野。镜头的成像圈是镜头可以形成的最大图像的直径。由于光学元件的尺寸有限或设计的其他特征,该直径之外的镜头晕影会切断图像。设计用于全画幅 35mm 相机的镜头必须设计为具有至少 43.5 mm 的成像圈,因为 35mm 框架的对角线尺寸为 43.25mm。制造具有大成像圈的短焦距镜头非常困难。
4、示例
使用上述信息,我们可以计算出,例如,设计用于 35mm 的全画幅鱼眼镜头在 APS-C 相机上使用时的视野。让我们以 15mm 鱼眼镜头为例。假设它使用等立体角投影,因此 FOV 由 4 * arcsin(帧大小/(焦距 * 4))给出。
对于 24 x36mm 帧,这给出 147.5 度的水平 FOV、94.3 度的垂直 FOV 和 185 度的对角线 FOV。佳能为其 15/2.8 鱼眼镜头给出的数字为 142、92 和 180,因此映射不是完全等立体角,但它是典型的全画幅鱼眼镜头,对角线覆盖范围约为 180 度
对于 22.7 x 15.1mm 传感器(APS-C),数字变为:水平 FOV = 88.9 度,垂直 FOV = 58.3 度,对角线 FOV = 108.1 度。如果对鱼眼图像进行“去鱼眼”处理,即将图像转换为直线映射,则保留水平和垂直视场,拉伸图像边缘并减小对角线视场。因此,如果对图像进行“去鱼眼”处理,你将获得一个水平视场约为 88 度、垂直视场约为 58 度的图像。这相当于 19 毫米镜头的水平视场和 22 毫米镜头的垂直视场。这怎么可能呢?如果是 APS-C 传感器,当图像“去鱼眼”处理时,垂直与水平的比例为 1:1.5,并且更接近 1:1.7
![](http://www.bimant.com/blog/content/images/2024/07/image-53.png)
原文连接:Field of View - Rectilinear and Fishye Lenses
BimAnt翻译整理,转载请标明出处