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.
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.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
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.$
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.