gaussians_to_voxel — REPRCONV gaussians op

資料種類:gaussiansvoxel

呼叫:import reprconv; reprconv.gaussians_to_voxel(gaussians, shape=(32, 32, 32), origin=(0.0, 0.0, 0.0), spacing=(1.0, 1.0, 1.0), truncate=3.0)(或 opsreprconv.get("gaussians_to_voxel"))

用法

`gaussians → 密度 voxel (D,H,W)gaussians` 的第二個出口。

> 以下的詳細說明為原文 —— 摘要與標題已翻譯。

各ガウシアンを `truncate * sigma` で打ち切って加算する。**格子の原点と

刻みを明示引数にしてある**のが要点で、既定の `spacing=(1,1,1)` を

そのまま使うと「世界座標をそのまま添字にする」ことになり、実データでは

まず間違う —— しかも例外は出ず、密度が別の場所に立つだけなので気づけない。

`tests/test_reprconv.py` はこの取り違えを明示的に測っている。

不可逆。損失は 3 つあり、どれも数字で測れる:

打ち切り —— 打ち切りは軸並行の箱(各軸 ±truncate*sigma)なので、

残る質量は `erf(t/sqrt(2))**3`。t = 3 で 99.194%

★ここは一度間違えた: 最初「3 sigma のの質量 97.07%」と書いたが、

実装は箱なので値が違う。刻みを 1.0 → 0.125 と細かくして極限を取ると

99.30% → 99.19% へ収束し、球の 97.07% には近づかないことで反証できた

(`tests/test_reprconv.py::test_gaussians_to_voxel_mass_matches_box_truncation`)。

例外も NaN も出ない、まさに「黙って間違った数字を返す」種類の誤り。

格子求積 —— 中点則なので刻みが sigma に対して粗いと上振れする

(実測: sigma = 1.5 で刻み 1.0 のとき 99.94%、0.125 で 99.30%)。

境界の切り落とし —— 箱が volume の外へ出た分は落ちる。中心が縁に

近いガウシアンでは打ち切りより遥かに大きい損失になる。

Args:

gaussians: `mu / sigma / w を持つ dict。mu` は (z, y, x)。

shape: (D, H, W)。

origin: 格子の (z, y, x) 原点(世界座標)。

spacing: 格子の (dz, dy, dx) 刻み(世界単位 / voxel)。

truncate: 何 sigma で打ち切るか(既定 3)。

Returns:

(D, H, W) float64 の密度(値は「voxel あたりの重み和」で、体積積分が

`sum(w)` に近づく)。

Raises:

ValueError: shape/spacing 不正 / truncate <= 0 / gaussians 不正。

參考(範例資料・文獻)

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

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

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

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

representation_roundtrippy -3.11 examples/representation_roundtrip.py

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

correlation_score

同類別(gaussians)

points_to_gaussians · gaussians_to_points


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

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