From 4cdbf5a0e4c75e1bfd0a3cf585bb2b33ea7be2e6 Mon Sep 17 00:00:00 2001 From: Antoine Jacquin Date: Fri, 18 Sep 2026 21:07:32 +0200 Subject: [PATCH] =?UTF-8?q?Rejeter=20proprement=20les=20tuiles=20100=20%?= =?UTF-8?q?=20nodata=20en=20d=C3=A9tection=20d'anomalies?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lidar_pipeline/visualizations.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lidar_pipeline/visualizations.py b/lidar_pipeline/visualizations.py index 596a0e9..7daaa83 100644 --- a/lidar_pipeline/visualizations.py +++ b/lidar_pipeline/visualizations.py @@ -1550,7 +1550,11 @@ def generate_anomaly_mask(dem_file, basename, vis_dir, resolution, shared=None, # With n_sigma=2.0 → 80th percentile: keep only the top 20% of signal. # This adapts to each tile's terrain instead of a fixed z-score cutoff. threshold_pct = max(50, min(95, 100 - n_sigma * 10)) - threshold_val = np.percentile(combined[~nan_mask], threshold_pct) + combined_valid = combined[~nan_mask] + if combined_valid.size == 0: + logger.warning(" ✗ Détection anomalies : tuile 100 % nodata") + return None + threshold_val = np.percentile(combined_valid, threshold_pct) combined = np.clip(combined - threshold_val, 0, None) # Rescale survivors to 0–1