2012-02-23 5 views
1

Je me demandais comment convertir une coordonnée que j'ai acquise à partir d'une image couleur pleine résolution en coordonnées dans le flux de profondeur.OpeNni: coordonnées de couleur aux coordonnées de profondeur

E.g, j'ai obtenu (763,234) de la couleur pleine résolution et je veux savoir ce que est le (x, y, z) de l'image de profondeur? (BTW je fais cela en Java, mais une réponse en C++ est probablement facilement traduisible)

Thx à l'avance

Répondre

2

Si votre périphérique d'entrée le permet, vous pouvez simplement utiliser « GetAlternativeViewPointCap », comme indiqué dans le code C++ suivant. Dans ce cas, la carte de profondeur est automatiquement transformée pour s'aligner sur l'image couleur. Par conséquent, étant donné une coordonnée (x, y) d'un pixel sur l'image couleur, il devient suffisant d'interroger la carte de profondeur à la même position.

m_context.InitFromXmlFile(path,m_scriptNode);        
m_context.FindExistingNode(XN_NODE_TYPE_IMAGE, m_imageGenerator);      
m_context.FindExistingNode(XN_NODE_TYPE_DEPTH, m_depthGenerator);      
if (m_depthGenerator.IsCapabilitySupported(XN_CAPABILITY_ALTERNATIVE_VIEW_POINT)) { 
    m_depthGenerator.GetAlternativeViewPointCap().SetViewPoint(m_imageGenerator); 
} 

Si cette approche n'est pas viable, vous devez estimer la transformation entre les deux caméras. Un livre tel que "Géométrie à vues multiples dans Computer Vision" décrit tous les arrière-plans et algorithmes nécessaires.

Questions connexes