Localisation à partir d'images.

On cherche les solutions du problème de positionnement d'une caméra (calibrée) à partir de l'image de 3 points connus dans .

  1. Calculer les équations sur les distances entre le centre de la caméra et les trois points en fonction des angles de vue et des distances entres les points.

    (ideal)

  2. Déterminer une base du quotient par l'idéal engendré par ces équations.

    (monomialIdeal)

  3. Calculer la matrice de multiplication dans cette base.

    (%, matrix, submatrix, |, coefficients)

  4. Calculer les vecteurs propres de sa transposée.

    (sub(.,RR), eigenvectors)

  5. En déduire les solutions du problème.

    (columnMult)

i1 :

R = QQ[x1,x2,x3]

Une fonction qui calcule l'idéal à partir des cosinus des angles entre les rayons de visés des points et des distances entre ces points.

i2 :

F = (c1,c2,c3,d1,d2,d3) ->

ideal( {x1^2+x2^2-2*c1*x1*x2-d1,

x1^2+x3^2-2*c2*x1*x3-d2,

x2^2+x3^2-2*c3*x2*x3-d3 })

i3 :

I = F(1/2,1/10,1/3,1,2-1/5,2-2/3)

Le degré ou le nombre de solutions (comptées avec multiplicité).

i4 :

degree I

i5 :

monomialIdeal (I)

Une base monomiale du quotient .

i6 :

B = {1,x1,x2,x3,x1*x3,x2*x3,x3^2,x3^3}

i7 :

(Mn,C) = coefficients((x1^2 % I), Monomials=>B);C

La matrice de multiplication par dans cette base. On multiplie chaque élément de par et on calcule son reste modulo (la base de Grobner de) .

i9 :

M = matrix(QQ,{{0},{0},{0},{0},{0},{0},{0},{0}});

for m in B do {

(Mn,C) = coefficients((m*x1 % I), Monomials=>B);

M = M|C;

};

M=submatrix(M,{1..8})

La matrice (tranposée) de la multiplication par dans le dual de .

i12 :

M1 = sub(transpose(M),RR)

Ses valeurs et vecteurs propres.

i13 :

(V,E) = eigenvectors (M1)

On normalise en divisant par un scalaire pour avoir en première ligne.

i14 :

S = mutableMatrix(E);

for i from 0 to numcols(E)-1 do {

columnMult(S,i,1/E_(0,i))

};

Ev = matrix(S)

On lit les coordonnées des solutions dans les 3 lignes suivantes, car

i17 :

transpose(submatrix(transpose(Ev),{1..3}))

i18 :

Les variables représentant des distances, seules les solutions réelles positives nous intéressent. Dans cet exemple, il n'y a que la solution . A partir de ces distances aux points , nous calculons la position du centre de la caméra. Il y a deux possibilités (devant ou derrière le plan ) correspondant à deux positions « mirroirs ». L'orientation des images de dans le plan de l'image permet alors de déterminer quelle est la bonne position.