diff --git a/VHR/segmentation.py b/VHR/segmentation.py index 43346a9a233a41b9dfa96b0effb95fdafaaa3260..8c03a2702e7e0dbbe0fc7998f8ddb147288f96e0 100644 --- a/VHR/segmentation.py +++ b/VHR/segmentation.py @@ -207,11 +207,11 @@ def vectorize_tile(obj, region, to_keep, out): def tiled_vectorization(input_segm, nominal_tile_size, output_template): in_seg = to_otb_pipeline(input_segm) - arr = np.squeeze(in_seg.ExportImage('out')['array']).astype(np.uint32) - rp = regionprops(arr) + full = in_seg.GetImageAsNumpyArray('out') + rp = regionprops(np.squeeze(full.astype(np.uint32))) - tx, ty = int(arr.shape[1] / nominal_tile_size[0]) + 1, int(arr.shape[0] / nominal_tile_size[1]) + 1 - arr = None + W, H = in_seg.GetImageSize('out') + tx, ty = int(W / nominal_tile_size[0]) + 1, int(H / nominal_tile_size[1]) + 1 obj_to_tile = dict.fromkeys(range(tx*ty)) tiles = dict.fromkeys(range(tx*ty)) @@ -225,6 +225,9 @@ 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])