Maison >développement back-end >Tutoriel Python >Comment la marche avancée peut-elle améliorer l'efficacité des filtres de moyenne mobile ?
Utilisation de la marche avancée pour un filtre de moyenne mobile plus efficace
Introduction :
Calcul du déplacement les filtres moyens sur de grands ensembles de données peuvent être coûteux en termes de calcul. Bien que les implémentations standard utilisant des filtres de convolution puissent être lentes, les techniques avancées de foulée offrent une solution plus efficace.
Technique proposée :
La technique proposée implique l'utilisation de stride_tricks.as_strided( ) fonction pour créer un tableau qui correspond à une fenêtre mobile sur le tableau d'origine. En faisant rouler ce tableau verticalement et horizontalement, les valeurs du noyau peuvent être efficacement additionnées pour calculer la moyenne de chaque pixel.
Implémentation :
Le code suivant démontre l'implémentation de cette technique :
<code class="python">import numpy as np filtsize = 3 a = numpy.arange(100).reshape((10,10)) b = np.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]))</code>
Avantages :
Cette technique offre plusieurs avantages par rapport aux filtres de convolution traditionnels :
Limitations :
Approches alternatives :
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!