Partie1_Introduction.tex 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. \chapternonum{Introduction}
  2. \label{cha:Introduction}
  3. \section{Présentation\index{presentation}}
  4. \emph{CloudCompare} est un logiciel de traitement et de comparaison de nuages de points 3D denses (ainsi que de maillages triangulaires dans une certaine mesure). Son développement a été initié à partir de 2004 dans le cadre d\textquoteright{}une thèse CIFRE financée par EDF R\&D et encadrée par l\textquoteright{}Ecole Nationale Supérieure des Télécommunications (ENST \textendash{} désormais Telecom ParisTech \textendash{} laboratoire TSI, équipe TII). Il se poursuit depuis et est désormais un projet \textit{open-source} indépendant. CloudCompare n\textquoteright{}est pas voué à un usage commercial. \\
  5. \par
  6. Historiquement, ce logiciel a été conçu pour traiter des nuages de points denses (tels que ceux issus d'un scanner laser 3D) dans le but de les comparer pour en extraire les différences. Il permet donc typiquement :
  7. \begin{itemize}
  8. \item de calculer les distances locales entre deux nuages de points denses ou entre un nuage et un maillage triangulaire (figure de gauche ci-dessous) ;
  9. \item de filtrer le bruit de mesure du scanner laser pour mettre en évidence les \textquotedbl{}vraies\textquotedbl{} différences (figure du milieu) ;
  10. \item de segmenter les points restants en sous-ensembles correspondant à des objets
  11. distincts (figure de droite).
  12. \end{itemize}
  13. \includegraphics[width=1\textwidth]{images/Partie1_Introduction/illustration_CloudCompare.jpg}\\
  14. \par
  15. Depuis, CloudCompare a beaucoup évolué et il offre désormais de nombreuses fonctions d'édition (transformation rigide interactive, segmentation interactive), de recalage automatique (type ICP), de modélisation (calcul de maillages surfaciques type Delaunay ou Poisson), de reprojection (selon le point de vue du scanner, selon une direction principale, sur un cylindre ou un cône, etc.), de calcul morphologiques (rugosité, courbure, etc.) et autres. A travers un système de plugins, l'utilisateur a aussi accès à des fonctionalités et librairies externes (des algorithmes issus du monde de la recherche - reconstruction de maillage par approche de type
  16. Poisson, filtrage des points non visibles, etc. - des périphériques d'acquisition comme la Kinect de
  17. Microsoft, ou encore des shaders évolués pour faciliter la visualisation des entités 3D - Eye Dome Lighting
  18. ou SSAO, etc.). \\
  19. \par
  20. L'originalité de \emph{CloudCompare} tient à plusieurs aspects :
  21. \begin{itemize}
  22. \item les structures de données utilisées : notamment un \textquotedbl{}octree\textquotedbl{}
  23. particulier permettant de traiter très rapidement des nuages de points
  24. volumineux (plusieurs millions de points 3D).
  25. \item un grand nombre de choix et de méthodes pour le calcul de distance
  26. entre nuages de points ou entre un nuage et un maillage triangulaire (tous basés sur
  27. la notion de \textit{distance au plus proche voisin}) ;
  28. et un calcul très rapide mais moins précis basé sur une distance de \emph{Chanfrein} ;
  29. \item la possibilité de prendre en compte les différences d'échantillonnage entre les jeux
  30. de données comparés ;
  31. \item la possibilité de filtrer le bruit de mesure a posteriori ;
  32. \item la possibilité de prendre en compte la visibilité du scanner pour chaque jeu de
  33. données ;
  34. \item la gestion de champs scalaires mutliples associés à un même nuage de points (comme des distances typiquement). Ces champs scalaires peuvent être affichés par coloration dynamique des points. Ils peuvent permettre aussi de moduler l'affichage de l'entité (par filtrage des points associés à certaines valeurs) ou encore de segmenter le nuage associé. Plus généralement, ils servent d'entrée à de nombreux alogrithmes, ils peuvent être composés ensembles, etc.
  35. \item enfin, plusieurs types de rendus évolués (soit temps réel via des shaders ou \textit{offline} via un
  36. calcul de \textit{Portion de Ciel Visible} par exemple) permettent une forte amélioration de la lisibilité
  37. des données 3D à l\textquoteright{}écran.\\
  38. \end{itemize}
  39. \par
  40. Il est enfin important de noter que bien que \emph{CloudCompare} soit capable
  41. de gérer des maillages triangulaires, ce type d'entité reste avant tout
  42. pour \emph{CloudCompare} un nuage de points (les sommets du maillage) muni
  43. d\textquoteright{}une structure particulière (des triangles), à côté de nombreuses autres
  44. structures (octree, kd-tree, couleurs, normales, champs scalaires, photos calibrées, etc.).
  45. L\textquoteright{}utilisateur est donc invité à toujours garder cette
  46. particularité à l\textquoteright{}esprit lorsqu\textquoteright{}il
  47. utilise \emph{CloudCompare}, et il devra en particulier toujours faire attention
  48. au rôle de chaque entité 3D dans les traitements proposés par ce logiciel.
  49. \section{Licence\index{licence}}
  50. Le logiciel \emph{CloudCompare} est constitué de plusieurs
  51. \index{composants logiciels}composants logiciels :
  52. \begin{itemize}
  53. \item La librairie \textbf{CClib} (algorithmes)
  54. \item La librairie \textbf{qCC\_db} (base de données)
  55. \item Le programme \textbf{qCC} qui utilise ces librairies
  56. \\
  57. \end{itemize}
  58. Installer et utiliser ces composants signifie que vous acceptez les termes
  59. et les conditions de leurs licences respectives. La version 2.4 et les versions
  60. antérieures de ces deux composants logiciels sont la propriété d\textquoteright{}EDF
  61. R\&D et de TELECOM ParisTech.\\
  62. \par
  63. \textbf{Licence de la librairie CClib} : \\
  64. La librairie CClib est diffusée sous la licence GNU LGPL (GNU
  65. Lesser General Public Licence) telle qu\textquoteright{}elle a été
  66. publiée par la FSF (Free Software Foundation) ici :
  67. \href{http://www.gnu.org/licenses/lgpl.html}{http://www.gnu.org/licenses/lgpl.html}\\
  68. \par
  69. \textbf{Licence de la librairie qCC\_db} : \\
  70. La librairie qCC\_db est diffusée sous la licence GNU GPL (GNU General Public Licence)
  71. telle qu\textquoteright{}elle a été publiée par la FSF (Free Software Foundation) ici : \href{http://www.gnu.org/licenses/gpl.html}{http://www.gnu.org/licenses/gpl.html}\\
  72. \par
  73. \textbf{Licence du programme exécutable qCC} : \\
  74. Le programme qCC est diffusé sous la licence GNU GPL (GNU General
  75. Public Licence) tel qu\textquoteright{}elle a été publiée par la FSF
  76. (Free Software Foundation) ici :
  77. \href{http://www.gnu.org/licenses/gpl.html}{http://www.gnu.org/licenses/gpl.html}\\
  78. \\
  79. EDF R\&D et TELECOM ParisTech accordent à l'utilisateur les droits
  80. d'installer et d\textquoteright{}utiliser le logiciel \emph{CloudCompare}
  81. après l'avoir téléchargé depuis le site \href{http://www.cloudcompare.org}{http://www.cloudcompare.org}.
  82. Le logiciel \emph{CloudCompare} est fourni en l\textquoteright{}état, sans
  83. aucune garantie explicite ou implicite. Les auteurs déclinent toute
  84. responsabilité pour tout dommage direct ou indirect. L\textquoteright{}utilisateur
  85. assume tous les risques et responsabilités quant à la qualité du logiciel
  86. \emph{CloudCompare} et de son utilisation.
  87. \section{Installation du binaire (Windows)\index{installation}}
  88. \emph{CloudCompare} fonctionne sous les systèmes d'exploitation Windows (XP, Vista \& Seven)
  89. et Linux (Debian, Ubuntu, etc.) et pour des architectures 32 ou 64 bits.\\
  90. \par
  91. Les versions binaires de \emph{CloudCompare} pour Windows téléchargeables sur le site officiel
  92. ne comportent pas de programme d'installation. Il suffit de décompresser l'archive .zip
  93. contenant \index{exécutable}l'exécutable et les \index{DLL (Dynamic Link Libraries)}DLLs.\\
  94. Voici la liste minimale des fichiers que vous devez trouver après décompression
  95. de l'archive :
  96. \begin{itemize}
  97. \item qCC.exe (exécutable principal)
  98. \item history.txt (l'historique des modifications)
  99. \item license.txt (la license d'utilisation)
  100. \item CC\_DLL.dll (librairie CClib)
  101. \item QCC\_DB\_DLL.dll (librairie qCC\_db)
  102. \item QtCore4.dll (DLL Qt - \href{http://qt.nokia.com}{qt.nokia.com})
  103. \item QtGui4.dll (DLL Qt - \href{http://qt.nokia.com}{qt.nokia.com})
  104. \item QtOpenGL4.dll (DLL Qt - \href{http://qt.nokia.com}{qt.nokia.com})
  105. \\
  106. \end{itemize}
  107. \par
  108. Et de manière optionnelle :
  109. \begin{itemize}
  110. \item un certain nombre de DLLs supplémentaires nécessaires à certains plugins
  111. (freenect.dll, etc.) ou à la prise en charge de formats de fichiers (liblas.dll, etc.)
  112. \item un sous-répertoire \textit{plugins} contenant les DLLs de chaque plugin
  113. \item un sous-répertoire \textit{shaders} contenant les fichiers requis par certains plugins
  114. \item un sous-répertoire \textit{imageformats} contenant les librairies nécessaires à la lecture
  115. et l'écriture de fichiers images
  116. \\
  117. \end{itemize}
  118. \par
  119. Sous Linux, il faut impérativement compiler le projet pour l'utiliser (voir ci-dessous).
  120. \section{Compilation du projet\index{compilation}}
  121. L'intégralité du code de \emph{CloudCompare} est écrite en C++. Le projet utilise désormais le générateur de projets de compilation \emph{CMake} (\href{http://www.cmake.org/}{http://www.cmake.org}).\\
  122. \par
  123. Pour compiler le projet, référez vous au \emph{wiki} : \href{http://www.cloudcompare.org/doc/wiki}{http://www.cloudcompare.org/doc/wiki}\\