Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 8 sur 8
  1. #1
    Nouveau Membre du Club
    Inscrit en
    juillet 2009
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 96
    Points : 25
    Points
    25

    Par défaut Logiciel pour génération d images de profondeurs

    Bonjour à tous,

    Je ne suis pas sur que je pose ma question au bon endroit (excusez moi dans ce cas).

    Je souhaiterais générer des images de profondeur (valeur des pixels = distance au capteur "virtuel") à partir d'un modèle 3D représentant un humain dans différentes positions. Mon but est de créer une base d'apprentissage pour un algorithme de traitement d images.

    Je me suis donc penché sur les logiciels permettant de créer des modèles 3D d'humain (Poser, Make Human par ex.) et je me demandais s'ils permettent de générer des images de profondeur et d'identifier les points correspondant aux "joints" des articulations.

    Ce que je souhaite faire est il facilement réalisable avec ce type de logiciels ? Dans ce cas, avez vous un logiciel à me conseiller ?

    Merci pour votre aide

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro Renaud Warnotte
    Développeur informatique
    Inscrit en
    août 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Nom : Homme Renaud Warnotte
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2006
    Messages : 2 675
    Points : 5 075
    Points
    5 075

    Par défaut

    Pour ce qui est de la carte de profondeur.

    Les logiciels cités, eux même, je ne pense pas que tu puisses générer une carte de profondeur directement avec.

    Par contre tu peux exporter ton modèle vers un modeler/renderer (Blender par exemple) et faire un rendu pour avoir cette carte des profondeur.

  3. #3
    Membre éclairé

    Inscrit en
    janvier 2008
    Messages
    688
    Détails du profil
    Informations forums :
    Inscription : janvier 2008
    Messages : 688
    Points : 394
    Points
    394

    Par défaut

    Salut on2101 que doit faire ton algo d'apprentissage de traitement d'image?

  4. #4
    Expert Confirmé Sénior

    Profil pro Jean-Michel BORLOT
    Fabricant et casseur d'avions
    Inscrit en
    avril 2004
    Messages
    3 440
    Détails du profil
    Informations personnelles :
    Nom : Jean-Michel BORLOT
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : avril 2004
    Messages : 3 440
    Points : 6 092
    Points
    6 092

    Par défaut

    Citation Envoyé par wax78 Voir le message
    Par contre tu peux exporter ton modèle vers un modeler/renderer (Blender par exemple) et faire un rendu pour avoir cette carte des profondeur.
    +1
    Voir ce lien par exemple, avec utilisation des nodes dans blender
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Nouveau Membre du Club
    Inscrit en
    juillet 2009
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 96
    Points : 25
    Points
    25

    Par défaut

    Bonjour,

    Mon algo a besoin de paires

    - image de profondeur de l individu
    - squelette ou points particuliers (articulations par exemple) en 3D par rapport au point de vue

    Il s'agit de couples (certaines caractéristiquesl image de profondeur afin de les associer à la solution qui est alors connue. Le but est donc de déterminer la position de points clés (ou skelette) sur un individu sur une image de profondeur.

    Je vais essayer d'utiliser conjointement MakeHuman / Blender. En effet les nodes dans blender permettent d'accéder au buffer de profondeur de la scène 3D.

    Il ne me reste plus qu'à générer des personnages dans différentes positions et de calculer le rendu avec Blender. Je vais essayer de me familiariser avec ces logiciels.

    Merci de votre aide

  6. #6
    Expert Confirmé Sénior

    Profil pro Jean-Michel BORLOT
    Fabricant et casseur d'avions
    Inscrit en
    avril 2004
    Messages
    3 440
    Détails du profil
    Informations personnelles :
    Nom : Jean-Michel BORLOT
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : avril 2004
    Messages : 3 440
    Points : 6 092
    Points
    6 092

    Par défaut

    Citation Envoyé par on2101 Voir le message
    Je vais essayer d'utiliser conjointement MakeHuman / Blender.
    Si tu passes par MakeHuman, il va te falloir faire le rig de ton humain pour le mettre dans la position que tu veux (d'où un truc de plus à apprendre à faire avec blender, même si les dernières versions intègrent une version de rig de bipède qui simplifie un peu la chose).

    Essaye de voir si parmi les rigs existants il n'y en aurait pas un qui te conviendrait (faire une recherche sur "blender human rig" ou "blender biped rig", voir aussi dans les fichiers source des projets de la fondation blender avec elephants dream ou sintel)
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  7. #7
    Nouveau Membre du Club
    Inscrit en
    juillet 2009
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 96
    Points : 25
    Points
    25

    Par défaut

    Bonjour,

    Je pense finalement procéder comme suit :

    - creation d un personnage avec le l ogiciel Poser. J obtient une sequence d images en .obj

    - dans Blender : lecture de l image i (.obj), positionnement de la camera, puis rendu du buffer de profondeur

    - enregistrement du buffer de profondeur et des points d articulation dans un fichier

    Le traitement effectué dans Blender nécessite l'écriture d'un script en python appellant les fonctions Blender. Je pourrais en plus enregistrer les images de profondeur dans un format "maison" que je pourrais réutiliser facilement.

    Pourriez vous me donner votre avis sur la faisabilite de cela ?
    Le format ".obj" contient il le squelette (et la position des points d articulation dont j'ai besoin) ou un autre format serait il plus adapté ?

    Enfin, si vous conaissez le nom des modules / fonctions Blender permettant de réaliser le rendu du z buffer, cela pourrait me faire gagner un peu de temps.

    Merci pour vos avis !!

  8. #8
    Nouveau Membre du Club
    Inscrit en
    juillet 2009
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 96
    Points : 25
    Points
    25

    Par défaut

    Bonjour,

    Les étapes de chargement du fichier .obj et de positionnement de la caméra sont assez simples par script Python (bpy.les_elements_concernes).

    En revanche, j'ai plus de mal avec le rendu et l'accès au z buffer.
    J effectue le rendu avec bpy.ops.render.opengl() et/ou bpy.ops.render.render(). J'essaie ensuite d'accéder au z buffer via "glReadPixels". Les valeurs obtenues sont censées être comprises entre 0 et 1. Je pensais ensuite utiliser un "gluUnProject" afin d'obtenir les vraies distances.

    Je n'obtiens pas de bons résultats, "glReadPixels" me donne pour chaque pixel 1.0 ou bien des valeurs étranges (10e35, 10e20, ...). Ci dessous une partie de mon code.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    # chargement fichier ".obj" et placement camera 
    # les modifications sont bien opérées dans la fenetre de la scène 3D 
     
    # rendu 
    # faut il faire cela ? 
    bpy.ops.render.opengl()
    bpy.ops.render.render()
     
    # lecture z buffer 
    zbuffer = bgl.Buffer(bgl.GL_FLOAT, [largeur, hauteur])
    bgl.glReadPixels(0, 0, largeur, hauteur, bgl.GL_DEPTH_COMPONENT, bgl.GL_FLOAT, zbuffer)
    liste = bgl.Buffer.to_list(zbuffer) 
     
    # liste ne contient que des 1.0  ou bien des valeurs étranges
    La manière de faire vous semble t elle bonne ?
    Merci par avance pour votre aide

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •