informatique (tronc commun des prépas scientifiques) · Chapitre 8 · Exercice de TD
Chercher un motif dans une image
Matrices de pixels et images · niveau 2
Énoncé
Écrire cherche_motif(motif, img) renvoyant la coordonnée du coin supérieur gauche de la première occurrence exacte de la sous-matrice motif dans img, ou None.
Corrigé
def cherche_motif(motif: list, img: list):
m, q = len(motif), len(motif[0])
n, p = len(img), len(img[0])
for i in range(n - m + 1):
for j in range(p - q + 1):
ok = True
for a in range(m):
for b in range(q):
if img[i + a][j + b] != motif[a][b]:
ok = False
break
if not ok:
break
if ok:
return (i, j)
return None
La complexité dans le pire des cas est en . En pratique, le parcours s'interrompt dès la première anomalie constatée sur un pixel, rendant la recherche très rapide sur des images réelles.