Heim >Backend-Entwicklung >Python-Tutorial >Können Strides die Effizienz von gleitenden Durchschnittsfiltern in der Bildverarbeitung verbessern?

Können Strides die Effizienz von gleitenden Durchschnittsfiltern in der Bildverarbeitung verbessern?

Susan Sarandon
Susan SarandonOriginal
2024-10-19 12:40:29787Durchsuche

Can Strides Enhance the Efficiency of Moving Average Filters in Image Processing?

Verwendung von Schritten für einen effizienten gleitenden Durchschnittsfilter

In letzter Zeit haben schrittbasierte Ansätze wegen ihrer Effizienz bei der Implementierung von gleitenden Durchschnittsfiltern an Aufmerksamkeit gewonnen. In diesem Zusammenhang untersuchen wir, wie Fortschritte genutzt werden können, um die Leistung solcher Filter zu verbessern und dabei über die traditionelleren Faltungsmethoden hinauszugehen. Konkret konzentrieren wir uns auf die Implementierung eines mit 8 Nachbarn verbundenen gleitenden Durchschnittsfilters, der die umgebenden 9 Pixel für jedes Fokuspixel berücksichtigt.

Mithilfe von Schritten können wir eine Ansicht des ursprünglichen Arrays erstellen, die der oberen Zeile von entspricht Der Filterkernel. Durch Anwenden einer Rolloperation entlang der vertikalen Achse können wir die mittlere Zeile des Kernels erhalten und sie der ursprünglich erstellten Ansicht hinzufügen. Dieser Vorgang wird wiederholt, um die unterste Zeile des Kernels zu erhalten, und die Summe dieser Zeilen wird dann durch die Filtergröße dividiert, um den Durchschnitt für jedes Pixel zu berechnen.

Um diesen Ansatz zu veranschaulichen, betrachten Sie die folgende Implementierung:

import numpy, scipy

filtsize = 3
a = numpy.arrange(100).reshape((10, 10))
b = numpy.lib.stride_tricks.as_strided(a, shape=(a.size, filtsize), strides=(a.itemsize, a.itemsize))
for i in range(0, filtsize - 1):
    if i > 0:
        b += numpy.roll(b, -(pow(filtsize, 2) + 1) * i, 0)
filtered = (numpy.sum(b, 1) / pow(filtsize, 2)).reshape((a.shape[0], a.shape[1]))

Allgemeiner ausgedrückt ermöglicht die Definition einer Funktion, die die Rollfensteroperation entlang bestimmter Dimensionen ausführt, die effiziente Implementierung von Filtern mit gleitendem Durchschnitt auch in mehrdimensionalen Arrays. Es ist jedoch wichtig zu beachten, dass schrittbasierte Ansätze zwar in bestimmten Fällen Vorteile bieten, bei komplexen mehrdimensionalen Filteraufgaben jedoch spezielle Funktionen wie die vom Modul scipy.ndimage bereitgestellten möglicherweise dennoch eine überlegene Leistung bieten.

Das obige ist der detaillierte Inhalt vonKönnen Strides die Effizienz von gleitenden Durchschnittsfiltern in der Bildverarbeitung verbessern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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