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])