Le but est de déterminer la position de toutes les occurrences d'un motif dans une image. Le motif est donné dans une image séparée.
L'image initiale. | Le motif. | Les motifs retrouvés. |
La méthode est basée la corrélation croisée. La corrélation croisée d'une image avec un motif donne un pic partout où les motifs présentent une correspondance forte avec les pixels de l'image.
La méthode est simple :
La corrélation croisée permet de mesurer le degré de correspondance entre chaque partie d'image avec le motif. La valeur de corrélation appartient à l'intervalle [0,1] où 1 est la valeur de correspondance maximale.
La corrélation se réalise par convolution :
où t est la moyenne des pixels de l'image de motif et fu,v est la moyenne des pixels dans la fenêtre autour du pixel (u,v).
pany2pan page.png page.pan pcrosscorrelation page.pan letter.pan image1.pan | |
image1.pan : Le résulat de la corrélation croisée vue en carte de profondeur. |
La localisation consiste à trouver tous les pixels qui sont des maxima locaux avec une valeur de corrélation supérieure à 0.7 sur 1.
pabs 8 image1.pan tmp1.pan plocalmaxima 8 tmp1.pan tmp2.pan pbinarization 0.7 1 tmp2.pan image2.pan | |
image2.pan : Les pics de correspondance de la corrélation. |
Ne reste plus qu'à produire l'image de sortie avec les valeurs des pixels de l'image d'entrée autour des maxima locaux. La taille de la fenêtre autour des maxima est la taille de l'image de motif.
i) Sous Unix/Linux (bash)
pproperty 0 letter.pan; ncol=`pstatus` pproperty 1 letter.pan; nrow=`pstatus` pgetwindowaroundpoints $ncol $nrow 0 page.pan image2.pan image3.pan pproperty 0 letter.pan call pstatus call pset ncol pproperty 1 letter.pan call pstatus call pset nrow pgetwindowaroundpoints %ncol% %nrow% 0 page.pan image2.pan image3.pan ppan2png image3.pan output.png | |
image3.pan : Les occurrences de motif détectés. |