← Tous les exercices
Convolution à la main sur une grille 6 × 6
Partie 1 · ★★★
Voici le carré de 6 × 6 pixels du cours (une liste de listes) et le filtre vertical 3 × 3 (−1, 0, +1 sur chaque ligne). Écris la convolution : pour chaque position où la fenêtre 3 × 3 tient entièrement, multiplie les 9 pixels par les 9 poids case par case et additionne. Tu dois obtenir une carte de 4 × 4.
Applique-la avec le filtre vertical, puis avec le filtre horizontal (−1 en haut, +1 en bas) qui répond au bord du haut.
image = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 1], [0, 0, 0, 1, 1, 1], [0, 0, 0, 1, 1, 1], [0, 0, 0, 1, 1, 1]] filtre_vertical = [[-1, 0, 1], [-1, 0, 1], [-1, 0, 1]] filtre_horizontal = [[-1, -1, -1], [0, 0, 0], [1, 1, 1]] def convolution(image, filtre): k = len(filtre) n = len(image) carte = [] for i in range(n - k + 1): ligne = [] for j in range(___): fenetre = [image[i + a][j:j + k] for a in range(k)] ligne.append(sum(fenetre[a][b] * filtre[a][b] for a in range(k) for b in range(___))) carte.append(ligne) return carte carte_verticale = convolution(image, filtre_vertical) carte_horizontale = convolution(image, filtre_horizontal)
Ctrl/⌘+Entrée