La première étape, après avoir chargé les images est de créer un masque de l'image source que l'on veut insérer. Cette démarche a été automatisé en utilisant la fonction impoly qui permet de sélectionner une zone.
La deuxième étape, est de sélectionner l'endroit où l'on désire inséré la zone sélectionné précedemment dans l'image de destination.
Par la suite, on calcule le résultat d'un filtre Laplacien sur l'image d'origine
À l'aide des paramètres en entré (masque de la source et position de destination) on détermine le masque identifiant la zone à modier dans la zone de destination.
On colle ensuite la zone source filtré en laplace vers la destination.
Si on identifie chaque pixel du masque de destination avec un nombre croissant et que l'on crée une matrice NxN où N est le nombre de pixels dans le masque, on peut créer une matrice du genre:
Chaque chiffre 1 de la rangée i et de la colonne j indique une connectivité (de type 4) entre le pixel i et j du masque de destination. Cette matrice est la matrice A
La matrice B est une matrice qui contient les valeurs (en laplace) de l'image source dans la destination. Pour éliminer la démarcation, il faut modifier, i.e. mettre à zéro, les pixels formant la bordure intérieur entre l'image source et la destination.
L'opération X = A\b va permettre de trouver les valeurs qui viendra minimiser les gradiants entre les deux images.
Pour une image en couleur, le traitement est effectuésur chaque canal de couleur.
Pour des images aux contours similaires, le résultat est ce que l'on attend. Il ne s'agit pas d'une illusion parfaite car on néglige beaucoup de facteurs.
Le test suivant démontre une réussite et un échec de l'algorithme:
On peut voir qu'il faut un contour similaire. Même si l'algorithme mélange les gradiant, si l'on passe d'un endroit ridé à un endroit lisse, on va voir l'erreur.
© 2014 Charles Ricard