Le python ou l'un de ses modules est-il équivalent de Conv2 a > Fonction? Plus spécifiquement, je suis intéressé par quelque chose qui fait le même calcul que conv2 (A, B, 'idem') code> dans matlab. P>
4 Réponses :
scipy.ndimage.convolve does it in n dimensions.
Donc, scipy.signal.convolve code>?
Lorsque vous utilisez le mode même code>, je ne pense pas qu'ils sont en réalité identiques. Centres Sciples Différemment de Matlab. Matlab dit "S'il y a un nombre impair de lignes ou de colonnes, le" Centre "laisse un de plus au début que la fin." Sciped semble faire le contraire.
Vous devez fournir un décalage pour chaque dimension non singleton pour reproduire les résultats de Conv2 de Matlab. Une implémentation simple prenant en charge l'option «même», seulement, pourrait être faite comme celle-ci
tandis que les autres réponses mentionnent déjà . Bien que Matlab's Voir ces liens pour des parcelles montrant le comportement (pas assez de réputation pour poster les images directement): p> coin supérieur gauche de Barbara Convoluted P> coin inférieur droit de Barbara convoluée p> L'emballage suivant pourrait ne pas être très efficace, mais résolu le problème dans mon cas En tournant les deux tableaux d'entrée et la matrice de sortie, chacun de 180 degrés: P> scipy.signal.convolve2d code> comme équivalent, j'ai constaté que les résultats diffèrent lors de l'utilisation de
mode = 'id même code>.
conv2 code> entraîne des artefacts en bas et à droite d'une image,
scipy.signal.convolve2d code> a les mêmes artefacts sur le dessus et à gauche d'une image. P >
import numpy as np
from scipy.signal import convolve2d
def conv2(x, y, mode='same'):
return np.rot90(convolve2d(np.rot90(x, 2), np.rot90(y, 2), mode=mode), 2)
@aaa carpe - pas de problème! Merci quand même