Depth Bleeding
La bavure de profondeur est un artefact de carte de profondeur où les distances s’étalent au-delà des contours des objets, créant des pixels flottants et des halos dans les nuages de points et les scènes de réalité augmentée.
Le débordement de profondeur est un artefact des cartes de profondeur où les valeurs de profondeur franchissent la limite entre un objet au premier plan et son arrière-plan ; les pixels situés sur le bord adoptent alors la profondeur de l’autre surface ou une valeur intermédiaire. Il se produit aux discontinuités de profondeur, c’est-à-dire aux limites d’occlusion où une surface s’arrête et où commence une surface beaucoup plus éloignée, et touche toutes les sources de profondeur : la vision stéréoscopique, les capteurs à temps de vol et LiDAR, ainsi que l’estimation de profondeur par apprentissage. L’importance des contours dépasse largement la proportion de pixels qu’ils occupent. Une fois reprojetés dans un nuage de points 3D, les pixels affectés deviennent des pixels fantômes, des points suspendus dans le vide entre un objet et le mur situé derrière lui. En réalité augmentée, ils font ressortir des objets virtuels à travers les contours réels ou les font flotter devant ceux-ci ; en synthèse de nouvelles vues, ils étirent les contours comme des feuilles de caoutchouc ; et, en robotique comme pour les véhicules autonomes, ils élargissent les objets, ce qui fausse la préhension du robot et étire les boîtes de la détection d’objets 3D.
Origines du débordement de profondeur#
En stéréoscopie, la correspondance de chaque pixel est déterminée en comparant une fenêtre de pixels voisins ; près d’un bord, cette fenêtre couvre les deux surfaces. Les pixels du premier plan présents dans la fenêtre peuvent dominer le coût de correspondance, de sorte que la profondeur du premier plan s’étend aux pixels d’arrière-plan voisins. La littérature sur la stéréoscopie appelle cet effet l’épaississement du premier plan. Les pixels visibles par une seule caméra n’ont aucune correspondance correcte et adoptent la profondeur d’un pixel voisin.
Les réseaux neuronaux d’estimation de profondeur monoculaire produisent des débordements de deux façons. Leurs encodeurs sous-échantillonnent l’image en cartes de caractéristiques grossières ; de nombreux décodeurs prédisent donc la profondeur à une résolution inférieure à celle de l’entrée, puis interpolent pour l’augmenter, ce qui mélange les deux surfaces au niveau de chaque bord. Et lorsqu’un pixel de délimitation peut appartenir à l’une ou l’autre des surfaces, une fonction de perte quadratique est minimisée en prédisant la moyenne des deux profondeurs, une valeur qui ne se situe sur aucune des surfaces. Les modèles de profondeur Ultralytics YOLO26 prédisent la profondeur logarithmique au quart de la résolution d’entrée ; le prédicteur suréchantillonne ensuite la carte par interpolation bilinéaire jusqu’à la taille initiale de l’image, transformant ainsi dans la sortie un écart entre deux surfaces en une rampe de quelques pixels de largeur.
Les capteurs produisent des débordements physiques. Un pixel à temps de vol ou un faisceau LiDAR dont l’empreinte chevauche un bord reçoit la lumière des deux surfaces et indique une profondeur intermédiaire, source classique des pixels fantômes dans les nuages de points des caméras de profondeur. Les caméras RGB-D ajoutent un problème de désalignement : la profondeur est mesurée depuis une position légèrement différente de celle de la couleur, et les contours se décalent lorsqu’on reprojette l’une sur l’autre.
Cet exemple suréchantillonne une carte de profondeur au quart de sa résolution, représentant une personne à 1.5 m devant un mur situé à 4 m, comme le font de nombreux réseaux de profondeur pour atteindre la pleine résolution, puis compte les pixels dont la profondeur ne correspond à aucune des deux surfaces :
import torch
import torch.nn.functional as F
# A depth map predicted at 1/4 resolution: a person 1.5 m away in front of a wall 4 m away
low = torch.full((1, 1, 120, 160), 4.0)
low[..., 30:, 60:100] = 1.5
for mode in ["bilinear", "nearest"]:
# Upsample 4x to the 480 x 640 image
depth = F.interpolate(low, size=(480, 640), mode=mode)[0, 0]
# Bleeding pixels hold depths that belong to neither surface
bleeding = (depth > 1.6) & (depth < 3.9)
print(f"{mode}: {bleeding.sum().item()} bleeding pixels, row 300 across the edge: {depth[300, 394:404].tolist()}")Le suréchantillonnage bilinéaire produit 3 518 pixels affectés par le débordement, avec une rampe de 1.81, 2.44, 3.06 et 3.69 m le long de chaque contour de la silhouette ; dans un nuage de points, chacun de ces pixels semblerait flotter dans les airs. Le suréchantillonnage au plus proche voisin n’en produit aucun, puisqu’il n’invente jamais de nouvelles valeurs ; toutefois, dans les images réelles, le véritable contour se trouve à l’intérieur d’un pixel grossier. La méthode au plus proche voisin peut donc décaler les contours de deux pixels et transformer les diagonales en escaliers.
Réduire et mesurer le débordement de profondeur#
Le suréchantillonnage tenant compte des contours, une forme de super-résolution guidée de la profondeur, utilise l’image couleur en pleine résolution comme guide. Le suréchantillonnage bilatéral conjoint, présenté par Johannes Kopf et ses collègues en 2007, et le filtre guidé pondèrent chaque voisin selon sa similarité de couleur ; ainsi, la profondeur s’arrête aux contours de l’image. L’échec inverse, la copie des textures, se produit lorsque des contours de couleur sans changement de profondeur, comme une impression sur une boîte, sont inscrits dans la carte de profondeur. Les réseaux réduisent ces débordements grâce à des sorties de plus haute résolution, à des fonctions de perte d’entraînement tenant compte des contours et à un raffinement guidé par la segmentation d’image ; le modèle Depth Pro d’Apple a été conçu et évalué spécifiquement pour obtenir des contours nets. En stéréoscopie, un contrôle de cohérence gauche-droite marque les pixels dont les correspondances divergent entre les deux directions ; quelle que soit la source, les pixels volants peuvent être éliminés en supprimant les points où la profondeur présente une forte discontinuité entre voisins ou où la surface est presque parallèle au rayon de visée.
Les métriques standard mesurent à peine le débordement, car les pixels de contour représentent une faible part de l’image et les erreurs moyennes, comme l’erreur absolue relative, varient peu. Le benchmark iBims-1, publié par Tobias Koch et ses collègues de l’Université technique de Munich en 2018, évalue directement les contours de profondeur au moyen d’erreurs de frontière : la précision mesure la distance entre les contours prédits et les contours annotés manuellement, tandis que l’exhaustivité mesure le nombre de vrais contours manqués par une prédiction.










