Précédent   Forum du club des développeurs et IT Pro > Applications > Développement 2D, 3D et Jeux
Développement 2D, 3D et Jeux Forum développement 2D, 3D et Jeux. Avant de poster : Les FAQs Programmation 2D, 3D et Jeux
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 08/01/2013, 00h22   #1
on2101
Membre à l'essai
 
Inscription : juillet 2009
Messages : 96
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 96
Points : 23
Points : 23
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
on2101 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 10h29   #2
wax78
Modérateur
 
Avatar de wax78
 
Homme Renaud Warnotte
Développeur informatique
Inscription : août 2006
Messages : 2 128
Détails du profil
Informations personnelles :
Nom : Homme Renaud Warnotte
Âge : 32
Localisation : Belgique

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

Informations forums :
Inscription : août 2006
Messages : 2 128
Points : 4 064
Points : 4 064
Envoyer un message via MSN à wax78
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.
wax78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 19h17   #3
saturn1
Membre confirmé
 
Inscription : janvier 2008
Messages : 576
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 576
Points : 258
Points : 258
Salut on2101 que doit faire ton algo d'apprentissage de traitement d'image?
saturn1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 19h38   #4
plegat
Expert Confirmé Sénior
 
Jean-Michel BORLOT
Fabricant et casseur d'avions
Inscription : avril 2004
Messages : 3 214
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 214
Points : 5 377
Points : 5 377
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
plegat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 00h18   #5
on2101
Membre à l'essai
 
Inscription : juillet 2009
Messages : 96
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 96
Points : 23
Points : 23
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
on2101 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 08h59   #6
plegat
Expert Confirmé Sénior
 
Jean-Michel BORLOT
Fabricant et casseur d'avions
Inscription : avril 2004
Messages : 3 214
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 214
Points : 5 377
Points : 5 377
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
plegat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2013, 15h45   #7
on2101
Membre à l'essai
 
Inscription : juillet 2009
Messages : 96
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 96
Points : 23
Points : 23
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 !!
on2101 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2013, 13h10   #8
on2101
Membre à l'essai
 
Inscription : juillet 2009
Messages : 96
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 96
Points : 23
Points : 23
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
on2101 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 08h24.


 
 
 
 
Partenaires

Hébergement Web