cad_surface_to_pixel — CADMAP project op

• 資料種類:mesh × points → table

• 呼叫: import fullseye as fs; fs.ledger.cad_surface_to_pixel(mesh, points, K=None, R=None, t=None, image_size=None, cull_backfaces=True, depth_tol=1e-06, strict=False)(要直接呼叫實作,import cadmap; cadmap.cad_surface_to_pixel(mesh, points, K=None, R=None, t=None, image_size=None, cull_backfaces=True, depth_tol=1e-06, strict=False);從台帳取用則 opscadmap.get("cad_surface_to_pixel"))

用法

3-D 點 (N,3) → 像素 + 可見性(遮蔽・背面・出畫分別回傳)。

以 camera.project_points 投影後,再向同一像素重新發射光線, 確認前方沒有別的面。不這樣做的話,會把被遮擋點的像素座標當作「在那裡看得見」一樣回傳。回傳值是 dict:

• uv (N,2) — 像素 (u=行, v=列)。即使是 depth <= 0 的點也會回傳投影值,但會設定 in_front = False。

• depth (N,) — 相機座標 Z。

• in_front (N,) bool — depth > 0。

• in_image (N,) bool — 在畫框內(0 <= u <= width-1 且 0 <= v <= height-1)。

• occluded (N,) bool — 在同一視線上,該點前方有面。

• occluder_face (N,) int64 — 遮擋的面。沒有則為 -1。

• visible (N,) bool — in_front & in_image & ~occluded。

• camera 實際使用的相機。

• winding_fixed bool — 是否偵測到向內繞的封閉網格(mesh)並修正。

depth_tol 是為了不誤判為「被自身的面遮擋」的相對容差, 當 z_hit < depth * (1 - depth_tol) - depth_tol 時判定為遮擋。位於封閉 mesh 背面的點會被前方的牆遮擋而成為 occluded = True —— 這是規格,而不是遺漏。

遮擋判定取決於繞向(若前方的牆作為背面被剔除, 連背面的點也會變成 visible)。因此在 cull_backfaces=True 時會偵測向內繞的封閉網格(mesh),預設修正繞向並回傳 winding_fixed=True。strict=True 時拋出 ValueError, cull_backfaces=False 時根本不做檢查(詳見 _orient_for_culling)。

參考(範例資料、文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。

• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。

• 演算法的正典(作者、年份)與用途見上面的族使用指南。

可執行的範例(實際呼叫該運算子並已驗證的樣例)

• defect_to_cad — py -3.11 examples/defect_to_cad.py

型別可銜接的下一個運算子(可接受 table 作為輸入)

—

同類別(project)

—


*Provenance: cadmap.py — CADMAP 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.