Minimisation des sommes des écarts de pts 3D — Les-mathematiques.net The most powerful custom community solution in the world

Minimisation des sommes des écarts de pts 3D

Bonjour
J'essaye de résoudre mon problème que je présente ci-dessous.
J'ai un nuage de point 3D $(XM_i,YM_i,ZM_i)$ et je cherche à trouver l'angle de rotation $A$ suivant l'axe $Z$ puis l'angle de rotation $B$ suivant l'axe $Y$ qui minimise la somme des écarts avec les points théoriques $(XT_i,YT_i,ZT_i)$.
\begin{cases}
\sum_{i=1}^{n}((\cos(B) (\cos(A) XM_i-\sin(A) YM_i)-\sin(B) ZM_i)-XT_i)^2\\
\sum_{i=1}^{n}((\sin(A) XM_i+\cos(A) YM_i)-YT_i)^2\\
\sum_{i=1}^{n}((\sin(B) (\cos(A) XM_i-\sin(A) YM_i)+\cos(B) ZM_i)-ZT_i)^2

\end{cases} La forme développée
\begin{matrix}
n (\overline{XM_i^2}+\overline{XT_i^2}+\overline{YM_i^2}+\overline{YT_i^2}+\overline{ZM_i^2}+\overline{ZT_i^2}-\cos(A+B) \overline{XM_i XT_i+YM_i ZT_i}\\
-\cos(A-B) \overline{XM_i XT_i-YM_i ZT_i}-\sin(A+B) \overline{XM_i ZT_i-XT_i YM_i}+\sin(A-B) \overline{XM_i ZT_i-XT_i YM_i}\\
-2 \sin(A) \overline{XM_i YT_i}+2 \sin(B) \overline{ZM_i XT_i}-2 \cos(A) \overline{YM_i YT_i}-2 \cos(B) \overline{ZM_i ZT_i})=SE
\end{matrix}

Les dérivées partielles en fonction de $A$ puis de $B$ :

\begin{matrix}n (\sin(A+B) \overline{XM_i XT_i}+\sin(A+B) \overline{YM_i ZT_i}+\sin(A-B) \overline{XM_i XT_i}-\sin(A-B) \overline{YM_i ZT_i}\\
-\cos(A+B) \overline{XM_i ZT_i}+\cos(A+B) \overline{YM_i XT_i}+\cos(A-B) \overline{XM_i ZT_i}+\cos(A-B) \overline{YM_i XT_i}\\
-2 \cos(A) \overline{XM_i YT_i}+\sin(A) \overline{YM_i YT_i})=0\\
\\n (\sin(A+B) \overline{XM_i XT_i}+\sin(A+B) \overline{YM_i ZT_i}-\sin(A-B) \overline{XM_i XT_i}+\sin(A-B) \overline{YM_i ZT_i}\\
-\cos(A+B) \overline{XM_i ZT_i}+\cos(A+B) \overline{YM_i XT_i}-\cos(A-B) \overline{XM_i ZT_i}-\cos(A-B) \overline{YM_i XT_i}\\
+2 \cos(B) \overline{ZM_i XT_i}+\sin(B) \overline{ZM_i ZT_i})=0

\end{matrix} En cherchant à résoudre ce système je tombe sur cette égalité :
\begin{matrix}\sqrt{(-2 n \overline{YM_i YT_i})^2+(n \overline{XM_i YT_i})^2} \sin(A+\varphi_1)=\sqrt{(-2 n \overline{ZM_i ZT_i})^2+(n \overline{ZM_i XT_i})^2}\sin(B+\varphi_2)

\end{matrix} Est-ce la bonne méthode ? Car je suis dans une impasse à présent.
Merci pour votre aide.

Réponses

  • Je crois que tu te mets un fil a la patte en ne considerant que deux rotations, en en faisant trois, genre angles d'Euler en mecanique, le probleme est plus simple et plus naturel.



    Le probleme se pose aussi bien dans $E=\R^n$ que $\R^3$ Tu disposes de $2N$ points $T_i$ et $M_i$. Si $O(n)$ est l'ensemble des matrices orthogonales d'ordre $n$ tu cherches a minimiser la fonction sur $O(n)$ definie par $U\mapsto \sum_{i=1}^N\|UM_i-T_i\|^2=B-2A(U)$ avec $B=\sum_{i=1}^N(\|M_i\|^2+\|T_i\|^2$, $C= \sum_{i=1}^NM_iT_i^T$
    $$A(U)=\sum_{i=1}^NT_i^TUM_i= \mathrm{trace}(UC)$$ De facon equivalente tu cherches donc le $U$ qui maximise $A(U).$ Pour cela il faut que tu ecrives la matrice carree $C$ sous sa forme polaire,c'est a dire $C=VDW$ avec $V$ et $W$ dans $O(n)$ et $D=\mathrm{diag}(d_1,\ldots,d_n)$ matrice diagonale a coefficients positifs ou nuls (on t'expliquera comment on trouve $V,D,W$) Avec ces notations en considerant $R=WUV=(r_{ij})_{1\leq i,j\leq n}$de $O(n)$
    on a
    $$A(U)= \mathrm{trace}(UVDW)=\mathrm{trace}(RD)=\sum_{j=1}^nr_{jj}d_j\leq \sum_{j=1}^nd_j.$$ En effet, comme $R$ est orthogonale, alors $r_{jj}\leq 1.$ On voit donc que $A(U)$ est maximal pour $I_n=R=WUV$, ou encore pour $U=W^{-1}V^{-1}=W^TV^T.$
  • Bonjour,
    Merci pour ta réponse, mais, mes conditions de départ sont figées. Je ne peux appliquer que deux rotations, l'une suivant l'axe $Z$ et l'autre suivant l'axe $Y$.
    J'ai tourné et retourné mon problème dans tous les sens, cherché des identités qui pourrais me débloquer, mais j'en suis arrivé à ce point.
    J'essaye de résoudre ce système sans succès depuis un moment :
    \begin{matrix}
    k1=\overline{XM_iXT_i}\\
    k2=\overline{YM_iZT_i}\\
    k3=\overline{XM_iZT_i}\\
    k4=\overline{YM_iXT_i}\\
    k5=\overline{XM_iYT_i}\\
    k6=\overline{YM_iYT_i}\\
    k7=\overline{ZM_iXT_i}\\
    k8=\overline{ZM_iZT_i}\\


    k1\sin(A)\cos(B)+k2\cos(A)\sin(B)+k3\sin(A)\sin(B)+k4\cos(A)\cos(B)-k5\cos(A)+k6\sin(A)=0\\
    k1\cos(A)\sin(B)+k2\sin(A)\cos(B)-k3\cos(A)\cos(B)-k4\sin(A)\sin(B)+k7\cos(B)+k8\sin(B)=0.

    \end{matrix} Graphiquement je vois très bien ce qu'il se passe, mais il me manque ce petit indice pour me débloquer.
Connectez-vous ou Inscrivez-vous pour répondre.
Success message!