Je travaille sur un projet Kinect en utilisant la vue infrarouge et la vue en profondeur. Dans la vue infrarouge, en utilisant la bibliothèque CVBlob, je suis capable d'extraire des points d'intérêt en 2D. Je veux trouver la profondeur de ces points 2D. J'ai donc pensé que je pouvais utiliser la vue en profondeur directement, quelque chose comme ceci :
coordinates3D[0] = coordinates2D[0];
coordinates3D[1] = coordinates2D[1];
coordinates3D[2] = (USHORT*)(LockedRect.pBits)
[(int)coordinates2D[1] * Width + (int)coordinates2D[0]] >> 3;
Je ne pense pas que ce soit la bonne formule pour obtenir la profondeur. Je suis capable de visualiser les points d'intérêt 2D dans la vue en profondeur. Si j'obtiens un point (x, y) dans la vue infrarouge, je le dessine comme un point rouge dans la vue en profondeur à (x, y).
J'ai remarqué que les points rouges ne sont pas là où je les attends (sur un objet). Il y a une erreur systématique dans leur emplacement.
J'étais d'avis que la vue en profondeur et la vue infrarouge ont une correspondance biunivoque, contrairement à la correspondance entre la vue en couleur et la vue en profondeur.
Est-ce bien vrai ou y a-t-il un décalage entre les vues IR et profondeur ? S'il y a un décalage, puis-je obtenir la bonne valeur de profondeur ?