Heim > Backend-Entwicklung > Python-Tutorial > Wie kann man mit Numpy Slices zufällige 16x16-Patches aus mehreren Bildern effizient zuschneiden?

Wie kann man mit Numpy Slices zufällige 16x16-Patches aus mehreren Bildern effizient zuschneiden?

Patricia Arquette
Freigeben: 2024-11-03 00:39:29
Original
797 Leute haben es durchsucht

How to Efficiently Crop Random 16x16 Patches from Multiple Images Using Numpy Slices?

Effizientes zufälliges Zuschneiden von Bildern mit mehreren Numpy-Slices

Bei einem 4-D-Numpy-Array, das Farbbilder darstellt, besteht das Ziel darin, effizient zufällige Bilder auszuwählen 16x16 Ausschnitte von jedem Bild, mit eindeutigen Ausschnittpositionen für jedes Bild.

Ein naiver Ansatz mit einer for-Schleife verursacht unnötigen Speicheraufwand und Rechenaufwand. Um diesen Prozess zu optimieren, nutzen wir die Methode np.lib.stride_tricks.as_strided oder die Funktion view_as_windows des scikit-images.

Verwendung von view_as_windows

Die Funktion view_as_windows erstellt überlappende Fenster innerhalb eines Eingabearrays, wodurch effektiv Ansichten der Originaldaten ohne zusätzliche Speicherzuweisung erstellt werden. Durch Angabe einer Fensterform von (1, 16, 16, 1) erstellen wir Schiebefenster entlang der zweiten und dritten Achse (Breite und Höhe) mit einer Schrittgröße von 1.

Um die spezifischen Fenster basierend zu indizieren Bei zufälligen Offset-Paaren (x, y) verwenden wir die folgenden Schritte:

  1. Generieren Sie das Fensterarray: w = view_as_windows(X, (1,16,16,1))[... ,0,:,:,0]
  2. Indizieren Sie die Fenster basierend auf den zufälligen Offsets: out = w[np.arange(X.shape[0]), x, y]
  3. Transponieren Sie das Ergebnis, um es an das gewünschte Ausgabeformat anzupassen: out = out.transpose(0,2,3,1)

Diese Methode bietet einen effizienten Ansatz zum Zuschneiden mehrerer Bilder mit unterschiedlichen Offsets und reduziert so den Speicheraufwand und Rechenzeit im Vergleich zum iterativen Ansatz.

Das obige ist der detaillierte Inhalt vonWie kann man mit Numpy Slices zufällige 16x16-Patches aus mehreren Bildern effizient zuschneiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage