J'ai une image qui est de taille 50000x50000
. Il compte environ 25000
connecté différents composants connectés. J'utilise ndimage.label
pour étiqueter chacun d'entre eux, puis je trouve les points non nuls et j'obtiens enfin les valeurs min x, max x, min y et max y. Cependant, je dois trouver ces coordonnées pour chacun des points. 25000
les composants connectés. C'est coûteux car je dois faire np.nonzero
sur le 50000x50000
image 25000
fois. Voici un extrait du code qui fait ce que je viens de mentionner.
im, _ = ndimage.label(im)
num_instances = np.max(np.max(im))
for instance_id in range(1,num_instances+1):
im_inst = im == instance_id
points = np.nonzero(im_inst) # running this is expensive as im is 50000x50000
cropped_min_x_1 = np.min(points[0])
cropped_min_y_1 = np.min(points[1])
cropped_max_x_1 = np.max(points[0])+1
cropped_max_y_1 = np.max(points[1])+1
Quelqu'un sait-il ce que je peux faire pour accélérer considérablement ce processus ?