Hypersim, un esnemble de données synthétiques photoréalistes conçu pour la compréhension globale des scènes intérieures, repose sur des représentations spatiales précises. L'un de ses composants les plus critiques est le calcul des boîtes englobantes (Bounding Boxes) tridimensionnelles à 9 degrés de liberté (9-DOF). Ces volumes permettent de définir avec exactitude la position, l'orientation et l'échelle des objets dans un espace 3D.
Typologies des volumes englobants
Dans le cadre du traitement géométrique d'Hypersim, trois types de volumes sont principalement utilisés pour répondre à divers besoins algorithmiques :
- Boîtes alignées sur les axes (AABB) : Les faces du volume sont parallèles aux axes du repère global (X, Y, Z).
- Boîtes alignées sur l'objet en 2D : L'orientation suit la direction principale de l'objet sur le plan horizontal, tout en restant peprendiculaire au vecteur de gravité.
- Boîtes orientées en 3D (OBB 9-DOF) : Un volume totalement libre qui épouse au plus près la géométrie de l'objet, quelle que soit son inclinaison dans l'espace.
Algorithme de calcul pour les boîtes AABB
La boîte englobante alignée sur les axes est la forme la plus élémentaire. Elle est déterminée en identifiant les valeurs extrêmes des coordonnées des sommets du maillage de l'objet.
# Exemple de logique de calcul pour une boîte AABB
import numpy as np
def calculer_aabb(nuage_points):
# Recherche des bornes minimales et maximales sur chaque axe
borne_inf = np.min(nuage_points, axis=0)
borne_sup = np.max(nuage_points, axis=0)
# Calcul des dimensions (extents) et du centre géométrique
taille_bbox = borne_sup - borne_inf
centre_bbox = borne_inf + (taille_bbox / 2.0)
return centre_bbox, taille_bbox
Bien que performante en termes de calcul, cette méthode génère souvent un volume vide important si l'objet est orienté en diagonale par rapport aux axes globaux.
Fondements mathématiques du modèle 9-DOF
Une boîte englobante orientée (OBB) à 9 degrés de liberté est définie mathématiquement par la relation suivante :
B = { c + R * s | s ∈ [-e/2, e/2]³ }
Où les paramètres se décomposent comme suit :
- c (3 DOF) : Vecteur de translation représentant le centre de la boîte.
- R (3 DOF) : Matrice de rotation orthogonale définissant l'orientation locale.
- e (3 DOF) : Vecteur d'extension représentant la longueur, la largeur et la hauteur.
Pour obtenir le volume minimal (Minimum Volume Bounding Box), Hypersim s'appuie sur l'algorithme ApproxMVBB. Ce procédé utilise une recherche par grille et des itérations d'optimisation pour minimiser l'espace vide à l'intérieur du volume tout en englobant tous les sommets de l'instance sémantique.
Flux de traitement des données
Le processus de génération des boîtes englobantes dans Hypersim suit un pipeline structuré, généralement piloté par des scripts de traitement HDF5 :
- Extraction des primitives : Lecturee des sommets du maillage et des identifiants d'instances sémantiques depuis les fichiers de métadonnées.
- Filtrage : Isolation des points appartenant exclusivement à l'objet cible.
- Optimisation géométrique : Appel aux routines C++ (via
approx_mvbb_utils) pour calculer la matrice de rotation et les dimensions optimales. - Persistance : Stockage des vecteurs de position, d'orientation et d'extension dans des fichiers HDF5 dédiés.
# Structure simplifiée de l'appel au moteur d'optimisation
def estimer_obb_3d(points_objet, precision_eps, nb_echantillons):
# Paramétrage de l'algorithme ApproxMVBB
# Le moteur C++ effectue la recherche de la boîte de volume minimal
resultat = moteur_mvbb.compute(
points=points_objet,
epsilon=precision_eps,
samples=nb_echantillons
)
return {
"centre": resultat.centroid,
"rotation": resultat.rotation_matrix,
"extensions": resultat.extents
}
Applications pratiques et intégration
La précision de ces boîtes englobantes est fondamentale pour plusieurs tâches de vision par ordinateur :
- Détection d'objets 3D : Fournit une vérité terrain (ground truth) pour l'entraînement de réseaux de neurones.
- Analyse de scène : Permet de comprendre les relations spatiales et la disposition des meubles dans un environnement intérieur.
- Simulation physique : Facilite la détection de collisions rapide en utilisant des volumes simplifiés plutôt que des maillages complexes.
Les données générées sont organisées dans l'arborescence du projet sous le répertoire _detail/mesh, classées par type d'alignement (object-aligned vs axis-aligned). Pour initier le calcul sur une scène spécifique, l'utilisateur peut invoquer les outils en ligne de commande fournis dans le dépôt, en spécifiant le répertoire de la scène et le type de boîte souhaité.