Depth Bleeding
Растекание глубины — это артефакт карты глубины, при котором расстояния размываются за границами объектов, образуя парящие пиксели и ореолы в облаках точек и сценах дополненной реальности.
Растекание глубины — это артефакт карт глубины, при котором значения глубины выходят за границу переднего плана и фона: пиксели вдоль края получают глубину другой поверхности или смесь значений обеих поверхностей. Артефакт возникает на разрывах глубины — границах перекрытия, где одна поверхность заканчивается и начинается гораздо более удалённая, — и затрагивает все источники данных о глубине: стереозрение, датчики времени пролёта и LiDAR, а также алгоритмы машинной оценки глубины. Важность таких границ гораздо выше, чем можно предположить по числу пикселей. При обратной проекции в трёхмерное облако точек пиксели с растеканием превращаются в летучие пиксели — точки, висящие в пустоте между объектом и стеной позади него. В дополненной реальности из-за них виртуальные объекты проходят сквозь реальные края или парят перед ними; при синтезе новых ракурсов края растягиваются, словно резина; для робототехники и автономных транспортных средств объекты выглядят шире, чем на самом деле, из-за чего робот неверно захватывает объект, а рамки трёхмерного обнаружения объектов растягиваются.
Откуда берётся растекание глубины#
При стереосопоставлении соответствие для каждого пикселя определяют сравнением окна соседних пикселей, а у края такое окно охватывает обе поверхности. Пиксели переднего плана в окне могут преобладать в стоимости сопоставления, поэтому глубина переднего плана распространяется на соседние пиксели фона. В литературе по стереозрению этот эффект называют утолщением переднего плана. Пиксели, видимые только одной камерой, вообще не имеют правильного соответствия и получают глубину соседних пикселей.
Нейронные сети для монокулярного определения глубины создают размытие границ двумя способами. Их кодировщики уменьшают изображение до грубых карт признаков, поэтому многие декодировщики предсказывают глубину с разрешением ниже исходного и увеличивают его интерполяцией, смешивая поверхности по обе стороны каждой границы. Кроме того, если пиксель на границе может принадлежать любой из двух поверхностей, минимизация квадратичной функции потерь приводит к предсказанию среднего значения глубины — значения, которое не соответствует ни одной из поверхностей. Модели глубины Ultralytics YOLO26 предсказывают логарифм глубины с разрешением вчетверо меньше исходного, а предиктор увеличивает карту билинейной интерполяцией до исходного размера изображения. Поэтому скачок между двумя поверхностями в выходном изображении превращается в переход шириной в несколько пикселей.
В датчиках растекание происходит физически. Пиксель датчика времени пролёта или луч LiDAR, пятно которого пересекает край, получает свет от обеих поверхностей и сообщает промежуточную глубину — это классическая причина появления летучих пикселей в облаках точек глубинных камер. В камерах RGB-D добавляется смещение: глубина измеряется из точки, немного отличающейся от точки съёмки цвета, поэтому при перепроецировании одного изображения на другое края смещаются.
В этом примере карта глубины с разрешением в четверть от исходного увеличивается для изображения человека, стоящего в 1,5 м перед стеной в 4 м от камеры, как это делают многие нейросетевые модели глубины при получении изображения полного разрешения. Затем подсчитываются пиксели, глубина которых не соответствует ни одной из поверхностей:
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()}")Билинейное увеличение создаёт 3 518 пикселей с растеканием глубины: вдоль каждого края силуэта образуется переход со значениями 1,81, 2,44, 3,06 и 3,69 м; в облаке точек каждый такой пиксель будет парить в воздухе. Увеличение методом ближайшего соседа не создаёт таких пикселей, поскольку не добавляет новых значений. Однако в реальных изображениях истинный край проходит внутри грубого пикселя, поэтому результат этого метода может смещать края на два пикселя и превращать диагонали в ступеньки.
Снижение и измерение растекания глубины#
Увеличение разрешения с учётом краёв — разновидность управляемого сверхразрешения карты глубины, использующая полноразмерное цветное изображение в качестве ориентира. Совместное билинейное увеличение, представленное Йоханнесом Копфом и его коллегами в 2007 году, и управляемый фильтр взвешивают соседние пиксели по сходству цвета, чтобы глубина останавливалась на границах изображения. Противоположный эффект — копирование текстуры — возникает, когда в карту глубины попадают цветовые границы без изменения глубины, например напечатанный текст на коробке. Сети уменьшают растекание с помощью выходных данных более высокого разрешения, функций потерь с учётом границ и уточнения на основе сегментации изображения; модель Depth Pro от Apple специально разработана и оценена для получения чётких границ. В стереозрении проверка согласованности слева направо отмечает пиксели, сопоставления которых не совпадают в двух направлениях. Для любого источника данных летучие пиксели можно удалить, отбрасывая точки с резкими скачками глубины между соседями или с поверхностей, почти параллельных лучу зрения.
Стандартные метрики почти не замечают растекание: краевые пиксели занимают небольшую долю изображения, а средние ошибки, например абсолютная относительная ошибка, меняются незначительно. В наборе iBims-1, опубликованном Тобиасом Кохом и его коллегами из Мюнхенского технического университета в 2018 году, края глубины оцениваются напрямую с помощью метрик ошибок на границах глубины: точность показывает, насколько далеко предсказанные края находятся от размеченных вручную, а полнота — сколько настоящих краёв модель пропустила.










