• [^] # Re: numpy / scipy

    Posté par . En réponse au journal ISS : le flim. Évalué à 4.

    argmax renvoie l'indice du max mais en 1D (comme si l'image était un tableau 1D), bien qu'à lire la doc je pensait récupérer directement un indice 2D. Du coup unravel_index permet de calculer l'indice 2D correspondant (en lui donnant la taille du tableau, im.shape).

    J'ai finit par faire une petite fonction qui fait tout et renvoie l'imagette de l'objet (0.68s pour une image contre 14.7 auparavant avec le script et l'image que tu as donné ci-dessus, 1.5s en travaillant sur l'image entière au lieu d'une imagette 100x100):

    def get_thumb(im, limit):
     # get the 2D indices of the max
     centerX, centerY = np.unravel_index(im.argmax(), im.shape)
     # work on a subimage to speed up things
     window_size = 100
     subim = im[centerX - window_size:centerX + window_size, 
     centerY - window_size:centerY + window_size]
     # threshold
     mask = subim > (0.25*subim.max())
     # get the bouding box
     label_im, nb_labels = scipy.ndimage.label(mask)
     slice_x, slice_y = scipy.ndimage.find_objects(label_im==1)[0]
     return subim[slice_x, slice_y]