direction op• 資料種類:normals → image2d
• 呼叫: import fullseye as fs; fs.ledger.normals_to_egi(normals, n_az=36, n_el=18)(要直接呼叫實作,import reprconv; reprconv.normals_to_egi(normals, n_az=36, n_el=18);從台帳取用則 opsreprconv.get("normals_to_egi"))
法線 (N,3) → 擴展高斯像 (n_el, n_az) 的 image2d。
方向的 2-D 直方圖(Horn, *Extended Gaussian Images*, Proc. IEEE 72(12) 1984)。是「哪個朝向的面有多少」的地圖,在平面占主導的物體上會在 1 個 bin 中立起峰。不可逆 —— 捨棄 bin 寬度程度的方向解析度。
捨棄的量可以量測: 最頻 bin 的中心方向與輸入平均方向的角度差就是量化誤差, 預設 (36, 18) 下相對 bin 寬 10 度,實測為 3.7 度(由 selftest 給出)。
仰角的 bin 依 sin(el) 等分(等立體角)。若依度數等分,極點處會過度精細,立起「面集中在北極」這種虛假的峰。
★傳入位置點雲也不會拋例外。backends_typed.TYPE_TO_SORT 把 normals 摺疊到 points,所以演化器和台帳都不區分兩者。此 op 只看方向(捨棄長度),所以傳入 (N,3) 的座標時, 會似是而非地回傳「從原點看各點的朝向」的直方圖。實測(2026-09-08,200 點的曲線 vs 全部朝正上方的法線): 非零 bin 只是 1 → 12、最大 bin 200 → 44 的變化,總和兩者都是 200。「總和與點數一致所以正確」無法區分兩者。設為 fullseye.set_system("extra_checks", "on") 時,偏離單位長度的向量會被拒絕(見下方的 Raises)。
Args:
normals: (N, 3)。
n_az: 方位角的 bin 數(預設 36 = 10 度步長)。
n_el: 仰角的 bin 數(預設 18)。
Returns:
(n_el, n_az) float64 的計數圖(列 = 仰角,行 = 方位角)。
Raises:
ValueError: bin 數小於 1 / 超過上限 / 輸入不正。
ValueError: extra_checks='on' 下,含有長度偏離 1 超過 1e-6 的
向量時(捕捉把位置點雲當作法線傳入的事故)。
• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。
• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。
• 演算法的正典(作者、年份)與用途見上面的族使用指南。
• representation_conversion — py -3.11 examples/representation_conversion.py
image2d 作為輸入)direction)normals_to_angles · angles_to_normals
*Provenance: reprconv.py — REPRCONV 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.