Maison >développement back-end >Tutoriel Python >Strides peut-il améliorer l'efficacité des filtres à moyenne mobile dans le traitement des images ?
Utiliser les foulées pour un filtre de moyenne mobile efficace
Récemment, les approches basées sur la foulée ont attiré l'attention pour leur efficacité dans la mise en œuvre de filtres de moyenne mobile. Dans ce contexte, nous explorons comment les progrès peuvent être utilisés pour améliorer les performances de tels filtres, en allant au-delà des méthodes plus traditionnelles basées sur la convolution. Plus précisément, nous nous concentrons sur la mise en œuvre d'un filtre moyen mobile connecté à 8 voisins qui prend en compte les 9 pixels environnants pour chaque pixel focal.
À l'aide de foulées, nous pouvons créer une vue du tableau d'origine qui correspond à la rangée supérieure de le noyau du filtre. En appliquant une opération de roulis le long de l'axe vertical, nous pouvons obtenir la rangée du milieu du noyau et l'ajouter à la vue initialement créée. Ce processus est répété pour obtenir la ligne inférieure du noyau, et la somme de ces lignes est ensuite divisée par la taille du filtre pour calculer la moyenne pour chaque pixel.
Pour illustrer cette approche, considérons l'implémentation suivante :
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]))
En termes plus généraux, définir une fonction qui effectue l'opération de fenêtre déroulante selon des dimensions spécifiées permet la mise en œuvre efficace de filtres à moyenne mobile, même dans des tableaux multidimensionnels. Cependant, il est important de noter que même si les approches basées sur la foulée offrent des avantages dans des cas spécifiques, pour les tâches de filtrage multidimensionnelles complexes, des fonctions spécialisées comme celles fournies par le module scipy.ndimage peuvent toujours offrir des performances supérieures.
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!