4.3. 視野

相機看到的是它前方世界的一個錐形範圍;落在該錐形之外的所有事物都會落到 sensor 的邊緣之外。該錐形的角寬度就是視野(FOV),它由兩個數字決定 —— sensor 尺寸與鏡頭焦距。

4.3.1. FOV 公式

一片垂直的鏡頭,後方距離 f 處有一塊寬度為 S 的 sensor。 兩條光線分別從 sensor 的上緣與下緣出發, 穿過鏡頭中心,並在另一側向場景中發散, 界定出一個全角度標示為 FOV 的錐形。

後方距離 \(f\) 處、寬度為 \(S\) 的 sensor 界定出一個進入光線的錐形範圍。該錐形的全角度就是視野。

寬度為 \(S\) 的 sensor 位於鏡頭後方距離 \(f\) 處,與光軸垂直。薄透鏡模型指出,穿過鏡頭中心的光線會不偏折地繼續前進,因此從 sensor 的每個邊緣各追蹤一條這樣的光線:每條光線都筆直穿過鏡頭中心,並射入另一側的場景中。兩者共同界定出 sensor 所能收集的光錐,而它們在鏡頭處之間的夾角就是視野。

該錐形的一半是一個直角三角形。其中一條直角邊是從鏡頭中心到 sensor 中心的光軸 —— 長度為 \(f\)。另一條直角邊是從 sensor 中心向外到某一邊緣的半個 sensor —— 長度為 \(S / 2\)。斜邊則是光線本身,從鏡頭中心延伸到 sensor 邊緣。

畢氏定理將這三條邊長串連在一起,但畢氏定理並不會給出角度,而我們所追求的正是鏡頭頂點處的那個角度。三角學正是從邊長比值通往角度的橋樑。在任何直角三角形中,一個角的正切定義為其對邊除以鄰邊。對於半 FOV 角而言,對邊是半個 sensor \(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\) 就越大,錐形也就越廣。長焦距會使錐形變窄(即「望遠」鏡頭)。

  • sensor 尺寸同樣重要。 把同一顆鏡頭裝在較小的 sensor 前方會裁切掉部分錐形 —— 同一顆鏡頭在較小的 sensor 上的視野會比在較大的 sensor 上更窄。這就是為什麼不同相機上的焦距數字無法直接比較;FOV 同時取決於 \(f\)\(S\)

4.3.2. 三種鏡頭選擇

以一塊 4.8 mm × 3.6 mm 的 sensor(一種常見的小尺寸規格,大致符合 OpenMV Cam sensor 所提供的規格)搭配三種鏡頭選擇為例。

焦距

對角線 FOV

水平 FOV

垂直 FOV

說明

2.8 mm

~94°

~81°

~66°

廣角

4 mm

~74°

~62°

~48°

標準

8 mm

~41°

~33°

~25°

窄角/望遠

三個欄位都套用同一個公式。對角線 FOV 使用的 \(S\) 等於 sensor 對角線 \(\sqrt{W^2 + H^2}\)(這塊 sensor 為 6 mm);水平 FOV 使用 \(S = W = 4.8\) mm;垂直 FOV 使用 \(S = H = 3.6\) mm。將焦距減半會使每個錐形幾乎加倍;將焦距加倍則會使其幾乎減半。

鏡頭資料表通常會將對角線 FOV 作為唯一的標頭數字公布,因為它涵蓋了 sensor 的對角兩端。在規劃哪些東西能容納進影格時,水平與垂直 FOV 更為直接實用,因為影格是矩形的,而矩形的工作區域是沿著水平與垂直方向受限,而非沿著對角線。

4.3.3. 選擇焦距

應用所需的 FOV 由相機必須看到多大的區域,以及相機與目標的距離有多遠所決定。如果相機位於一個 0.6 m × 0.6 m 工作區域上方 1 m 處,那麼涵蓋其中一邊所需的角度 FOV 為 \(2 \cdot \arctan(0.3 / 1) \approx 33°\),而上述的 8 mm 鏡頭相當接近。

比應用所需更廣會使物體在影格中變小、把像素浪費在背景上,並增加鏡頭畸變。比所需更窄則會使部分場景落到 sensor 邊緣之外。最合適的鏡頭,是在相機預定距離下仍能涵蓋工作區域的最長焦距鏡頭。