在影像處理或機器視覺應用中,了解相機的視野(Field of View, FOV)與解析度(Resolution)是關鍵步驟。本教學將帶你從實作一個圖形化計算工具出發,深入了解 FOV 與解析度如何根據鏡頭參數與感光元件規格計算出來。
📦 工具簡介:PyQt5 GUI 應用
這個應用是使用 PyQt5
製作的桌面 GUI 程式,主要功能如下:
- 輸入感光元件規格(尺寸與像素)
- 輸入鏡頭焦距與工作距離
- 自動計算水平/垂直視野(FOV)與對應解析度(mm/px)
🖥️ 介面功能說明
使用者可輸入以下欄位:

按下「計算 FOV 與解析度」後,將顯示:
- 水平 FOV:整個影像能看到的寬度(mm)
- 垂直 FOV:整個影像能看到的高度(mm)
- 水平解析度:每個像素代表的實體寬度(mm/px)
- 垂直解析度:每個像素代表的實體高度(mm/px)
🧮 計算公式解析
以下是程式中所使用的核心公式:
1️⃣ FOV 計算公式
fov_width = sensor_width * working_distance / focal_length
fov_height = sensor_height * working_distance / focal_length
這是一個簡化的透視投影模型公式,假設感光元件與鏡頭處於光軸正中:
sensor_width
與sensor_height
是感光元件的物理尺寸(單位:mm)working_distance
是鏡頭與物體的距離focal_length
是鏡頭焦距
FOV 代表從這個距離看出去能拍攝的實際寬度與高度,與三角函數類似概念:

2️⃣ 解析度計算公式(mm/px)
res_width = fov_width / sensor_pixel_width
res_height = fov_height / sensor_pixel_height
計算單位像素所代表的實體大小(解析度),是將整體視野除以像素數量得到:

🧑💻 程式碼結構簡介
主要採用 PyQt5
建立 GUI,結構分為:
🔹 主類別 FOVCalculator
- 繼承
QWidget
,建立 GUI 元件 - 使用
QVBoxLayout
與多個QHBoxLayout
組成輸入區 - 提供輸入框 (
QLineEdit
)、按鈕 (QPushButton
)、與結果顯示 (QLabel
)
🔹 calculate_fov()
方法
- 讀取使用者輸入並轉換為浮點數
- 執行 FOV 與解析度計算
- 顯示結果(mm 與 mm/px)
📐 計算範例
以預設值為例:
Sensor: 13.13mm x 8.76mm
像素: 5472 x 3648
焦距: 12mm
距離: 100mm
計算步驟:
- FOV 水平 = 13.13 × 100 / 12 ≈ 109.42 mm
- FOV 垂直 = 8.76 × 100 / 12 ≈ 73.00 mm
- 解析度 水平 = 109.42 / 5472 ≈ 0.02 mm/px
- 解析度 垂直 = 73.00 / 3648 ≈ 0.02 mm/px
📌 參考依據與原理說明
此計算方式源自幾何光學與相機模型:
- 感光元件大小與焦距會影響成像的實體範圍(FOV)
- FOV 是線性比例的幾何計算,不考慮畸變或鏡頭參數(如畸變校正)
- 這是一種常見的機器視覺初步估算方法,適合簡單應用場景與初期參數設定
實務應用中可搭配校正參數(如內參矩陣)作更精確的 FOV 推估。
📎 延伸應用
你可以進一步加入下列功能提升應用價值:
- 下拉選單切換不同常見 Sensor 型號(自動填值)
- 解析度反推功能:輸入需要的 mm/px,自動反推需要的距離或鏡頭
- 繪製示意圖視覺化 FOV 結果(可用 matplotlib or pyqtgraph)
✅ 結語
透過這個 PyQt5 製作的 FOV 與解析度計算器,不僅能幫助工程師快速估算相機視野與成像精度,也提供一個非常實用的 GUI 計算工具模版,適合嵌入各類機器視覺系統的工具軟體中。