Maison  >  Article  >  développement back-end  >  Les tranches Numpy peuvent-elles être utilisées pour un recadrage aléatoire efficace d'images ?

Les tranches Numpy peuvent-elles être utilisées pour un recadrage aléatoire efficace d'images ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-03 21:02:03323parcourir

Can Numpy Slices Be Used for Efficient Random Image Cropping?

Recadrage d'images efficace avec des tranches Numpy

À la recherche d'une approche optimisée pour recadrer des images à l'aide de tranches Numpy, un utilisateur a remis en question la faisabilité d'une méthode stride- méthode basée sur la génération de cultures aléatoires en un seul passage.

Extraction de patch basée sur la foulée

La réponse propose d'exploiter np.lib.stride_tricks.as_strided ou view_as_windows de scikit-image pour créer une vue par fenêtre coulissante du tableau d'entrée. Cette méthode maintient l'efficacité de la mémoire sans entraîner de surcharge supplémentaire.

Explication View_as_Windows

view_as_windows permet aux utilisateurs de spécifier un argument window_shape, représentant la taille de la fenêtre coulissante le long de chaque dimension du tableau d’entrée. Les axes non destinés au découpage reçoivent des valeurs de 1. Après le découpage, le tableau résultant contient des vues avec des dimensions singleton (longueur 1) correspondant à ces 1 valeurs.

Solution

La solution suggérée consiste à utiliser view_as_windows pour extraire des fenêtres coulissantes, puis à les indexer dans ces fenêtres en fonction de décalages générés aléatoirement :

<code class="python"># Get sliding windows
w = view_as_windows(X, (1, 16, 16, 1))[..., 0, :, :, 0]

# Index and get specific windows
out = w[np.arange(X.shape[0]), x, y]

# Reshape to match loopy code format (optional)
out = out.transpose(0, 2, 3, 1)</code>

Cette approche permet un recadrage efficace des images avec des décalages aléatoires distincts pour chaque image, éliminant ainsi le besoin de une boucle for.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn