IVSD camera simulator · implementation observation

IVSD Camera FOV:目前實作觀察

IVSD 並沒有用同一個 FOV 角度同時解決預覽與偵測範圍。Ideal FOV 服務 Three.js 中間預覽;Edge-Ray 是可與型錄對照的角度診斷;地面偵測多邊形由 WASM calcFov3D 直接產生。

文件狀態:本頁依目前取得的 IVSD Portal、校正資料與 WASM 呼叫流程整理,屬於實作觀察;正式整合介面、演算法保證與輸出語意仍待 IVSD 團隊確認。

IVSD Camera FOV 與偵測範圍分流 型號、鏡頭與安裝狀態載入校正資料後,分成 Ideal FOV 預覽、Edge-Ray 角度診斷與 calcFov3D 偵測多邊形三條管線。 INPUT型號+鏡頭+安裝狀態model · zoomStep · LDC · corridor · height · tilt CALIBRATION載入逐機種 Intrinsicsimage size · K/D or distortion table · LDC files · MEMFS REPROJECTbuildDisplacementMapmap · P′ fx/fy/cx/cy · idealFovx/yLDC⁻¹ + Undistort → ideal plane DIAGNOSTICEdge-Ray FOVframe edge midpoints → K/D rays → anglecalculated, but no current UI consumer DETECTIONWASM calcFov3Dnative CLI path · model options · installationdoes not consume Three.js camera.fov PREVIEWThree.js camera.fov = idealFovyaspect = W/H · projection and map share P′controls distorted image preview only OUTPUT六類偵測多邊形Human · Vehicle · Face · LPR · PPE · Fallvertices → coordinate conversion → wall clipping BOUNDARYcamera.fov ≠ detection polygonpreview angle and ground judgment remain separate

Ideal FOV:Three.js 預覽

buildDisplacementMap 回傳與 map 同源的 P′,前端優先使用 idealFovx / idealFovy。這個視角讓理想中間相機與 displacement map 對齊。

idealFovx = 2 × atan(W / (2fx′)) × 180/π
idealFovy = 2 × atan(H / (2fy′)) × 180/π
Three.camera.fov = idealFovy
Three.camera.aspect = W/H

Edge-Ray FOV:型錄對照診斷

取出圖左右與上下邊緣中點,以 K/D 反投影成相機座標的單位光線,再計算兩光線夾角。

left=(0,H/2) · right=(W−1,H/2)
top=(W/2,0) · bottom=(W/2,H−1)
fovH = acos(clamp(rayL·rayR,−1,1)) × 180/π
fovV = acos(clamp(rayT·rayB,−1,1)) × 180/π
目前狀態:Edge-Ray 已計算並出現在 debug report,但沒有 UI consumer;它不得寫入 camera.fov

WASM 偵測管線:不從 camera.fov 推梯形

成像預覽管線

  • Intrinsics → buildDisplacementMap
  • P′ → idealFovy → Three.js projection
  • Displacement map 負責 K/D/LDC 畸變外觀

地面偵測管線

  • 型號、高度、tilt、zoomStep、LDC、corridor 等組成 request
  • WASM calcFov3D 執行 native CLI path
  • 直接回傳六類 grid/FOV 頂點,JS 只轉座標與裁牆
不可混用:改變 Three.js camera.fov 只會改變預覽張角,不會重算 Human、Vehicle 等地面多邊形。

Zoom 與 LDC 在 IVSD 的位置

zoomStep

是離散變焦階編號,用來選擇對應校正狀態,並傳入 displacement 與 calcFov3D 管線;不是 VPP 的連續 focalLength(mm)

LDC

預覽管線會載入對應校正與 remap 資料;偵測管線也把 useLdc 傳入 WASM。型號是否開放 LDC,以 intrinsics_ldc.yml 是否存在為主要判定。