2 votes

Trouver rapidement les coordonnées min et max d'un composant connecté dans une grande image

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 ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X