Depth Bleeding
깊이 번짐은 객체 경계 너머로 거리가 번져 포인트 클라우드와 AR 장면에 떠다니는 픽셀과 후광이 남는 깊이 맵 아티팩트입니다.
깊이 번짐은 깊이 맵에서 전경 객체와 배경 사이의 경계를 넘어 깊이 값이 퍼지는 현상입니다. 이로 인해 가장자리의 픽셀은 반대쪽 표면의 깊이 또는 두 깊이가 혼합된 값을 갖습니다. 이 현상은 한 표면이 끝나고 훨씬 먼 표면이 시작되는 가림 경계, 즉 깊이가 불연속적으로 바뀌는 지점에서 발생하며, 스테레오 비전, 비행 시간 및 LiDAR 센서, 학습 기반 깊이 추정 등 모든 깊이 정보원에서 나타납니다. 가장자리는 픽셀 수가 시사하는 것보다 훨씬 큰 영향을 미칩니다. 역투영해 3D 포인트 클라우드로 변환하면 번진 픽셀은 비행 픽셀이 되어 객체와 그 뒤의 벽 사이 빈 공간에 점이 떠 있는 것처럼 보입니다. 증강 현실에서는 가상 객체가 실제 경계를 뚫고 나오거나 그 앞에 떠 있는 것처럼 보이게 하고, 새로운 시점 합성에서는 가장자리를 고무 시트처럼 늘리며, 로보틱스와 자율주행차에서는 객체가 실제보다 넓어 보이게 합니다. 이로 인해 로봇의 파지 위치가 어긋나고 3D 객체 디텍션의 박스가 늘어납니다.
깊이 번짐의 원인#
스테레오 매칭에서는 주변 픽셀을 포함한 윈도우를 비교해 각 픽셀의 대응점을 결정하며, 경계 근처에서는 이 윈도우가 두 표면을 모두 포함합니다. 윈도우 안에서 전경 픽셀이 매칭 비용에 큰 영향을 미치면 전경의 깊이가 인접한 배경 픽셀로 퍼집니다. 스테레오 연구에서는 이 현상을 전경 팽창이라고 부릅니다. 한쪽 카메라에만 보이는 픽셀은 정확한 대응점이 없으며 주변 픽셀의 깊이를 갖게 됩니다.
단안 깊이 추정을 위한 신경망은 두 가지 방식으로 번짐을 일으킵니다. 인코더가 이미지를 거친 특징 맵으로 다운샘플링하므로, 많은 디코더는 입력 해상도의 일부에 해당하는 해상도에서 깊이를 예측하고 보간으로 확대합니다. 이 과정에서 모든 경계를 따라 두 표면이 혼합됩니다. 또한 경계 픽셀이 두 표면 중 어느 쪽에도 속할 수 있을 때 제곱 오차 손실 함수는 두 깊이의 평균을 예측할 때 최소화되며, 이 값은 어느 표면에도 속하지 않습니다. Ultralytics YOLO26 깊이 모델은 입력 해상도의 4분의 1에서 로그 깊이를 예측하고, 예측기가 맵을 원본 이미지 크기로 쌍선형 업샘플링하므로 출력에서 두 표면 사이의 깊이 변화가 폭이 몇 픽셀인 경사로 바뀝니다.
센서에서는 물리적인 번짐이 발생합니다. 시야가 경계를 걸치는 비행 시간 픽셀 또는 LiDAR 빔은 두 표면에서 반사된 빛을 모두 받아 그 중간에 해당하는 깊이를 보고합니다. 이는 깊이 카메라의 포인트 클라우드에서 비행 픽셀이 생기는 전형적인 원인입니다. RGB-D 카메라에서는 깊이와 색상을 약간 다른 위치에서 측정하므로 정렬이 어긋나며, 한쪽을 다른 쪽에 재투영할 때 가장자리가 이동합니다.
이 예제는 사람이 1.5m 앞에 있고 벽은 4m 떨어진 상황의 4분의 1 해상도 깊이 맵을 업샘플링합니다. 이는 많은 깊이 네트워크가 전체 해상도를 얻는 방식이며, 두 표면 어느 쪽에도 속하지 않는 픽셀 수를 계산합니다:
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.81m, 2.44m, 3.06m, 3.69m 깊이의 경사로가 만들어집니다. 이 픽셀은 포인트 클라우드에서 공중에 떠 있는 것처럼 보입니다. 최근접 이웃 업샘플링은 새로운 값을 만들지 않으므로 번짐이 발생하지 않습니다. 하지만 실제 이미지에서는 진짜 경계가 거친 픽셀 내부에 위치하므로, 최근접 이웃 출력은 경계를 최대 2픽셀 어긋나게 배치하고 대각선 경계를 계단처럼 만듭니다.
깊이 번짐 감소와 측정#
가이드 깊이 초해상도 기법인 에지 인식 업샘플링은 전체 해상도의 컬러 이미지를 가이드로 사용합니다. 2007년 Johannes Kopf와 동료들이 소개한 공동 양측 업샘플링과 가이드 필터는 색상 유사도에 따라 각 이웃의 가중치를 조정하므로 깊이가 이미지 경계에서 멈춥니다. 반대쪽 문제인 텍스처 복사는 상자의 인쇄처럼 깊이가 바뀌지 않는 색상 경계가 깊이 맵에 새겨질 때 발생합니다. 네트워크는 출력 해상도를 높이고 경계 인식 학습 손실을 사용하며 이미지 분할을 통해 보정함으로써 번짐을 줄입니다. Apple의 Depth Pro는 선명한 경계를 위해 특별히 설계되고 평가되었습니다. 스테레오에서는 좌우 일관성 검사를 통해 양방향에서 대응점이 일치하지 않는 픽셀을 표시합니다. 모든 정보원에서 이웃 간 깊이가 급격히 바뀌거나 표면이 시선과 거의 평행한 지점의 포인트를 제거하면 비행 픽셀을 없앨 수 있습니다.
표준 지표는 가장자리 픽셀이 이미지에서 차지하는 비율이 작고 절대 상대 오차와 같은 평균 오차도 거의 달라지지 않으므로 깊이 번짐을 잘 포착하지 못합니다. 2018년 뮌헨 공과대학교의 Tobias Koch와 동료들이 발표한 iBims-1 벤치마크는 깊이 경계 오차를 사용해 깊이 가장자리를 직접 평가합니다. 정확도는 예측된 경계가 수동 주석 경계에서 얼마나 떨어져 있는지 측정하고, 완전성은 실제 경계 중 예측이 놓친 경계의 비율을 측정합니다.










