Campos de Radiância
Visão geral
Um campo de radiância (radiance field) é uma representação de cena 3D que modela como a luz apareceria de qualquer ponto de vista. Em sua forma mais comum, ele representa uma cena como uma função contínua (continuous function) que mapeia:
- uma posição 3D no espaço, e
- uma direção de visualização (viewing direction) (de onde a câmera está “olhando” a partir daquele ponto)
para:
- a cor emitida (radiância), e
- a densidade volumétrica (volume density) (quanta matéria está presente, isto é, quanto de luz é absorvida/espalhada).
Essa representação permite síntese de novas vistas (novel-view synthesis): dado um conjunto de imagens com poses conhecidas de uma cena, um campo de radiância aprendido pode renderizar imagens realistas a partir de novas posições e orientações de câmera, simulando o transporte de luz ao longo de raios da câmera via renderização volumétrica (volume rendering).
Campos de radiância são um conceito central em Renderização Neural. A implementação mais famosa é a NeRF (Campos de Radiância Neurais, Neural Radiance Fields), que usa uma rede neural para parametrizar o campo de radiância e o treina a partir de imagens multivista.
Campos de radiância se encaixam em uma família mais ampla de Representações Neurais Implícitas: em vez de armazenar geometria explicitamente (por exemplo, triângulos), elas armazenam uma função que você pode consultar em qualquer coordenada.
Ideia central: uma cena como uma função contínua
A função de campo de radiância
Uma formulação comum define uma função:
[ F(\mathbf{x}, \mathbf{d}) \rightarrow (\mathbf{c}, \sigma) ]
Onde:
- (\mathbf{x} \in \mathbb{R}^3): um ponto 3D em coordenadas do mundo
- (\mathbf{d} \in \mathbb{R}^3) (frequentemente de norma unitária): direção de visualização naquele ponto
- (\mathbf{c} \in [0,1]^3): cor RGB (radiância) que sai do ponto (\mathbf{x}) na direção (\mathbf{d})
- (\sigma \ge 0): densidade volumétrica (às vezes chamada de “densidade de opacidade”)
Intuição:
- Se (\sigma(\mathbf{x})) é alta, aquela região contém “coisas” (neblina, matéria tipo superfície etc.).
- Se (\sigma(\mathbf{x})) é próxima de zero, é espaço vazio.
- (\mathbf{c}(\mathbf{x},\mathbf{d})) pode depender da direção, permitindo efeitos dependentes do ponto de vista como reflexos brilhantes (limitados pelo modelo e pelos dados de treino).
Muitas extensões adicionam condicionamento adicional:
- Tempo: (F(\mathbf{x}, \mathbf{d}, t)) para cenas dinâmicas
- Iluminação: (F(\mathbf{x}, \mathbf{d}, \ell)) para relighting
- Códigos de aparência (appearance codes): (F(\mathbf{x}, \mathbf{d}, \mathbf{z})) para diferenças por imagem de exposição/balanço de branco ou estilo
Como as imagens são renderizadas: renderização volumétrica ao longo de raios
Dado um raio da câmera:
[ \mathbf{r}(t) = \mathbf{o} + t \mathbf{v} ]
- (\mathbf{o}): origem da câmera
- (\mathbf{v}): direção do raio através de um pixel
- (t): distância ao longo do raio
Amostramos pontos ao longo do raio, consultamos o campo de radiância e compomos suas contribuições. A equação clássica contínua de renderização volumétrica (na forma emissão-absorção) é:
[ \mathbf{C}(\mathbf{r}) = \int_{t_n}^{t_f} T(t), \sigma(\mathbf{r}(t)), \mathbf{c}(\mathbf{r}(t), \mathbf{v}), dt ]
Onde a transmitância (T(t)) é:
[ T(t) = \exp\left(-\int_{t_n}^{t} \sigma(\mathbf{r}(s)) ds\right) ]
Na prática, métodos no estilo NeRF aproximam essa integral com amostras discretas e composição alfa (alpha compositing):
- Amostre profundidades (t_1, \dots, t_N)
- Seja (\delta_i = t_{i+1}-t_i)
- Converta densidade em alfa: [ \alpha_i = 1 - \exp(-\sigma_i \delta_i) ]
- Calcule pesos: [ w_i = \alpha_i \prod_{j<i}(1-\alpha_j) ]
- Cor do pixel: [ \hat{\mathbf{C}} = \sum_{i=1}^{N} w_i \mathbf{c}_i ] Opcionalmente, adicione um termo de fundo (por exemplo, aprendido ou constante).
Esse processo de renderização é diferenciável, o que torna campos de radiância um encaixe natural para Renderização Diferenciável: você pode fazer retropropagação a partir do erro de imagem até os parâmetros de (F).
Pseudocódigo mínimo de renderização
def render_pixel(ray_origin, ray_dir, t_near, t_far, N, field):
# Sample depths (stratified sampling is common)
ts = linspace(t_near, t_far, N)
rgb = 0.0
T = 1.0 # accumulated transmittance
for i in range(N - 1):
t = ts[i]
delta = ts[i + 1] - ts[i]
x = ray_origin + t * ray_dir
c, sigma = field(x, ray_dir) # query radiance field
alpha = 1.0 - exp(-sigma * delta)
w = T * alpha
rgb += w * c
T *= (1.0 - alpha)
if T < 1e-3: # early termination
break
return rgb
Observações práticas importantes:
- O número de amostras (N) afeta fortemente velocidade/qualidade.
- Muitos sistemas usam amostragem em múltiplos estágios (grosseira + fina) ou ocupação aprendida para concentrar amostras onde (\sigma) é alta.
Relação com NeRF e outras representações implícitas
NeRF como uma parametrização neural de um campo de radiância
A NeRF (2020) popularizou treinar um campo de radiância a partir de imagens com poses conhecidas usando uma MLP (perceptron multicamadas; multilayer perceptron):
- Entradas: (\mathbf{x}) e (\mathbf{d})
- Saídas: (\sigma) e (\mathbf{c})
Dois ingredientes práticos fizeram a NeRF funcionar bem:
Codificação posicional (positional encoding) (características de Fourier (Fourier features))
Coordenadas brutas podem ser difíceis para MLPs ajustarem em alta frequência. A NeRF mapeia as entradas para um espaço periódico de dimensionalidade mais alta: [ \gamma(x) = [\sin(2^0\pi x), \cos(2^0\pi x), \ldots, \sin(2^{L-1}\pi x), \cos(2^{L-1}\pi x)] ] Isso ajuda a representar detalhes finos.Amostragem hierárquica (hierarchical sampling)
Uma rede grosseira propõe onde há densidade; uma rede fina reamostra mais densamente em regiões importantes. Isso melhora a qualidade sem sobreamostragem uniforme em toda parte.
Objetivo de treinamento (simplificado):
- Para cada pixel de treino, renderize (\hat{\mathbf{C}}) e minimize a perda fotométrica: [ \mathcal{L} = |\hat{\mathbf{C}} - \mathbf{C}_{\text{gt}}|_2^2 ] A otimização é tipicamente feita com variantes de Descida do Gradiente (por exemplo, Adam) e Retropropagação através do renderizador.
Campos de radiância vs. SDFs e outras geometrias implícitas
Campos de radiância não são a única representação 3D implícita:
- Funções de Distância Assinada (Signed Distance Functions, SDFs) (Funções de Distância Assinada (SDFs)) representam geometria como uma função cujo conjunto de nível zero é a superfície.
- Ótimas para extrair malhas e impor priors geométricos (suavidade de superfície, restrições de Eikonal).
- Frequentemente combinadas com modelos de aparência separados (cor/BRDF).
- Campos de ocupação (occupancy fields) predizem se um ponto está dentro/fora de um objeto.
Um campo de radiância não é inerentemente uma representação de superfície: é um modelo volumétrico (volumetric). Na prática, modelos do tipo NeRF frequentemente aprendem distribuições de densidade “tipo superfície” (cascas finas) para cenas opacas, mas também podem representar meios translúcidos e fronteiras difusas.
Campos de radiância não neurais
Embora a NeRF use uma MLP, “campo de radiância” é mais amplo do que “campo de radiância neural”. Alguns sistemas armazenam o campo em parametrizações alternativas:
- Grades de voxels (voxel grids) ou grades esparsas armazenando densidade e coeficientes de cor
- Fatoração de tensores (tensor factorization) (por exemplo, decomposições de baixo posto)
- Imagens multi-plano (multi-plane images) / K-planes (planos 2D em 3D usados como características)
- Grades com hashing (hash grids) (grades de características multirresolução consultadas por coordenadas)
Essas abordagens frequentemente trocam parte da flexibilidade por melhorias significativas na velocidade de treinamento e renderização.
Pipeline prático: construir um campo de radiância a partir de imagens
Um pipeline típico “estilo NeRF” se parece com isto:
Capturar imagens/vídeo
- Ande ao redor de um objeto/cena tirando 50–500 fotos
- Prefira iluminação e exposição constantes, se possível
- Garanta paralaxe suficiente (mova a câmera, não apenas gire)
Estimar parâmetros intrínsecos/extrínsecos da câmera (camera intrinsics/extrinsics)
- Use Calibração de Câmera para intrínsecos (ou leia de metadados)
- Use Estrutura a partir do Movimento (Structure-from-Motion) para recuperar poses e pontos esparsos; isso comumente envolve Estimativa de Pose e refinamento com Ajuste de Feixe
Treinar o campo de radiância
- Amostrar pixels aleatórios entre as imagens
- Para cada pixel, lançar um raio usando a pose conhecida da câmera
- Fazer renderização volumétrica através do campo
- Minimizar a perda de reconstrução (+ regularização)
Renderizar novas vistas
- Escolher um novo caminho de câmera
- Renderizar cada quadro por marcha de raios (ray marching) e composição
Um cenário prático de exemplo: visualização de produto
Imagine que você quer um visualizador 360° para um tênis:
- Capture ~150 fotos em uma mesa giratória (ou circule o objeto).
- Execute estimativa de pose para recuperar posições de câmera.
- Treine um campo de radiância por alguns minutos a horas dependendo do método/hardware.
- Renderize giros suaves em qualquer resolução e até gere pequenas variações de ponto de vista que não foram fotografadas.
Isso costuma ser mais fácil do que construir uma malha limpa + textura quando o objeto tem refletância complexa, estruturas finas (cadarços) ou leve translucidez.
Por que campos de radiância funcionam bem (e quando não funcionam)
Pontos fortes
- Síntese de vistas de alta fidelidade: excelente para reproduzir aparência complexa e detalhes finos.
- Representação contínua: em princípio, pode renderizar em resolução e pontos de vista arbitrários.
- Diferenciável: integra-se bem com otimização e aprendizado.
- Lida com alguns efeitos não-superfície: translucidez leve, efeitos volumétricos, fronteiras difusas.
Limitações comuns
- Dependência da vista vs. refletância real: a cor no estilo NeRF depende da direção de visualização, mas sem modelagem explícita de iluminação/materiais ela pode “embutir” a iluminação e ter dificuldade com relighting.
- Requisitos de dados: precisa de cobertura multivista; desempenho fraco com poucas vistas, a menos que se aumente com priors fortes ou modelos pré-treinados.
- Cenas dinâmicas são mais difíceis: movimento quebra a consistência multivista; campos de radiância dinâmicos precisam de condicionamento temporal, modelos de movimento ou campos por quadro.
- Custo de renderização: renderização volumétrica ingênua é cara devido a muitas amostras por raio, embora acelerações modernas ajudem muito.
- Extração/edição de geometria pode ser incômoda: campos de densidade não produzem diretamente superfícies limpas; extrair malhas é possível, mas nem sempre robusto.
Trade-offs vs. representações explícitas (malhas, nuvens de pontos, Gaussianas 3D)
Campos de radiância frequentemente são comparados com formatos 3D explícitos usados em computação gráfica e visão.
Campos de radiância vs. malhas
Malhas (meshes) representam superfícies explicitamente com triângulos e, em geral, texturas/materiais.
Prós de malhas
- Rasterização (rasterization) eficiente em pipelines gráficos padrão (tempo real (real-time)).
- Geometria limpa, fácil de editar, animar e integrar com simulação.
- Interoperáveis com ferramentas existentes (Blender, motores de jogo).
Contras de malhas
- Mais difícil reconstruir fielmente a partir de imagens quando a geometria é complexa, difusa ou inclui estruturas finas.
- Requer parametrização de superfície (UVs) e frequentemente limpeza manual.
- Capturar efeitos dependentes do ponto de vista (especularidades) requer modelos de materiais mais complexos.
Vantagens de campos de radiância
- Frequentemente produz melhor fotorrealismo a partir de imagens “pronto para uso”.
- Evita etapas explícitas de reconstrução de superfície.
Desvantagens de campos de radiância
- Mais difícil fazer operações explícitas de geometria (operações booleanas, rigging).
- A renderização pode ser mais lenta do que a rasterização, a menos que seja convertida/acelerada.
Campos de radiância vs. Splatting Gaussiano 3D
Splatting Gaussiano 3D representa uma cena como muitas Gaussianas 3D explícitas com cor e forma aprendidas, renderizadas por splatting (splatting) rápido (projetando e mesclando Gaussianas).
Por que Gaussianas 3D são populares
- Renderização muito rápida (frequentemente em tempo real) em GPUs.
- O treinamento pode ser relativamente rápido e estável.
- Produz síntese de novas vistas de alta qualidade para muitas cenas.
Onde campos de radiância podem ser mais fortes
- Por ser uma função contínua, campos de radiância podem ser mais compactos em parâmetros para certas cenas (dependendo do método).
- Algumas formulações de campos de radiância podem representar melhor volumétricos contínuos (regiões tipo neblina) e podem generalizar suavemente entre amostras.
Onde Gaussianas 3D podem ser mais fortes
- Velocidade: splatting evita amostragem pesada por raio.
- Praticidade: mais fácil renderizar em aplicações interativas.
Na prática, a melhor representação depende das suas restrições:
- Se você precisa de taxas de quadros interativas e boa qualidade visual: Gaussianas 3D costumam ser um padrão forte.
- Se você precisa de uma função que possa consultar continuamente, potencialmente com condicionamento adicional (tempo/iluminação) e uma interface amigável a deep learning: campos de radiância são muito atraentes.
Principais escolhas de projeto e seu impacto prático
Estratégia de amostragem e aceleração
O custo de renderização é dominado por quantas avaliações do campo acontecem por raio. Ideias comuns de aceleração incluem:
- Pular espaço / grades de ocupação (space skipping / occupancy grids): evitar amostrar em espaço vazio aprendendo/mantendo uma grade de células provavelmente ocupadas.
- Amostragem adaptativa (adaptive sampling): concentrar mais amostras perto de alta densidade.
- Estruturas de dados esparsas (sparse data structures): armazenar características apenas onde necessário.
- Baking (baking): destilar um campo de radiância em uma representação mais rápida para implantação.
Essas ideias frequentemente fazem a diferença entre minutos por quadro e renderização “quase em tempo real”.
Parametrização de coordenadas e priors
Campos de radiância podem sobreajustar (overfit) ou borrar se a representação não consegue expressar altas frequências. Ferramentas para lidar com isso incluem:
- Codificações posicionais / características de Fourier
- Grades de características multirresolução
- Vieses arquiteturais (por exemplo, cabeças separadas de densidade e cor)
- Regularizadores (regularizers) que incentivam suavidade ou esparsidade na densidade
Desentrelaçamento de geometria vs. aparência
Muitos pipelines querem:
- geometria (uma superfície utilizável)
- aparência (sombreamento dependente do ponto de vista)
Campos de radiância puros podem entrelaçar essas coisas. Abordagens híbridas combinam:
- uma SDF ou modelo de superfície explícito para geometria, mais
- um modelo de radiância para aparência.
Isso torna a extração e edição de malhas mais confiável, ao custo de complexidade adicional.
Aplicações
Campos de radiância são usados em pesquisa e indústria:
- Síntese de novas vistas para fotografia e VR (vídeo com ponto de vista livre, flythroughs de cena)
- Reconstrução 3D em cenários difíceis (estruturas finas, texturas complexas)
- Criação de conteúdo AR/VR (capturar espaços reais como ativos navegáveis)
- Robótica e IA incorporada (embodied AI) (entendimento de cena com síntese de vistas como sinal de supervisão)
- Efeitos visuais (captura rápida de ambientes, mudanças de caminho de câmera em pós-produção)
- Imagem médica e científica (onde representações volumétricas se alinham naturalmente ao domínio, com cuidado para correção física)
Um modelo mental útil: campos de radiância são “funções de cena aprendidas” que podem atuar tanto como um renderizador quanto como uma memória compacta da cena.
Avaliação e métricas comuns
Artigos de campos de radiância frequentemente reportam métricas de similaridade de imagem para vistas reservadas (held-out):
- PSNR (peak signal-to-noise ratio)
- SSIM (structural similarity)
- LPIPS (learned perceptual similarity)
Elas são informativas, mas imperfeitas:
- PSNR alto não garante estabilidade temporal para trajetórias de vídeo.
- Realismo perceptual pode divergir das pontuações das métricas.
- Se as poses de câmera são imprecisas, as métricas podem refletir erro de pose em vez da qualidade da representação.
Dicas práticas e modos de falha
Dicas que frequentemente importam em capturas reais
- Garanta boa estimativa de pose; erros de pose podem causar borrão/ghosting. Usar SfM robusto + Ajuste de Feixe é crítico.
- Evite cintilação de autoexposição entre imagens; se for inevitável, use embeddings de aparência ou correção de cor por imagem.
- Tenha cobertura: campos de radiância não conseguem alucinar regiões não vistas de forma confiável, a menos que usem priors pré-treinados.
- Fique atento a objetos em movimento (pessoas, folhas) nas fotos de treino; eles podem virar artefatos “embutidos”.
Artefatos típicos
- “Floaters” (bolhas espúrias de densidade)
- Texturas suavizadas demais ou falta de detalhes finos (capacidade insuficiente de frequência ou vistas insuficientes)
- “Sparkle” dependente da vista (modelo explicando inconsistências via cor dependente da direção)
- Extrapolação ruim fora do fecho convexo das câmeras de treinamento
Como campos de radiância se encaixam no ecossistema de visão 3D
Campos de radiância conectam múltiplas áreas centrais:
- Reconstrução 3D e geometria de câmera via recuperação de pose (Estimativa de Pose, Calibração de Câmera)
- Aprendizado de representações implícitas (Representações Neurais Implícitas)
- Pipelines de renderização neural (Renderização Neural)
- Formação de imagem diferenciável (Renderização Diferenciável)
- Renderizadores explícitos alternativos e rápidos como Splatting Gaussiano 3D
À medida que o campo evolui, muitos sistemas de “campo de radiância” têm menos a ver com uma rede específica e mais com o princípio mais amplo: representar uma cena como uma função diferenciável que pode ser integrada ao longo de raios para sintetizar imagens.
Resumo
- Um campo de radiância modela uma cena 3D como uma função contínua que mapeia ((\mathbf{x}, \mathbf{d})) (e às vezes tempo/iluminação) para cor e densidade volumétrica.
- Novas vistas são renderizadas por renderização volumétrica: integrar a cor emitida ao longo de raios da câmera ponderada por transmitância e densidade.
- NeRF é o campo de radiância neural canônico, mas muitos campos de radiância modernos usam parametrizações não-MLP mais rápidas (grades, características com hashing, tensores fatorados).
- Comparados a malhas, campos de radiância frequentemente entregam síntese fotorrealista de vistas superior com menos trabalho manual de geometria, mas são mais difíceis de editar e podem ser mais lentos para renderizar.
- Comparados a Gaussianas 3D, campos de radiância fornecem uma função contínua flexível, mas frequentemente perdem em velocidade de renderização em cenários interativos, a menos que sejam fortemente acelerados.
Se você está decidindo o que usar na prática: escolha campos de radiância quando quiser uma função de cena aprendível, diferenciável e de alta fidelidade; escolha formatos explícitos (malhas ou Gaussianas) quando precisar de renderização rápida, interoperabilidade ou editabilidade direta.