Adloun

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.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre