Maison >développement back-end >Tutoriel Python >Comment recadrer efficacement des patchs 16x16 aléatoires à partir de plusieurs images à l'aide de Numpy Slices ?
Recadrage d'images aléatoires efficace avec plusieurs tranches Numpy
Étant donné un tableau Numpy 4D représentant des images en couleur, l'objectif est de sélectionner efficacement des images aléatoires Recadrages 16x16 de chaque image, avec des emplacements de recadrage uniques pour chaque image.
Une approche naïve utilisant une boucle for entraîne une surcharge de mémoire et des calculs inutiles. Pour optimiser ce processus, nous exploitons la méthode np.lib.stride_tricks.as_strided ou la fonction view_as_windows de scikit-image.
Utilisation de view_as_windows
La fonction view_as_windows crée des fenêtres qui se chevauchent dans un tableau d'entrée, créant efficacement des vues dans les données d'origine sans allocation de mémoire supplémentaire. En spécifiant une forme de fenêtre de (1, 16, 16, 1), nous créons des fenêtres coulissantes le long des deuxième et troisième axes (largeur et hauteur) avec un pas de 1.
Pour indexer les fenêtres spécifiques en fonction sur des paires de décalages aléatoires (x, y), nous utilisons les étapes suivantes :
Cette méthode fournit une approche efficace pour recadrer plusieurs images avec des décalages variables, réduisant ainsi la surcharge de mémoire et le temps de calcul par rapport à l'approche itérative.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!