| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- \subsection{Tools > Statistics > Statistical test}
- \label{subsection:statisticalTest}
- \begin{figure}[!htb]
- \begin{center}
- \includegraphics[width=0.4\textwidth]{Partie3_Fonctions/statisticalTestDlg.png}
- \caption{\label{fig:statisticalTestDlg}Exemple d'estimation automatique des paramètres d'une loi normale pour un champ scalaire}
- \end{center}
- \end{figure}
- \index{champ scalaire}
- \index{statistiques!test}
- \index{statistiques!paramètres}
- \index{Gauss|see{loi normale}}
- Cette fonction, centrale dans \emph{CloudCompare}, permet d'appliquer un test du $\chi^{2}$ local sur un nuage de point muni d'un champ scalaire.
- Le test du $\chi^{2}$ est appliqué à chaque point à partir de l'histogramme des valeurs scalaires de ses $n$ voisins ($n$ étant
- un des paramètres de l'algorithme). Le test confronte cet histogramme\index{histogramme} avec une distribution théorique à deux paramètres ($\mu$
- et $\sigma$ dans le cas d'une loi normale par exemple).
- \\
- \par
- Avant de spécifier les paramètres, l'utilisateur doit choisir le type de distribution théorique (il a le choix actuellement entre
- \emph{Gauss} et \emph{Weibull}). Le résultat est un nouveau champ scalaire (une valeur pour chaque point - la métrique du $\chi^{2}$ -
- qui donne une information sur la concordance locale entre la valeur scalaire et la distribution testée). La théorie du test du
- $\chi^{2}$ nous fournit un seuil (calculé à partir de la marge d'erreur $p(\chi^{2})$, dernier paramètre de l'algorithme) qui permet
- de classer les points en fonction de leur non-appartenance à la loi testée. Cette loi représentera typiquement le bruit de mesure,
- et on obtiendra ainsi l'ensemble des points dont la distance (à l'autre nuage/maillage) ne fait pas partie du bruit de mesure (par exemple).
- Ainsi, on aura les points qui ont effectivement subi une modification, un changement, et on évitera de prendre en compte des points
- en réalité immobiles mais dont la distance n'est pas nulle car elle est bruitée. Une fois le nuage séparé en deux classes,
- on peut garder le groupe des points \emph{hors distribution} (voir figure~\ref{fig:statisticalTestExample}, en rouge) et les
- segmenter\index{segmentation} par exemple en fonction de la proximité relative des points (par une extraction des composantes connexes - Cf.
- section~\ref{subsection:labelConnectedComponents}).\index{composantes connexes}
- \begin{figure}[!htb]
- \begin{center}
- \includegraphics[width=0.8\textwidth]{Partie3_Fonctions/statisticalTestExample.jpg}
- \caption{\label{fig:statisticalTestExample}Champ des écarts initial (en haut à gauche), filtrage statistique (en haut à droite),
- puis extraction des points \emph{hors distribution théorique} (en bas à gauche) et enfin extraction des composantes connexes
- (en bas à droite).}
- \end{center}
- \end{figure}
- Remarques :
- \begin{itemize}
- \item Pour appeler cette fonction, il faut sélectionner une seule entité 3D, munie d'un champ scalaire actif.
- \item Pour régler le paramètre $p(\chi^{2})$, il est important de comprendre que le test du $\chi^{2}$ permet uniquement de rejeter
- l'hypothèse selon laquelle \emph{les valeurs du champ scalaire prises sur le voisinage de chaque point suivent la loi testée}, mais
- pas l'inverse. Ainsi, plus la marge d'erreur est faible, et plus le seuil du $\chi^{2}$ sera grand (on rejette moins souvent
- l'hypothèse citée précédemment, et on classe donc moins de points comme \emph{ne suivant pas la loi testée}).
- \item \textcolor[rgb]{1.00,0.00,0.00}{Inversement, plus $p(\chi^{2})$ est grand, plus on aura de points "hors la loi", colorés en rouge.}
- Notez que ce paramètre sert uniquement à pré-positionner les potentiomètres de réglage des couleurs (seuils de coupure et de saturation
- des valeurs du champ scalaire) pour l'affichage du résultat à l'écran (Cf. section~\ref{Champs-scalaires}). Ces potentiomètres peuvent
- être ensuite déplacés par l'utilisateur avant extraction effective des points (par appel de la fonction \emph{Scalar Fields > Filter
- by Value}, qui va créer un nouveau nuage de points ne comportant que les points présentement affichés à l'écran, c.à.d. les points ne
- suivant pas la distribution théorique). De plus, la distance du $\chi^{2}$ est extrêmement divergente et ceci donne une grande marge
- de manoeuvre à l'algorithme. Ainsi, une modification relativement grande du seuil de coupure n'aura que peut d'effet sur la
- classification. Au pire, on risque de rater un tout petit nombre de points (au niveau des bordures des zones limites).
- \item Pour obtenir des résultats précis, il faut par contre connaître ou mesurer la distribution du bruit de mesure
- (une sorte de bruit moyen, en première approximation, comprenant l'erreur de mesure dûe au capteur, à la surface scannée, à la lumière,
- à la température ambiante lors de la mesure, à la création du maillage dans le cas d'une comparaison nuage/maillage, etc.).
- Les paramètres de la distribution statistique correspondante peuvent donc être définis à partir de connaissances a priori
- mais peuvent aussi être déterminés à partir d'un champ scalaire (une portion du nuage typiquement) avec la fonction de calcul de paramètres statistiques
- à partir d'un champ scalaire (Cf. section~\ref{subsection:computeStatParams}).
- \item L'algorithme crée un nouveau champ scalaire nomme (\emph{Chi2 Distances}). Ce champ est ajouté au nuage de points courant.
- \end{itemize}
|