Spaces:
Sleeping
Sleeping
File size: 1,240 Bytes
be88765 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | """
Plot adaptive voxel size vs median_size.
"""
import numpy as np
import matplotlib
matplotlib.use("Agg") # non-interactive backend for headless
import matplotlib.pyplot as plt
def _voxel_size(median_size: float, min_voxel: float = 0.0001, max_voxel: float = 0.5) -> float:
"""Same logic as compute_adaptive_voxel_size, without print."""
log_size = np.log(np.maximum(median_size, 1e-6))
xp = np.log([1e-6, 5.0, 150.0, 1000.0])
fp = [200.0, 300.0, 600.0, 2000.0]
divide_factor = float(np.interp(log_size, xp, fp, left=200.0, right=2000.0))
adaptive = median_size / divide_factor
return max(min_voxel, min(max_voxel, adaptive))
def main():
median_sizes = np.linspace(0, 1000, 2000)
voxel_sizes = [_voxel_size(m) for m in median_sizes]
fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(median_sizes, voxel_sizes, "b-", linewidth=2)
ax.set_xlabel("median_size (m)")
ax.set_ylabel("voxel size (m)")
ax.set_title("Adaptive voxel size vs median bounding box size")
ax.grid(True, which="both", alpha=0.3)
plt.tight_layout()
out_path = "voxel_size_vs_median_size.png"
plt.savefig(out_path, dpi=150)
print(f"Saved: {out_path}")
if __name__ == "__main__":
main()
|