align.tex 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. \subsection{Tools > Registration > Align}
  2. \label{subsection:align}
  3. \begin{figure}[!htb]
  4. \begin{center}
  5. \includegraphics[width=0.6\textwidth]{Partie3_Fonctions/alignDlg.png}
  6. \caption{\label{fig:alignDlg}Interface de paramétrage pour l'outil de recalage grossier de deux entités}
  7. \end{center}
  8. \end{figure}
  9. Cette fonction permet de recaler\index{recalage}\index{aligner des nuages|see{recalage}} grossièrement deux nuages de points (algorithme \emph{"4 points Congruent Sets For Robust
  10. Registration"} de Aiger, Mitra et Cohen-Or, Siggraph 2008).
  11. \\
  12. \par
  13. Une première zone de saisie (en haut à gauche) permet d'indiquer les 2 nuages à recaler et leurs rôles\index{role@rôle}
  14. respectifs (\emph{Model and Data} : le \emph{Model} est le nuage de référence (qui ne bouge pas) sur lequel viendra s'aligner (si possible)
  15. le nuage \emph{Data}.
  16. Comme le recalage calculé est un recalage rigide, seules des translations et des rotations peuvent être appliquées
  17. à l'ensemble du nuage \emph{Data}.
  18. Plusieurs autres paramètres doivent être renseignés par l'utilisateur pour une utilisation optimale de cette méthode.
  19. \\
  20. \par
  21. \emph{Sampling} : cette zone concerne l'étape préalable de sous-échantillonnage\index{echantillonner@échantillonner!sous-echantillonner@sous-échantillonner}
  22. des nuages de points. Cela permet d'améliorer sensiblement l'efficacité de l'algorithme.
  23. En effet, quelques dizaines de milliers de points suffisent généralement à obtenir un bon
  24. recalage, alors que la complexité de l'algorithme augmente rapidement en fonction du nombre de points. L'utilisateur devrait toujours
  25. chercher à minimiser le nombre de points pris en compte, quitte à relancer l'algorithme avec plus de points si besoin.
  26. Voici les paramètres du sous-échantillonnage :
  27. \begin{itemize}
  28. \item \emph{Method} : méthode de sous-échantillonnage (voir section~\ref{subsection:subsample}). Sélectionnez \emph{None} pour ne pas sous-échantillonner
  29. \item \emph{Model} : un slider et/ou un champ avec variateur permet de choisir le nombre de points conservé pour le nuage de référence
  30. \item \emph{Data} : idem, un slider et/ou un champ avec variateur permet de choisir le nombre de points conservé pour le nuage recalé\\
  31. \end{itemize}
  32. \par
  33. \emph{Registration parameters} : cette zone correspond aux paramètres de l'algorithme de recalage en tant que tel.
  34. Nous expliquons en détail ces paramètres :
  35. \begin{itemize}
  36. \item \emph{Number of trials} : l'algorithme procède par essais successifs et ne retient que celui ayant fourni le meilleur résultat.
  37. Ce champ permet de choisir le nombre d'essais à effectuer. Plus la valeur saisie est grande, plus le calcul sera long, mais plus la
  38. probabilité d'obtenir de bons résultats sera élevée. Il peut donc être nécessaire d'adapter ce paramètre en fonction du nombre de points
  39. composant les nuages pour obtenir un bon alignement dans un temps raisonnable. Pour donner un ordre d'idée, une cinquantaine d'essais
  40. pour recaler deux nuages de 5000 points chacun permet d'obtenir un résultat convenable en quelques minutes (de l'ordre de 2 à 5 minutes,
  41. tout dépend de l'ordinateur sur lequel le programme s'exécute).
  42. \item \emph{Overlap} : ce paramètre, compris entre 0.0 et 1.0, correspond à une estimation du taux de recouvrement entre les deux nuages
  43. lorsqu'ils sont correctement alignés. Un taux de recouvrement de 1 signifie que les deux nuages se recouvrent quasiment entièrement, 0
  44. signifiant que les nuages sont disjoints (dans ce cas, le recalage n'a pas beaucoup de sens). Une estimation très approximative
  45. du recouvrement est en général suffisante, il ne s'agit en aucun cas de renseigner avec précision la valeur effective.
  46. \item \emph{Delta} : ce paramètre correspond à une estimation a priori de la distance moyenne qui existera entre les points des deux nuages
  47. après qu'ils aient été recalés. Il sert de critère d'arrêt et agit comme une tolérance à l'erreur : plus il est proche de 0, plus on contraint
  48. les nuages à être proches, mais plus la probabilité de trouver une bonne solution est faible. En principe, si \emph{Delta} vaut zéro, le
  49. programme ne pourra pas trouver d'alignement entre les deux nuages. En règle générale, pour obtenir de bons résultats, \emph{Delta} doit
  50. correspondre à la résolution (inverse de la densité) du nuage de référence. L'interface propose un bouton \emph{Estimate} qui permet
  51. d'estimer de manière automatique ce paramètre en se basant sur un calcul de la densité moyenne du nuage de référence.
  52. \item \emph{Limit max. number of candidates} : lorsque ce champ est activé (pour celà, cocher la case qui y est associé), il est possible de fixer
  53. le nombre maximal de candidats que le programme est autorisé à traiter pour chaque essai. En effet, lors d'un essai, le processus recherche
  54. dans le nuage servant de données des ensembles de points pouvant mener à un bon recalage. Ces ensembles sont calculés en fonction des paramètres cités
  55. précédemment, et le programmme peut être amené à trouver un nombre énorme de candidats (quelques centaines de milliers d'ensembles). Ce paramètre permet
  56. de ne sélectionner parmi ces candidats que ceux qui sont considérés comme étant les meilleurs, et donc de raccourcir considérablement le temps de
  57. traitement de chaque essai. En contrepartie, on se prive potentiellement de trouver le meilleur recalage à cause de l'heuristique utilisée pour retenir
  58. les meilleurs candidats. Lorsque ce champ est désactivé, le nombre maximal de candidats est illimité, ce qui peut conduire à de très grands temps de calcul.
  59. \end{itemize}
  60. \begin{figure}[!htb]
  61. \begin{center}
  62. \includegraphics[width=0.8\textwidth]{Partie3_Fonctions/alignExample}
  63. \caption{\label{fig:alignExample}Alignement de deux nuages se recouvrant partiellement.
  64. A gauche la configuration initiale, à droite le résultat du recalage avec un recouvrement estimé à 90\%
  65. (\emph{Overlap}~$=\:0,9$) et une vingtaine d'essais (\emph{Number of trials}).}
  66. \end{center}
  67. \end{figure}
  68. \par
  69. Les paramètres \emph{Delta} et \emph{Overlap} nécessitent donc que l'utilisateur ait une idée a priori de ce que seront les nuages après avoir
  70. été alignés.
  71. \\
  72. \par
  73. La figure \ref{fig:alignExample} présente le résultat obtenu en alignant deux scans d'une peluche relevés sous deux angles sensiblement
  74. différents. En théorie, la fonction \emph{Align} est capable de traiter des nuages avec des taux de recouvrement beaucoup plus faibles que ceux
  75. présentés en exemple.
  76. \\
  77. \par
  78. Les alignement calculés via cette fonctionnalité dépendent grandement de la configuration des nuages à traiter. En effet, leur géométrie
  79. ainsi que le degré de ressemblance les rendent plus ou moins facilement comparables. De ce fait, il se peut que les résultats fournis dans
  80. certains cas semblent relativement mauvais. Dans ces situations, vous pouvez alors utiliser la fonction de recalage fin décrite en
  81. section~\ref{subsection:register}. Il est même conseillé, de manière générale, d'avoir recours au recalage fin après utilisation de cette
  82. fonctionnalité.
  83. \\
  84. \par
  85. \textcolor[rgb]{1.0,0.0,0.0}{Cette fonction crée une copie du nuage \emph{Data} aligné sur le nuage \emph{Model}.
  86. Il n'est donc pas nécessaire de cloner les nuages avant, puisqu'ils ne sont pas modifiés directement.}