Depth Bleeding
O borramento de profundidade é um artefato de mapa de profundidade em que as distâncias se espalham pelas bordas dos objetos, deixando pixels flutuantes e halos em nuvens de pontos e cenas de RA.
O sangramento de profundidade é um artefato em mapas de profundidade no qual os valores de profundidade ultrapassam o limite entre um objeto em primeiro plano e o fundo, fazendo com que os pixels junto à borda recebam a profundidade da outra superfície ou uma mistura das duas. Ele aparece em descontinuidades de profundidade, os limites de oclusão onde uma superfície termina e outra muito mais distante começa, e afeta todas as fontes de profundidade: visão estéreo, sensores de tempo de voo e LiDAR e estimativa de profundidade aprendida. As bordas são muito mais importantes do que sua proporção de pixels sugere. Projetados de volta em uma nuvem de pontos 3D, os pixels afetados se tornam pixels flutuantes, pontos suspensos no espaço vazio entre um objeto e a parede atrás dele. Na realidade aumentada, fazem objetos virtuais atravessarem ou flutuarem diante de bordas reais; na síntese de novas vistas, esticam as bordas como folhas de borracha; e, na robótica e nos veículos autônomos, fazem os objetos parecerem mais largos do que são, deslocando o agarre do robô e alargando as caixas da detecção de objetos 3D.
De onde vem o sangramento de profundidade#
Na correspondência estéreo, a correspondência de cada pixel é determinada pela comparação de uma janela de pixels vizinhos; perto de uma borda, essa janela cobre as duas superfícies. Os pixels do primeiro plano na janela podem dominar o custo de correspondência, fazendo a profundidade do primeiro plano se espalhar para os pixels próximos do fundo, um efeito chamado de alargamento do primeiro plano na literatura sobre estéreo. Os pixels visíveis para apenas uma câmera não têm uma correspondência correta e acabam recebendo a profundidade de um vizinho.
As redes neurais para estimativa monocular de profundidade causam sangramento de duas maneiras. Seus codificadores reduzem a resolução da imagem em mapas de características grosseiros, então muitos decodificadores preveem a profundidade com uma fração da resolução de entrada e interpolam para ampliá-la, misturando as duas superfícies em todas as bordas. Além disso, quando um pixel de borda pode pertencer a qualquer uma das superfícies, uma função de perda de erro quadrático é minimizada pela previsão da média das duas profundidades, um valor que não pertence a nenhuma das superfícies. Os modelos de profundidade Ultralytics YOLO26 preveem a profundidade logarítmica com um quarto da resolução de entrada, e o preditor amplia o mapa bilinearmente até o tamanho original da imagem, transformando no resultado um salto entre duas superfícies em uma rampa de alguns pixels.
Os sensores apresentam sangramento físico. Um pixel de tempo de voo ou feixe LiDAR cuja área de cobertura atravessa uma borda recebe luz das duas superfícies e informa uma profundidade intermediária, uma fonte clássica de pixels flutuantes nas nuvens de pontos de câmeras de profundidade. As câmeras RGB-D também apresentam desalinhamento, pois a profundidade é medida de uma posição ligeiramente diferente da posição da cor, e as bordas se deslocam quando uma é reprojetada sobre a outra.
Este exemplo amplia um mapa de profundidade com um quarto da resolução de uma pessoa em pé a 1,5 m diante de uma parede a 4 m, como fazem muitas redes de profundidade para chegar à resolução total, e conta os pixels cuja profundidade não corresponde a nenhuma das superfícies:
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()}")A ampliação bilinear cria 3.518 pixels com sangramento: uma rampa de 1,81, 2,44, 3,06 e 3,69 m ao longo de cada borda da silhueta, e cada um deles ficaria suspenso no ar em uma nuvem de pontos. A ampliação pelo vizinho mais próximo não cria nenhum, pois nunca inventa valores novos; porém, em imagens reais, a borda verdadeira fica dentro de um pixel grosseiro, então a saída pelo vizinho mais próximo desloca as bordas em até dois pixels e transforma as bordas diagonais em degraus.
Como reduzir e medir o sangramento de profundidade#
A ampliação sensível às bordas, uma forma de super-resolução guiada de profundidade, usa a imagem colorida em resolução total como guia. A ampliação bilateral conjunta, introduzida por Johannes Kopf e colegas em 2007, e o filtro guiado ponderam cada vizinho de acordo com a semelhança de cor, de modo que a profundidade pare nas bordas da imagem. A falha oposta, a cópia de textura, ocorre quando bordas de cor sem mudanças de profundidade, como as de uma estampa numa caixa, são gravadas no mapa de profundidade. As redes reduzem o vazamento com saídas de maior resolução, funções de perda de treinamento que levam as bordas em conta e refinamento guiado por segmentação de imagens, e o Depth Pro da Apple foi projetado e avaliado especificamente para produzir bordas nítidas. Na visão estéreo, uma verificação de consistência esquerda-direita marca os pixels cujas correspondências não coincidem nas duas direções e, seja qual for a fonte, os pixels voadores podem ser removidos descartando os pontos em que a profundidade varia bruscamente entre vizinhos ou em que a superfície está quase paralela ao raio de visão.
As métricas padrão mal detectam o sangramento, pois os pixels das bordas representam uma pequena parte da imagem e os erros médios, como o erro relativo absoluto, quase não mudam. O benchmark iBims-1, lançado por Tobias Koch e seus colegas da Universidade Técnica de Munique em 2018, avalia diretamente as bordas de profundidade por meio de erros de limite de profundidade: a precisão mede a distância entre as bordas previstas e as anotadas manualmente, e a completude mede quantas bordas reais a previsão não detecta.










