Spaces:
Running on Zero
Running on Zero
Download dataset_process/utils/plot_voxel_size.py from YuePanEdward/RAP: direct link, hf CLI and curl.
- Browser
- Download file 1.24 kB
-
https://huggingface.co/spaces/YuePanEdward/RAP/resolve/main/dataset_process/utils/plot_voxel_size.py
- Command line
-
hf download hf://spaces/YuePanEdward/RAP/dataset_process/utils/plot_voxel_size.py
-
curl -L -o plot_voxel_size.py https://huggingface.co/spaces/YuePanEdward/RAP/resolve/main/dataset_process/utils/plot_voxel_size.py
1.24 kB
| """ | |
| 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() | |