Adloun

Chercher un motif dans une image

Exercice · informatique (tronc commun des prépas scientifiques), chapitre 8 — Matrices de pixels et images

É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.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.