Novel View Synthesis (NVS)
새로운 시점 합성은 깊이 워핑, NeRF, 가우시안 스플랫, 디퓨전을 사용해 촬영된 적 없는 카메라 위치에서 장면 이미지를 렌더링합니다.
신규 시점 합성(NVS)은 하나 이상의 입력 이미지가 주어졌을 때 촬영된 적 없는 카메라 위치에서 본 장면의 이미지를 생성하는 작업입니다. 모델은 표면의 위치와 새로운 각도에서 보이는 표면의 모습, 그리고 모든 입력 카메라에서 보이지 않았던 영역을 채울 내용을 추론해야 합니다. NVS는 자유 시점 비디오, 가상 투어, 3D 화상 통화, 새로운 경로를 따라 기록된 주행을 재생하는 시뮬레이터에 활용됩니다. 장면 표현이 새로운 각도에서도 유지되는지 홀드아웃 사진으로 직접 확인할 수 있으므로 3D 컴퓨터 비전 모델의 표준 테스트이기도 합니다.
신규 시점 합성의 작동 방식#
가장 간단한 방법은 픽셀을 재투영하는 것입니다. 모든 픽셀의 깊이 값이 있으면 각 점을 새 카메라가 볼 위치로 이동할 수 있으며, 이를 깊이 이미지 기반 렌더링이라고 합니다. 카메라에 가까운 점은 멀리 있는 점보다 더 크게 이동합니다. 입력 이미지에서는 가려졌지만 새 위치에서는 보이는 표면에는 디오클루전이라고 하는 구멍이 생기며, 이를 채워야 합니다. 이 예제는 왼쪽 이미지와 역깊이의 한 형태인 시차를 사용해 Middlebury 스테레오 쌍의 오른쪽 시점을 합성한 다음, 워핑에 사용되지 않은 실제 오른쪽 사진과 결과를 비교합니다:
import numpy as np
from skimage import data
from skimage.metrics import peak_signal_noise_ratio as psnr
# Left view, the real right view (held out), and per-pixel disparity (inverse depth) for the left view
left, right, disp = data.stereo_motorcycle()
ys, xs = np.nonzero(np.isfinite(disp))
xt = np.round(xs - disp[ys, xs]).astype(int) # column where the right camera, 0.19 m away, sees each pixel
# Paint far to near so the nearest surface wins where several pixels land on one spot
order = np.argsort(disp[ys, xs])
ys, xs, xt = ys[order], xs[order], xt[order]
keep = xt >= 0 # drop pixels that leave the frame
novel = np.zeros_like(left)
novel[ys[keep], xt[keep]] = left[ys[keep], xs[keep]]
# Holes are spots no left pixel reached, such as surfaces the left camera never saw
filled = novel.any(axis=2)
print(f"Holes: {1 - filled.mean():.1%} of the novel view")
print(f"PSNR, synthesized view: {psnr(right[filled], novel[filled]):.1f} dB")
print(f"PSNR, left view copied: {psnr(right[filled], left[filled]):.1f} dB")합성 시점은 실제 사진을 기준으로 측정했을 때 26.9 dB의 최대 신호 대 잡음비를 기록했습니다. 왼쪽 이미지를 그대로 재사용한 결과는 12.9 dB였으며 새 시점의 17.0%는 구멍으로 남았습니다. 단일 사진에서는 단안 깊이 추정으로 시차를 구할 수 있습니다. Ultralytics YOLO26 깊이 모델은 각 픽셀의 깊이를 미터 단위로 예측하며, 이 값을 사용하면 원하는 카메라 이동에 대한 시차를 계산할 수 있습니다. CVPR 2020에서 Meng-Li Shih와 동료들이 제안한 3D 사진 방법은 이 방식을 따르고 학습된 이미지 인페인팅으로 구멍을 채웁니다.
촘촘하게 촬영한 데이터는 장면별 최적화를 지원합니다. 일반적으로 Structure from Motion으로 얻은 카메라 포즈와 수십~수백 장의 사진을 사용하면, Ben Mildenhall과 동료들이 2020년에 소개한 신경 방사장은 모든 3D 지점의 색상과 밀도를 반환하는 네트워크를 학습하고 각 카메라 광선을 따라 볼륨 렌더링해 새로운 시점을 렌더링합니다. Bernhard Kerbl과 동료들이 2023년에 소개한 가우시안 스플래팅은 네트워크를 수백만 개의 3D 가우시안으로 대체해 실시간으로 래스터화하며, 1080p에서 초당 30프레임 이상을 처리합니다. 두 방법 모두 렌더링 결과와 입력 사진을 비교하는 미분 가능 렌더링으로 학습합니다.
입력이 하나 또는 소수인 경우 생성 모델이 카메라에 포착되지 않은 내용을 생성합니다. 2023년 Columbia University가 제안한 Zero-1-to-3과 같은 입력 이미지 및 상대 카메라 포즈 조건의 확산 모델은 객체의 반대쪽에서 본 그럴듯한 시점을 생성합니다. 다중 시점 확산 방법은 서로 일관된 여러 시점을 생성한 뒤 이들에 맞춰 3D 표현을 학습합니다.
품질은 NeRF 논문의 합성 Blender 장면과 Mip-NeRF 360의 경계가 제한되지 않은 실제 장면 같은 벤치마크에서 홀드아웃 사진에 대해 PSNR, 구조적 유사도 지수(SSIM), 학습된 지각 거리인 LPIPS로 측정합니다.
관련 개념#
신경 렌더링은 신경망을 기반으로 하는 광범위한 그래픽 기법군으로, NVS와 함께 조명 변경, 아바타, 이미지 편집을 포함합니다. 3D 재구성은 메시와 같이 측정 가능한 기하 구조를 목표로 하지만 NVS는 렌더링 이미지로만 평가되므로 방사장은 기하 구조가 흐릿해도 그럴듯하게 렌더링할 수 있습니다. 스테레오 비전은 반대 방향으로 워핑을 수행해 두 실제 시점의 시차를 측정합니다. 프레임 보간은 고정된 시점에서 시간상 새로운 순간을 생성하고, 카메라 제어 비디오 생성은 두 방식을 결합해 생성된 장면 안에서 가상 카메라를 이동합니다. 4D 가우시안 스플래팅과 같은 방법은 동적 장면에서 NVS를 시간 축으로 확장합니다.
실제 적용 사례#
- 3D 화상 통화: Google Beam(이전 명칭 Project Starline)은 여러 카메라로 참가자를 촬영하고 라이트 필드 디스플레이에서 시청자의 시점으로 렌더링합니다.
- 가상 현실 및 혼합 현실: 촬영한 방, 제품, 랜드마크를 탐색 가능한 장면으로 만들고 헤드셋이 머리 위치에 따라 다시 렌더링합니다.
- 주행 시뮬레이션: 기록된 주행의 신경망 재구성은 차량이 실제로 주행하지 않은 경로의 카메라 시점을 렌더링해 인식 테스트용 합성 센서 데이터를 생성합니다. Waymo와 Google 연구진은 280만 개 이미지로 Block-NeRF를 구축해 샌프란시스코의 한 지역 전체를 렌더링했습니다.










