4.3. 视场角

摄像头能看到它前方世界中的一个锥形区域;该锥形之外的一切都会落到传感器边缘之外。这个锥形的角宽度就是 视场角(FOV),它由两个数值决定——传感器尺寸和镜头焦距。

4.3.1. FOV 公式

A vertical lens with a sensor of width S behind it at distance f. Two rays leave the top and bottom edges of the sensor, pass through the centre of the lens, and diverge into the scene on the far side, defining a cone whose full angle is labelled FOV.

位于镜头后方距离 \(f\) 处、宽度为 \(S\) 的传感器定义出一个入射光线的锥形。该锥形的完整张角就是视场角。

一个宽度为 \(S\) 的传感器位于镜头后方距离 \(f\) 处,与光轴垂直。薄透镜模型指出,穿过镜头中心的光线不会偏折,因此从传感器的每个边缘各引一条这样的光线:每条都径直穿过镜头中心,并射向远端的场景。两条光线一起界定出传感器所能采集的光锥,而它们在镜头处的夹角就是视场角。

该锥形的一半是一个直角三角形。一条直角边是从镜头中心到传感器中心的光轴——长度为 \(f\)。另一条直角边是从传感器中心到一个边缘的半个传感器——长度为 \(S / 2\)。斜边就是光线本身,从镜头中心延伸到传感器边缘。

勾股定理把三条边长联系在一起,但勾股定理给不出角度,而镜头顶点处的角度正是我们要求的。三角学 是从边长比值通向角度的桥梁。在任何直角三角形中,一个角的 正切 定义为其对边除以邻边。对于半视场角,对边是半个传感器 \(S / 2\),邻边是光轴那条直角边 \(f\),所以

\[\tan(\text{half-FOV}) = \frac{S / 2}{f} = \frac{S}{2f}\]

对等式两边应用正切的逆运算——反正切 函数——即可解出角度本身:

\[\text{half-FOV} = \arctan \! \left( \frac{S}{2f} \right)\]

锥形关于光轴对称,所以完整 FOV 是半角的两倍:

\[\text{FOV} = 2 \cdot \arctan \! \left( \frac{S}{2f} \right)\]

从公式可以得出两个推论:

  • 决定角度的是镜头焦距,而非绝对尺寸。 “广角”镜头之所以广,是因为它的焦距 ——\(f\) 越小,比值 \(S / 2f\) 就越大,锥形也就越宽。长焦距会收窄锥形(“长焦”镜头)。

  • 传感器尺寸也很重要。 把同一个镜头装在更小的传感器前会裁切锥形——同一镜头在更小的传感器上的视场角比在更大的传感器上更窄。这就是为什么不同摄像头上的焦距数值不能直接比较;FOV 同时取决于 \(f\)\(S\)

4.3.2. 三种镜头选择

取一个 4.8 mm × 3.6 mm 的传感器(一种常见的小幅面尺寸,大致与 OpenMV Cam 传感器所提供的相当)以及三种镜头选择。

焦距

对角线 FOV

水平 FOV

垂直 FOV

说明

2.8 mm

~94°

~81°

~66°

广角

4 mm

~74°

~62°

~48°

标准

8 mm

~41°

~33°

~25°

窄角 / 长焦

三列都套用同一个公式。对角线 FOV 取 \(S\) 等于传感器对角线 \(\sqrt{W^2 + H^2}\)(此传感器为 6 mm);水平 FOV 取 \(S = W = 4.8\) mm;垂直 FOV 取 \(S = H = 3.6\) mm。焦距减半会使每个锥形几乎翻倍;焦距加倍则使其几乎减半。

镜头数据手册通常把 对角线 FOV 作为单一的标称数值公布,因为它从传感器一角跨到对角。而在规划画面能容纳什么时,水平和垂直 FOV 更为直接有用,因为画面是矩形的,矩形工作区域的边界沿水平和垂直方向,而不是沿对角线。

4.3.3. 选择焦距

应用所需的 FOV 由摄像头必须看到多大的区域以及摄像头与之的距离决定。如果摄像头位于一个 0.6 m × 0.6 m 工作区域上方 1 m 处,则覆盖一条边所需的角向 FOV 为 \(2 \cdot \arctan(0.3 / 1) \approx 33°\),上面的 8 mm 镜头与之接近。

比应用所需更广会使物体在画面中变小,把像素浪费在背景上,并增大镜头畸变。比所需更窄则会把场景的部分内容丢到传感器边缘之外。合适的镜头是在摄像头的预定距离下仍能覆盖工作区域的最长焦距。