Comment la marche avancée peut-elle améliorer l'efficacité des filtres de moyenne mobile ?

Mary-Kate Olsen
Libérer: 2024-10-19 10:28:02
original
965 Les gens l'ont consulté

How Can Advanced Striding Enhance the Efficiency of Moving Average Filters?

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>
Copier après la connexion

Avantages :

Cette technique offre plusieurs avantages par rapport aux filtres de convolution traditionnels :

  • Efficacité de la mémoire : Le tableau as_strided est une vue dans le tableau d'origine, il ne nécessite donc pas de copier l'intégralité de l'ensemble de données dans un nouveau tableau.
  • Efficacité de calcul : Les opérations de roulement et de sommation peuvent être effectué efficacement à l'aide des fonctions optimisées de NumPy.
  • Taille et forme du noyau personnalisables : Le paramètre filtsize permet d'ajuster facilement la taille et la forme du filtre.

Limitations :

  • Gestion des bords : La technique proposée ne gère pas correctement les pixels de bord. Des étapes de post-traitement peuvent être nécessaires pour résoudre ce problème.
  • Tableaux multidimensionnels : Cette technique est la mieux adaptée aux tableaux unidimensionnels. Pour les tableaux multidimensionnels, l'utilisation de la mémoire et le coût de calcul peuvent devenir prohibitifs.

Approches alternatives :

  • Compilation Numba JIT : Just-in- la compilation temporelle peut encore améliorer les performances de cette technique.
  • Module ndimage de SciPy : pour les tableaux multidimensionnels, la fonction uniform_filter() de SciPy offre une solution plus efficace et plus complète.

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!