Toujours à propos de scanner 3D...

Posté par  . Modéré par Jaimé Ragnagna.
0
19
jan.
2006
Technologie
Après un premier jet pour créer un logiciel libre de numérisation 3D (COPOS), voici le second : le logiciel de reconstruction de nuage de points 3D.

Qrust est une interface qui permet de manipuler le nuage de points 3D en proposant les fonctionnalités suivantes :
  • Homogénéisation/décimation du nuage
  • Suppression manuelle des points parasites
  • Reconstruction au moyen de deux méthodes paramétrables
  • Exportation du modèle polygonal en OBJ

Pour l'instant, il n'y a pas de connexion entre COPOS (qui permet de créer un nuage de points à partir d'une vidéo) et Qrust (qui effectue le travail de reconstruction)

Il reste beaucoup de travail avant d'arriver à un logiciel complètement utilisable, mais le projet avance. Pour passer d'un objet de la vie réelle à un modèle 3D, trois étapes peuvent être identifiées :
  • la capture d'un nuage de points présentant la surface de l'objet
  • le nettoyage, l'adaptation, voir la fusion entre plusieurs nuages
  • enfin la reconstruction en un modèle polygonal


COPOS s'occupe actuellement de la première étape. Après avoir construit un scanner 3D simple (une webcam et un pointeur laser), ce logiciel permet d'utiliser les séquences vidéo, puis en déduire un nuage de points 3D à partir des paramètres du système.

Qrust permet d'effectuer la seconde et la troisième étape. Ce logiciel offre la possibilité d'homogénéiser le nuage de points, ainsi que la suppression manuelle des points parasites. Deux méthodes sont accessibles pour reconstruire sous forme de modèle polygonal (triangles) le nuage de points. Celui-ci pourra ensuite être exporté sous forme de fichier OBJ.


Pour la nouvelle conception de COPOS, je cherche quelqu'un ou des exemples de codes objet permettant :
  • la calibration de la caméra (à partir d'un échiquier par exemple)
  • une classe caméra pouvant :
    • charger un fichier de calibration
    • retourner un rayon 3D (origine, direction) dans le repère de la caméra (centre optique+z dans la direction de l'objectif) lorsque l'on donne les coordonnées d'un pixel (en 2D)

J'ai déjà un peu étudié OpenCV, mais ça me semble faire être un peu trop usine à gaz à mon goût.

Toute suggestion est la bienvenue !

Aller plus loin

  • # \_o<

    Posté par  (site web personnel) . Évalué à 1.

    Bonne continuation.
    • [^] # Re: \_o<

      Posté par  (site web personnel) . Évalué à 2.

      Votre projet est très intéressant !


      Il y a pas une 4e étape dasn le scan 3D:
      - capture et application des textures sur les polygones ? enfin ça doit être l'étape la plus complexe :-/

      En tout cas, bonne chance pour la suite ;-)
      • [^] # Re: \_o<

        Posté par  (site web personnel) . Évalué à 1.

        Heu, si on peux importer dans blender les textures et les nuages de points, ça peux se faire sans nécéssité de 4ème logiciel non ?
        • [^] # Re: \_o<

          Posté par  . Évalué à 2.

          Blender importe les obj sans problème, donc c'est bon pour le maillage. Pour la texture, il suffit de prendre 3 ou 4 photos de l'objet, de les triturer avec Gimp, puis de les importer sous blender et de les plaquer. Ca c'est la théorie, car je ne l'ai pas fait.

          Le faire automatiquement, je n'en ai pas la moindre idée car il faudrait modifier le traitement de la video et la façon de scanner. Un peu comme celui-ci http://www.muellerr.ch/engineering/laserscanner/default.htm
          • [^] # Re: \_o<

            Posté par  . Évalué à 1.

            Pour les textures on peut utiliser le même algorithme que pour le scan. La seule différence est la résolution de la caméra uitilsée.

            Autant scanner un objet peut se faire avec une caméra basse résolution, autant scanner les textures va nécessiter une suite de gros plans, et de nombreux recalages, certains facteurs d'imprécision s'accroissant au passage.
  • # Re: OpenCV

    Posté par  (site web personnel) . Évalué à 2.

    Salut.

    Pour OpenCV, je suis en train de l'utiliser pour un projet à la fac et, bien qu'il semble un peu rebuttant au début, on s'y fait très vite, et finalement, il est pas si usine à gaz que ca, il est même assez convainquant.

    Un jour libre ?

    • [^] # Re: OpenCV

      Posté par  . Évalué à 2.

      Heu... je l'utilise également dans ma fac, mais je trouve que c'est vraiment pas une solution terrible.
      Moi je trouve qu'il est très usine à gaz : comme dans toute bonne grosse lib, il réinvente la roue (les listes, ...), il utilise des structures vraiment bizarres des fois (mais ce serait pour mieux optimiser les traitements...).
      Il a une doc HORRIBLE : ça c'est le pire des problèmes, même après un an d'utilisation je comprend toujours pas certaines fonctions. On sait jamais si les paramètres de retour doivent être initialisés avant, il nous renvoie des listes sans dire ce qu'il met dedans (et comme en plus il utilise un système de typage dynamique au dessus du des structures C, c'est le cauchemard).
      Dernier point, mais la majorité s'en fout : il tourne super mal sur ppc. J'ai jamais eu un prog de taille conséquente qui tourne correctement. Et encore, quand il plante pas, il donne des résultats faux sans qu'on s'en rendre compte ! Comme c'est fabriqué par Intel, cela ne m'étonne pas vraiment ... Mais par contre, oui il tourne assez vite & bien sur x86.

      Enfin voila mon avis, j'avais fait une recherche rapide qui m'a donné quelques autres libs sympa pour le traitement d'image, mais j'ai pas testé.
      • [^] # Re: OpenCV

        Posté par  (site web personnel) . Évalué à 1.

        Ca je te l'accorde sans problème : la doc est horrible et les structures sont déroutantes :-).
        Mais les quelques algos (EMD ou kmeans) utilisés sont assez rapides (à coté d'une implémentation mano).
        Mais je n'irais pas tout baser sur cette lib, j'en parle juste parce qu'on nous l'imposait à la fac et que pour certains trucs, c'était pas si mal.

        Un jour libre ?

        • [^] # Re: OpenCV

          Posté par  . Évalué à 2.

          Oui il a pas mal d'algos assez complexes fournis d'origine, mais le temps de comprendre comment les mettre dans son code, je connais plein d'autres élèves qui ont préféré les réimplémenter à la main... et même si leur code est beaucoup plus lent, bah ils ont passé moins de temps que moi dessus, alors que j'essayais de faire les choses dans "l'esprit" opencv.
          Enfin bon, si la rapidité n'est pas le plus important (rapidité d'exécution, pas d'implémentation, hein !) il vaut mieux éviter opencv.
          • [^] # Re: OpenCV

            Posté par  . Évalué à 2.

            C'est bien ce que je pensais. Merci pour vos impressions.

            Ce que je recherche vraiment, c'est un truc simple de calibration, puis une classe simple d'utilisation de la calibration. Je veux juste pouvoir utiliser les paramêtres intrinsèques (et extrinsèque) d'une caméra.

            Mais personne ne semble avoir fait cette brique toute seule :-(
  • # nuage de points

    Posté par  (site web personnel) . Évalué à 3.

    A propos d'algorithmes de recontruction de modele a partir de nuage de points, j'imagine que cela reconstitue un maillage, n'est ce pas ?

    Quelqu'un saurait il s'il existe des algorithmes pour reconstituer une surface a partir d'un nuage de points ? Par exemple j'ai un nuage de points et je voudrais obtenir la surface (Bezier ou Nurbs peu importe) qui minimise la distance entre chacun des points du nuage de points, et cette surface.
    • [^] # Re: nuage de points

      Posté par  . Évalué à 3.

      Il existe des methodes pour faire ca, utilisees en mecanique par exemple pour la mesure des pieces par les machines a mesurer tridimensionnelles. en gros tu definis ta surface avec un certain nombre de parametres, ensuite tu calcule la distance separant tes points de la surface en foction des parametres, et tu applique un algo d'optimisation pour minimiser la somme des carres de ces distances avec comme variables les parametres de ta surface.

      Ca s'apelle la methode des moindres carres en mecanique, je l'ai appliquee pour des surfaces simples (plans ou cylindres) mais ca doit marcher avec n'importe quele surface.

      De memoire il existe aussi une methode dite 'des petits deplacements" mais je m'en rapele pas en detail.
      • [^] # Re: nuage de points

        Posté par  (site web personnel) . Évalué à 2.

        Je connais la methode des moindres carrés, mais de là à l'appliquer pour trouver le bon nombre de points de controles pour en faire une surface de Bezier (ou une NURBS), il y a une sacré difference !
      • [^] # Re: nuage de points

        Posté par  . Évalué à 2.

        Je confirme que c'est possible. Maintenant, à ma connaissance, ce n'est pas facilement disponible sur le net :-)
        Le principe mathématique n'est pas trop compliqué, mais pour faire une implémentation qui tienne la route...

        La reconstruction polygonale à partir de triangulation de Delaunay est simple à comprendre. J'avais d'ailleurs écris moi-même un algo en C++ qui marchait bien et était robuste aux erreurs. Mais, il s'effondrait dès que l'on dépassait les 5000 points (ce qui n'est pas énorme), ça mettait des heures avec le processeur au taquet. Actuellement, j'utilise CGAL qui a été élaboré par l'INRIA qui a demandé qqs années d'études et plusieurs chercheurs. Pour conclure, que passer des maths à l'informatique n'est pas toujours aisé.

        Pfff, ils sont trop compliqués dans leurs têtes les matheux.
  • # Question bête.

    Posté par  . Évalué à 6.

    Je n'ai rien vu sur ton site abordant le sujet

    t'as prévu de créer une micro-entreprise, ou une Jeune Enreprise Innovant, ou quoique ce soit qui se rapproche d'une startup ?

    Parceque :
    - Le projet a l'air solide
    - Les débouchés sont nombreux
    -Ton projet a l'avantage d'être libre

    Tu as une page de dons, et tu as, j'ai lu, récolté une centaine d'euros.
    Avec un projet bien monté, tu peux facilement trouver un Buisness Angel qui te débloquerais des fonds, tu peux avoir des aides de tous les cotés.

    T'as contacté l'oseo, une cci ou quelque chose ?
    T'es complètement dans le profil de http://www.oseo.fr/recherche_technologie/opportunites_et_con(...) , non ?

    Ta rien a perdre, tout à y gagner.
    Lance toi. Fonce ;)
    • [^] # Re: Question bête.

      Posté par  . Évalué à 3.

      Hé hé !
      En effet, j'avais fait des démarches pour créer une entreprise. J'ai même participé au concours de l'ANVAR de 2003 (je n'ai pas été retenu).
      C'était sympa comme expérience. Mais, quoiqu'on en dise, pour commencer, il faut des ressources (cf. http://linuxfr.org/~Vapula/) et j'étais très limité.

      Ensuite, je n'ai pas trouvé mon ange. Là, j'ai appris que je n'avais pas les talents suivant : charisme et commercial (et pire que tout, je suis honnête). La remarque qui revenait le plus était ça existe déjà ! (ce qui n'est pas faux, modulo le coût).
      Pour pallier mes défauts, il aurait fallut embaucher qqun, mais mes ressources étaient limités.

      Je recommencerais sans doute quand j'aurais les moyens de me planter.

      J'en profite pour passer une annonce :
      Si qqun connait une petite entreprise française (ou européenne) qui pourrait me fabriquer pour pas cher une série de plateau rotatif et de support de barrière laser, ce serait cool :-)
      (cf. http://copos.berlios.de/documentations/bricolage/index.htm)

      J'avais pensé au fabricant de jouet, mais je n'ai pas vraiment trouvé.
      • [^] # Re: Question bête.

        Posté par  . Évalué à 1.

        même si la fonction premiere du site n'est pas celle vers laquel tu t'oriente,
        il y a l'entreprise qui s'occupe de faire les sabres laser du nom de "park saber", (c'est une copie des sabrelaser made in lucas) et même si le sabre laser n'a pour toi absolument aucun interet, il se trouve que cet entreprise a l'air de disposer de systeme d'usinage a la fois très précis, et que la firme elle même est a mon avis bien plus abordable que l'énorme machinerie "george lucas". et qui sait,si ca se trouve ton projet pourrais très bien les interesser, etant donner que ca permettrai de mettre sur le marché un scanner 3d avec un prix très abordable et dont le cout de fabrication resterai tres minime...
        je ne sais pas si ca peut t'aider mais en tout cas je l'espere

        http://www.parksabers.com/ ( voila l'adresse du site principal )
        ___________________________________________________

        j'ai également une ou deux petite question

        1) personnellement je suis pas un genie de l'informatique, par contre je travail dans une entreprise de film d'animation, et je m'occupe de la partie 3d de cette entreprise.
        je sais modéliser sous les softs de 3d, mais je travail avec des gens dont le talent de modelisation en argile ou en patte a modeler dépasser de loins nos capaité de modélisation 3d.
        maisle probleme est qu'aucun de nous ne serait en mesure de faire tout ce que j'ai pu lire sous linux ( installer le soft, gerer les fonctions etc.)
        ma question est donc celle ci,
        y aurait il moyen d'adapter ce prinipe sur un soft qui tournerai sous window?

        l'autre question est celle ci

        saurais tu ou je peu trouver des adresse sur les prix fonctionnalité, et entreprise qui développe les scanner 3d,
        mais non pas les scanner qui utilise le balayage laser pour scanner, mais le stylo qui permet en cliquant sur le modele volume, de marquer des points dans l'espace...
        il me semble que ce principe fonctionne avec une table magnetique qui capte la position du stylo par rapport a la table ( niveau zero) et qui reproduit le point sous un soft en prennant en compte la position en longueur largeure et hauteur par rapport a la tablette et la retranscrit en x, y et z...

        merci d'avance
        • [^] # Re: Question bête.

          Posté par  . Évalué à 1.

          Je suis en master 2 professionnel en réalité virtuelle et modélisation numérique à Laval.

          On vient de recevoir les moins cher des bras a retour d'effort (les Omni phantom de sensable). Ils livrent avec le bras un SDK pour windows, linux et mac os x. Je vais travailler dessus les 2 prochaines semaines (sous windows, malheureusement) pour un projet qui n'a rien a voir avec ta question, mais par contre ils vendent des plugins pour 3DSMax, maya et encore un autre soft 3D pour utiliser le bras pour sculpter un mesh.

          Avec la nouvelle version de blender qui intègre une sorte d'outil de ce genre (le bbrush sculpt, je crois), il faudrait créer une sorte de "curseur 3D" dans blender et le mapper au bras. Apres ca devrait permettre pas mal de choses :)

          Par contre, je pars de mes cours dans 2 semaines, donc je n'aurai pas le temps de m'y coller, et je ne pense pas avoir la capacité non plus.

          Le bras coute environ 3000 ¤ ( c le moins cher il me semble, et j'ai testé les démos, c pas mal au niveau du rendu)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.