4.3. 視野¶
相機看到的是它前方世界的一個錐形範圍;落在該錐形之外的所有事物都會落到 sensor 的邊緣之外。該錐形的角寬度就是視野(FOV),它由兩個數字決定 —— sensor 尺寸與鏡頭焦距。
4.3.1. FOV 公式¶
後方距離 \(f\) 處、寬度為 \(S\) 的 sensor 界定出一個進入光線的錐形範圍。該錐形的全角度就是視野。¶
寬度為 \(S\) 的 sensor 位於鏡頭後方距離 \(f\) 處,與光軸垂直。薄透鏡模型指出,穿過鏡頭中心的光線會不偏折地繼續前進,因此從 sensor 的每個邊緣各追蹤一條這樣的光線:每條光線都筆直穿過鏡頭中心,並射入另一側的場景中。兩者共同界定出 sensor 所能收集的光錐,而它們在鏡頭處之間的夾角就是視野。
該錐形的一半是一個直角三角形。其中一條直角邊是從鏡頭中心到 sensor 中心的光軸 —— 長度為 \(f\)。另一條直角邊是從 sensor 中心向外到某一邊緣的半個 sensor —— 長度為 \(S / 2\)。斜邊則是光線本身,從鏡頭中心延伸到 sensor 邊緣。
畢氏定理將這三條邊長串連在一起,但畢氏定理並不會給出角度,而我們所追求的正是鏡頭頂點處的那個角度。三角學正是從邊長比值通往角度的橋樑。在任何直角三角形中,一個角的正切定義為其對邊除以鄰邊。對於半 FOV 角而言,對邊是半個 sensor \(S / 2\),鄰邊則是光軸這條邊 \(f\),因此
對兩側套用正切的反函數 —— 反正切函數 —— 即可得出角度本身:
該錐形對稱於光軸,因此完整的 FOV 是半角的兩倍:
由這個公式可以推出兩項結果:
決定角度的是鏡頭焦距,而非絕對尺寸。「廣角」鏡頭之所以廣,是因為它的焦距短 —— \(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 邊緣之外。最合適的鏡頭,是在相機預定距離下仍能涵蓋工作區域的最長焦距鏡頭。