M2 TI - Traitement d’images 2016/2017 - Recalage d’images Modèles d’appariement de points labellisés Soient xi , yi , 1 ≤ i ≤ n, des points de Rd . On cherche à obtenir une transformation φ : Rd → Rd telle que φ(xi ) = yi pour tout i (appariement exact) ou φ(xi ) soit "proche" de yi (appariement inexact) Transformations affines On va minimiser J(A, b) = n X kAxi + b − yi k2 , i=1 où A est une matrice d × d, b un vecteur de Rd représenté par un vecteur colonne (de même que les xi et yi ). On peut utiliser une notation plus compacte : notons x = (x1 , . . . , xn ) et y = (y1 , . . . , yn ) les matrices de taille d × n correspondant aux concaténations des vecteurs colonnes xi et yi , et 1 le vecteur ligne de longueur n ne contenant que des 1. On a alors J(A, b) = kAx + b1 − yk2 , où la norme sur les matrices est définie comme la racine carrée de la somme des carrés des coefficients. On peut même aller plus loin en notant M = (A, b) la matrice de taille d × (d + 1) obtenue par concaténation de A et b, et x̃ la matrice de taille (d+1)×n obtenue par concaténation de x et 1. Alors J(A, b) = J(M ) = kM x̃ − yk2 . Calculons la différentielle de J : dJ(M ).N = 2 hM x̃ − y , N x̃i . Le produit scalaire euclidien entre deux matrices rectangulaires M et N de même taille vérifie hM , N i = tr(M T N ). On a donc : dJ(M ).N = 2tr (M x̃ − y)T N x̃ = 2tr x̃(M x̃ − y)T N = 2 (M x̃ − y)x̃T , N , car tr(M N ) = tr(N M ) dès que M N et N M sont bien définies. Le gradient de J est donc ∇J(M ) = 2(M x̃ − y)x̃T . Nous allons montrer que la fonctionnelle J est convexe, et même strictement convexe hormis des cas très particuliers. Pour toutes matrices M, N on a : h∇J(M ) − ∇J(N ) , M − N i = 2 (M − N )x̃x̃T , M − N = = = = 2tr(x̃x̃T (M − N )T (M − N )) 2tr(x̃T (M − N )T (M − N )x̃) 2tr(((M − N )x̃)T (M − N )x̃) 2 k(M − N )x̃k2 ≥ 0. Ceci montre que J est convexe. Examinons ensuite le cas d’égalité : k(M − N )x̃k2 = 0 ⇔ (M − N )x̃ = 0 ⇔ xi ∈ Ker(M − N ), ∀i, 1 ≤ i ≤ n. Si on suppose que V ect(xi )1≤i≤n = Rd , ce qui est très peu restrictif (dans R2 ceci signifie simplement que les points ne sont pas tous alignés), on aura alors égalité seulement si M = N , ce qui signifie que J est strictement convexe. Dans ce cas J possède un minimum unique qui correspond à la solution du système linéaire suivant : ∇J(M ) = 0 ⇔ M x̃x̃T = yx̃T . Remarquons que l’hypothèse faite (rang(x) = d) assure bien que ce système admet un solution unique. Déplacements Les déplacements sont des transformations affines pour lesquelles la matrice A correspond à une rotation ; c’est-à-dire que A est une matrice orthogonale : AT A = Id . On peut donc définir le problème d’appariement sous la forme suivante : P Minimiser J(A, b) = ni=1 kAxi + b − yi k2 , sous la contrainte AT A = Id . L’espace des contraintes est compact, ce qui implique que le problème admet nécessairement une solution. Par contre elle n’est pas unique en général, et il n’est pas possible de résoudre analytiquement le problème analytiquement pour une dimension d quelconque. Cependant c’est possible pour d = 2 et d = 3. Cas de la dimension 2 On va utiliser une représentation des points de R2 comme nombres complexes. En effet une cos θ − sin θ matrice de rotation de taille 2 a une expression très simple : et en complexe sin θ cos θ c’est encore plus simple car la rotation est obtenue directement par multiplication avec eiθ . La fonctionnelle à minimiser s’écrit donc comme fonction de l’angle θ et b : J(θ, b) = n X |eiθ xk + b − yk |2 , k=1 où xk , b, yk sont assimilés à des nombres complexes. J est une fonction continue, bornée en θ (puisque θ est borné) et coercive par rapport à b (c’est-à-dire qu’elle tend vers +∞ quand |b| tend vers +∞). Donc elle admet au moins un minimum, et ce minimum vérifie ∇J = 0. Calculons la différentielle par rapport à b : ) ( n X ∂b J(θ, b).ξ = 2< (eiθ xk + b − yk )ξ . k=1 L’annulation de cette expression pour tout complexe ξ équivaut à (prendre ξ = 1 et ξ = i) : ! ! n n X X xk eiθ + nb − yk = 0, k=1 k=1 2 ce qui implique que ! ! n n X 1 X 1 sy − sx eiθ , yk − b = bθ := xk eiθ = n k=1 n k=1 P P où l’on a noté sx = nk=1 xk et sy = nk=1 yk . Calculons à présent la dérivée de J par rapport à θ : ( n ) X ∂θ J(θ, b) = 2< (eiθ xk + b − yk )(ieiθ xk ) ( k=1 n ) X = 2< −i (eiθ xk + b − yk )e−iθ xk ( n k=1 ) X = 2= xk xk + (b − yk )e−iθ xk = 2= ( k=1n X ( = 2= k=1 n X ! |xk |2 + n X ) ! (b − yk )xk e−iθ !k=1 ) (b − yk )xk e−iθ k=1 = 2= (bs̄x − syx̄ ) e−iθ , où l’on a noté syx̄ = Pn yk x̄k . Remplaçons maintenant b par l’expression de bθ : 1 iθ −iθ ∂θ J(θ, bθ ) = 2= sy − sx e s̄x − syx̄ e n 1 1 −iθ −iθ sy s̄x e − sx s̄x − syx̄ e = 2= n n 1 1 2 −iθ sy s̄x − syx̄ e − |sx | = 2= n n 1 = 2= sy s̄x − syx̄ e−iθ . n k=1 Notons α = n1 sy s̄x − syx̄ = reiν . On a donc ∂θ J(θ, b) = 2={αe−iθ } = 2r sin(ν − θ). Cette dérivée s’annule pour r = 0 ou θ = ν ou θ = ν + π. • Si r = 0, on voit que quelle que soit la valeur de θ, on a ∇J(θ, bθ ) = 0. Par conséquent la fonction θ 7→ J(θ, bθ ) a une dérivée nulle, et donc J(θ, bθ ) a une valeur identique pour tout angle θ. Tous ces points sont donc solutions. • Sinon, on a deux points candidats au minimum, qui sont (ν, θν ) et (ν +π, θν+π ). On conclue en comparant les valeurs de J pour ces deux points. Cas de la dimension 3. Dans R3 on peut utiliser les quaternions pour représenter les déplacements. Les quaternions sont une généralisation des nombres complexes en dimension 4. On ne présente pas cette méthode ici. 3 Transformations homographiques Une transformation homographique s’écrit à l’aide de 9 coefficients : 1 ax + bx2 + c dx1 + ex2 + f , φ(x) = gx1 + hx2 + i gx1 + hx2 + i On peut représenter cette transformation à l’aide d’une matrice H de taille 3 × 3 en coordonnées homogènes : 1 1 x a b c ax + bx2 + c x̃ = x2 7→ d e f × x1 x2 1 = dx1 + ex2 + f 1 g h i gx1 + hx2 + i Étant donné deux séries de points xi , yi de R2 , les équations φ(xi ) = yi s’écrivent 1 2 ax1i +bxi2+c = y 1 gxi +hxi +i dx1i +ex2i +f gx1i +hx2i +i i = yi2 . Les inconnues de ces équations sont les coefficients de la matrice H. On voit qu’on peut réécrire ces équations sous forme de système linéaire : 1 axi + bx2i + c = yi1 (gx1i + hx2i + i) dx1i + ex2i + f = yi2 (gx1i + hx2i + i). 1 xi a + x2i b + c − yi1 x1i g − yi1 x2i h − yi1 i ⇔ x1i d + x2i e + f − yi2 x1i g − yi2 x2i h − yi2 i. a b c 1 2 d 1 1 1 2 1 xi xi 1 0 0 0 −yi xi −yi xi − yi e = 0 ⇔ × 0 0 0 x1i x2i 1 −yi2 x1i −yi2 x2i − yi2 f g h i Notons h le vecteur colonne des coefficients a à i, et Ui la matrice 2 × 9 écrite à gauche dans l’équation précédente. L’équation s’écrit donc Ui h = 0. En prenant en compte toutes ces équations pour 1 ≤ i ≤ n on obtient un système matriciel de la forme U h = 0 où U est la matrice de taille 2n × 9 obtenue en concaténant les blocs Ui . On obtient ainsi un système de 2n équations pour 9 inconnues. Pour n ≤ 4 ces équations admettent toujours au moins une solution, mais à partir de n = 5 il n’y a en général pas de solution, et on résout donc ces équations au sens des moindres carrés. Déformations non rigides : modèle des splines "plaque mince" (Thin Plate Splines) Le modèle de déformations "plaque mince" tire son nom de la théorie physique qui décrit les déformation d’une plaque solide soumise à des forces, "mince" exprimant les fait que l’on 4 néglige les effets dans la direction de l’épaisseur de la plaque. On donne ici d’abord la recette pratique du modèle Thin Plate Splines sans les explications mathématiques qui seront données dans le paragraphe suivant. En pratique, une déformation TPS (pour Thin Plate Splines) dans le plan est décrite par un ensemble de points de contrôle x1 , . . . , xn , et des vecteurs α1 , . . . , αn dans R2 , ainsi qu’une transformation affine de matrice M et vecteur b. L’image d’un point x par la transformation est alors φ(x) = n X h (kx − xj k) αj + M x + b, j=1 où h est la fonction réelle h(r) = r2 log(r). Pour réaliser l’appariement des points xi sur les points yi on écrit alors la contrainte yi = φ(xi ), ce qui donne les équations suivantes : ∀i, 1 ≤ i ≤ n, n X h (kxi − xj k) αj + M xi + b = yi . j=1 On a ici n équations linéaires dans R2 , c’est-à-dire 2n équations réelles, pour 2n + 6 inconnues (2n pour les αi , 4 pour la matrice M et 2 pour b). Il "manque" donc des équations ; autrement dit il y a non unicité de la solution. Les équations complémentaires sont obtenues en écrivant une condition de minimisation de l’énergie associée à la déformation (voir paragraphe qui suit). Ces équations sont : n n X X αi = 0, αi xTi = 0. i=1 i=1 La première relation donne deux équations scalaires tandis que la deuxième en donne 4 (puisque αi xTi est une matrice). A final on peut écrire sous forme matricielle le système linéaire complet de dimension 2n + 6 : y11 y12 α11 α12 h(0) h(kx1 − x2 k) ··· h(kx1 − xn k) x11 x21 1 2 1 2 1 h(kx1 − x2 k) h(0) ··· h(kx2 − xn k) x12 x22 1 α2 α2 y2 y2 .. .. .. .. .. .. .. ... . . . . . . . 1 2 , 2 = 1 2 1 × h(kx1 − xn k) ··· h(kxn−1 − xn k) h(0) xn xn 1 αn αn yn yn x11 x12 ··· x1n 0 0 0 m11 m21 0 0 2 2 2 x1 x2 ··· xn 0 0 0 m12 m22 0 0 b1 b2 0 0 1 1 ··· 1 0 0 0 ou encore, sous forme condensée, T T h(x) x̃T α y × = , AT 0 x̃ 0 où l’on a utilisé les mêmes notations que dans la première section, et h(x) désigne la matrice n × n de coefficients h(kxi − xj k). 5