Novel View Synthesis (NVS)
A síntese de novas vistas renderiza imagens de uma cena a partir de posições de câmera nunca fotografadas, usando deformação por profundidade, NeRFs, splats gaussianos ou difusão.
A síntese de novas vistas (NVS) é a tarefa de gerar uma imagem de uma cena a partir de uma posição de câmera que nunca foi fotografada, usando uma ou mais imagens de entrada. Um modelo precisa inferir onde estão as superfícies, como elas aparecem do novo ângulo e o que preenche as regiões que nenhuma câmera de entrada capturou. A NVS viabiliza vídeos com ponto de vista livre, tours virtuais, videochamadas 3D e simuladores que reproduzem trajetos gravados a partir de novas rotas, e é um teste padrão para modelos de visão computacional 3D, pois fotos reservadas para teste mostram diretamente se uma representação de cena se mantém válida de novos ângulos.
Como funciona a síntese de novas vistas#
A abordagem mais simples reprojeta os pixels. Com um valor de profundidade para cada pixel, cada ponto pode ser deslocado para onde uma nova câmera o veria; essa técnica é chamada de renderização baseada em imagem de profundidade. Os pontos mais próximos da câmera se deslocam mais do que os distantes, e as superfícies ocultas na entrada, mas visíveis da nova posição, deixam buracos chamados desoclusões, que precisam ser preenchidos. Este exemplo sintetiza a vista direita de um par estéreo da Middlebury a partir da imagem esquerda e sua disparidade, uma forma de profundidade inversa, e depois compara o resultado com a foto direita real, que não foi usada na transformação:
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")A vista sintetizada alcança uma relação sinal-ruído de pico de 26.9 dB medida na foto real, em comparação com 12.9 dB ao simplesmente reutilizar a imagem esquerda, enquanto 17.0% da nova vista fica com buracos. Em uma única foto, a disparidade pode vir da estimativa monocular de profundidade: os modelos de profundidade do Ultralytics YOLO26 preveem a profundidade de cada pixel em metros, que pode ser convertida em disparidade para qualquer deslocamento escolhido da câmera. O método de foto 3D de Meng-Li Shih e colegas, apresentado na CVPR 2020, segue essa abordagem e preenche os buracos com preenchimento de imagens aprendido.
Capturas densas permitem a otimização por cena. Com dezenas a centenas de fotos e poses de câmera, geralmente obtidas por estrutura a partir do movimento, os campos de radiância neural, apresentados por Ben Mildenhall e colegas em 2020, ajustam uma rede que retorna cor e densidade em qualquer ponto 3D e renderiza novas vistas por renderização volumétrica ao longo de cada raio da câmera. O Gaussian splatting, apresentado por Bernhard Kerbl e colegas em 2023, substitui a rede por milhões de gaussianas 3D que são rasterizadas em tempo real, a 30 quadros por segundo ou mais em 1080p. Ambos são treinados com renderização diferenciável, comparando as renderizações com as fotos de entrada.
Com uma ou poucas entradas, modelos generativos fornecem o que as câmeras não capturaram. Modelos de difusão condicionados por uma imagem de entrada e uma pose relativa da câmera, como o Zero-1-to-3 da Universidade Columbia, de 2023, geram vistas plausíveis do lado oposto de um objeto; métodos de difusão multivista geram várias vistas consistentes e depois ajustam uma representação 3D a elas.
A qualidade é medida em fotos reservadas para teste com PSNR, o índice de similaridade estrutural (SSIM) e LPIPS, uma distância perceptual aprendida, usando benchmarks como as cenas sintéticas do Blender do artigo sobre NeRF e as cenas reais sem limites do Mip-NeRF 360.
Conceitos relacionados#
A renderização neural é uma família mais ampla de técnicas gráficas baseadas em redes neurais, que inclui NVS, além de rel iluminação, avatares e edição de imagens. A reconstrução 3D busca geometria mensurável, como malhas, enquanto a NVS é avaliada apenas pelas imagens renderizadas; por isso, um campo de radiância pode renderizar imagens convincentes mesmo com uma geometria imprecisa. A visão estéreo executa a transformação na direção oposta, medindo a disparidade entre duas vistas reais. A interpolação de quadros cria novos instantes a partir de um ponto de vista fixo, enquanto a geração de vídeo controlada pela câmera combina as duas coisas, movendo uma câmera virtual por uma cena gerada. Cenas dinâmicas estendem a NVS ao tempo com métodos como o Gaussian splatting 4D.
Aplicações no mundo real#
- Videochamadas 3D: O Google Beam, anteriormente Project Starline, captura cada participante com várias câmeras e os renderiza a partir da posição dos olhos do espectador em uma tela de campo de luz.
- Realidade virtual e realidade mista: Cômodos, produtos e pontos de referência capturados tornam-se cenas exploráveis que um headset renderiza novamente para cada posição da cabeça.
- Simulação de direção: Reconstruções neurais de trajetos gravados renderizam vistas da câmera a partir de rotas que o carro nunca percorreu, produzindo dados sintéticos de sensores para testar a percepção. Pesquisadores da Waymo e do Google construíram o Block-NeRF com 2.8 milhões de imagens para renderizar um bairro inteiro de São Francisco.










