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:

  1. 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.

  2. 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:

  1. 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)
  2. Estimar parâmetros intrínsecos/extrínsecos da câmera (camera intrinsics/extrinsics)

  3. 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)
  4. 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:

À 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.