Depth Bleeding
Tiefenunschärfe ist ein Artefakt in Tiefenkarten, bei dem Entfernungen über Objektgrenzen hinweg verschwimmen. Dadurch entstehen fliegende Pixel und Halos in Punktwolken und AR-Szenen.
Tiefenüberlaufen ist ein Artefakt in Tiefenkarten, bei dem Tiefenwerte über die Grenze zwischen einem Objekt im Vordergrund und seinem Hintergrund hinausreichen. Dadurch erhalten Pixel am Rand die Tiefe der jeweils anderen Oberfläche oder einen Mischwert. Das Artefakt tritt an Tiefensprüngen auf, also an Verdeckungsgrenzen, an denen eine Oberfläche endet und eine deutlich weiter entfernte beginnt. Es betrifft alle Quellen von Tiefeninformationen: stereoskopisches Sehen, Laufzeitmessungs- und LiDAR-Sensoren sowie lernbasierte Tiefenschätzung. Die Bedeutung der Kanten lässt sich nicht an ihrem Anteil an der Pixelzahl ablesen. Werden die betroffenen Pixel per Rückprojektion in eine 3D-Punktwolke überführt, entstehen fliegende Pixel: Punkte, die frei im Raum zwischen einem Objekt und der Wand dahinter schweben. In der erweiterten Realität scheinen virtuelle Objekte dadurch durch echte Kanten zu stoßen oder davor zu schweben. Bei der Synthese neuartiger Ansichten werden Kanten wie Gummiflächen verzogen. In der Robotik und bei autonomen Fahrzeugen wirken Objekte breiter als sie sind. Dadurch greift ein Roboter daneben, und die Rahmen der 3D-Objekterkennung werden verzerrt.
Ursachen des Tiefenüberlaufens#
Beim Stereomatching wird die Zuordnung jedes Pixels durch den Vergleich eines Nachbarschaftsfensters bestimmt. In der Nähe einer Kante erfasst dieses Fenster beide Oberflächen. Vordergrundpixel im Fenster können die Zuordnungskosten dominieren, sodass sich die Tiefe des Vordergrunds auf benachbarte Hintergrundpixel ausdehnt. In der Fachliteratur zum Stereosehen wird dieser Effekt als Verbreiterung des Vordergrunds bezeichnet. Pixel, die nur in einer der beiden Kameras sichtbar sind, haben überhaupt keine korrekte Zuordnung und übernehmen die Tiefe eines Nachbarpixels.
Neuronale Netze zur monokularen Tiefenschätzung verursachen auf zwei Arten ein Ausbluten von Tiefenwerten. Ihre Encoder verkleinern das Bild zu groben Merkmalskarten, sodass viele Decoder die Tiefe nur mit einem Bruchteil der Eingabeauflösung vorhersagen und sie durch Interpolation hochskalieren, wodurch die beiden Oberflächen an jeder Kante ineinander übergehen. Und dort, wo ein Pixel an der Grenze zu einer der beiden Oberflächen gehören könnte, wird eine Verlustfunktion mit quadratischem Fehler dadurch minimiert, dass die durchschnittliche Tiefe beider Oberflächen vorhergesagt wird – ein Wert, der keiner der beiden Oberflächen entspricht. Die Tiefenmodelle von Ultralytics YOLO26 sagen logarithmierte Tiefenwerte mit einem Viertel der Eingabeauflösung voraus, und der Prädiktor skaliert die Karte bilinear auf die ursprüngliche Bildgröße hoch, sodass ein Sprung zwischen zwei Oberflächen in der Ausgabe zu einem wenige Pixel breiten Übergang wird.
Bei Sensoren entsteht der Überlauf physikalisch. Ein Laufzeitmessungspixel oder ein LiDAR-Strahl, dessen Erfassungsbereich eine Kante überlappt, empfängt Licht von beiden Oberflächen und meldet eine dazwischenliegende Tiefe. Das ist die klassische Ursache für fliegende Pixel in Punktwolken von Tiefenkameras. Bei RGB-D-Kameras kommt eine Fehlanpassung hinzu, da die Tiefe von einer leicht versetzten Position aus gemessen wird. Wenn eine Ansicht auf die andere projiziert wird, verschieben sich dadurch die Kanten.
Dieses Beispiel vergrößert eine Tiefenkarte mit einem Viertel der Auflösung. Sie zeigt eine Person 1,5 m vor einer 4 m entfernten Wand, wie bei vielen Tiefennetzen zur Erzeugung einer Ausgabe in voller Auflösung. Anschließend zählt das Beispiel die Pixel, deren Tiefe zu keiner der beiden Oberflächen gehört:
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()}")Durch bilineare Vergrößerung entstehen 3.518 Pixel mit Tiefenüberlauf. An jeder Silhouettenkante wird ein Übergang mit den Tiefenwerten 1,81, 2,44, 3,06 und 3,69 m erzeugt. Jedes dieser Pixel würde in einer Punktwolke frei in der Luft schweben. Bei der Vergrößerung mit dem nächsten Nachbarn entstehen keine solchen Pixel, da keine neuen Werte erzeugt werden. In echten Bildern liegt die tatsächliche Kante jedoch innerhalb eines groben Pixels. Die Ausgabe mit dem nächsten Nachbarn platziert Kanten daher bis zu zwei Pixel daneben und lässt diagonale Kanten stufig erscheinen.
Tiefenüberläufe reduzieren und messen#
Kantenbewusste Vergrößerung, eine Form der geführten Tiefen-Superauflösung, nutzt das Farbbild in voller Auflösung als Orientierung. Bei der gemeinsamen bilateralen Vergrößerung, die Johannes Kopf und Kollegen 2007 vorstellten, und beim geführten Filter wird jeder Nachbar anhand seiner Farbähnlichkeit gewichtet. So endet die Tiefe an den Bildkanten. Der gegenteilige Fehler, das Übertragen von Texturen, entsteht, wenn Farbänderungen ohne Tiefenänderung – etwa ein Aufdruck auf einem Karton – in die Tiefenkarte übernommen werden. Netze verringern Tiefenüberläufe durch Ausgaben mit höherer Auflösung, kantenbewusste Trainingsverluste und eine Verfeinerung anhand der Bildsegmentierung. Apples Depth Pro wurde speziell für scharfe Kanten entwickelt und ausgewertet. Beim Stereosehen kennzeichnet eine Links-rechts-Konsistenzprüfung Pixel, deren Zuordnungen in beiden Richtungen voneinander abweichen. Bei allen Quellen lassen sich fliegende Pixel entfernen, indem Punkte verworfen werden, deren Tiefe zwischen Nachbarn stark springt oder deren Oberfläche nahezu parallel zum Blickstrahl verläuft.
Gängige Metriken erfassen Tiefenüberläufe kaum, da Randpixel nur einen kleinen Teil eines Bildes ausmachen und sich mittlere Fehler wie der absolute relative Fehler kaum verändern. Der 2018 von Tobias Koch und Kollegen an der Technischen Universität München veröffentlichte iBims-1-Benchmark bewertet Tiefenkanten direkt anhand von Tiefengrenzfehlern: Die Genauigkeit misst den Abstand vorhergesagter Kanten zu manuell annotierten Kanten, die Vollständigkeit die Anzahl der echten Kanten, die eine Vorhersage verfehlt.










