From 158e9e00757303978d33d7c28dfed2a66aeaa418 Mon Sep 17 00:00:00 2001 From: "raffaele.gaetano" <raffaele.gaetano@cirad.fr> Date: Thu, 28 Jul 2022 23:36:21 +0200 Subject: [PATCH] ENH: tiled vectorization (needs full segmentation in memory). --- VHR/segmentation.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/VHR/segmentation.py b/VHR/segmentation.py index 8c03a27..4bfca27 100644 --- a/VHR/segmentation.py +++ b/VHR/segmentation.py @@ -225,18 +225,19 @@ def tiled_vectorization(input_segm, nominal_tile_size, output_template): obj_to_tile[idx].append(o.label) tiles[idx][0] = min(o.bbox[1], tiles[idx][0]) tiles[idx][1] = min(o.bbox[0], tiles[idx][1]) - for o in rp: - ix, iy = int(o.bbox[1] / nominal_tile_size[0]), int(o.bbox[0] / nominal_tile_size[1]) - idx = ix * ty + iy - tiles[idx][2] = max(o.bbox[3] - tiles[idx][0], tiles[idx][2]) - tiles[idx][3] = max(o.bbox[2] - tiles[idx][1], tiles[idx][3]) + tiles[idx][2] = max(o.bbox[3], tiles[idx][2]) + tiles[idx][3] = max(o.bbox[2], tiles[idx][3]) - for i in range(tx*ty): + out_files = [] + for i in range(len(tiles)): + tiles[i][2] -= tiles[i][0] + tiles[i][3] -= tiles[i][1] in_seg = to_otb_pipeline(input_segm) if len(obj_to_tile[i]) > 0: - vectorize_tile(in_seg, tiles[i], obj_to_tile[i], output_template.format(i)) + out_files.append(output_template.format(i)) + vectorize_tile(in_seg, tiles[i], obj_to_tile[i], out_files[-1]) - return obj_to_tile, tiles + return out_files def get_bounding_boxes(input_segm): in_seg = to_otb_pipeline(input_segm) -- GitLab