Renderização interativa baseada em imagens para síntese de vistas virtuais a partir de mapas de cor e profundidade
César Palomo [email protected]
Dissertação de Mestrado Julho/2009
?
Motivação
Como interpolar amostras visuais de uma cena para gerar vistas virtuais?
Câmera virtualCâmera real Câmera real
Motivação
Como interpolar amostras visuais de uma cena para gerar vistas virtuais?
Câmera virtualCâmera real Câmera real
Efeitos especiais: freeze-frame/bullet-time effect
Passeios virtuais
FTV: telespectador seleciona ponto de vista
Games, entretenimento
Aplicações
Google Maps®
Image-based rendering (IBR)
Utiliza primariamente imagens ao invés de geometria para gerar novas vistas
Técnicas existentes diferem-se principalmente nos seguintes aspectos: Número de imagens capturadas e
usadas para rendering
Existência ou não de geometria da cena
Obtenção do proxy geométrico usado para interpolação▪ geometria da cena: modelada, capturada por visão computacional ou
dispositivo
Levoy, Hanrahan 1996
Zitnick et al 2004
Debevec et al 1997 Mattoccia et al 2007
Mapa de profundidade como representação geométrica
Vantagem: não exige grande número de imagens de entrada
Métodos de estéreo do estado-da-arte geram mapas de profundidade de boa qualidade
Câmeras de captura de Z estão se tornando acessíveis comercialmente
Z-Cam – 3DV Systems ®
Project Natal - Microsoft ®
Mapa de profundidade denso
Mapas de profundidade densos: um valor de Z para cada pixel
View-dependent geometry: um mapa de profundidade para cada vista
em contra-ponto à utilização de uma única geometria
Pipeline de uma solução completa de IBR
Calibração de
câmeras
Captura (amostrage
m)
Obtenção de
geometria (e.g.
stereo)
Compressão
Descompressão
Representaçãoda cena
(cor e geometria)
Rendering
Cor + geometria
Foco deste trabalho
Calibração de
câmeras
Captura (amostrage
m)
Obtenção de
geometria (e.g.
stereo)
Compressão
Descompressão
Representaçãoda cena
(cor e geometria)
Rendering
Cor + geometria
Objetivos
Permitir posicionamento arbitrário do ponto de vista desejado, com transição suave ao mudar ponto de vista
Renderizar vistas virtuais visualmente precisas: com qualidade comparável a imagens reais, livre de artefatos visíveis
Performance interativa, sem necessidade de pós ou pré-processamento Usar como entrada somente dados de calibração das câmeras
usadas na captura, imagens coloridas e respectivos mapas de profundidade
Configuração de captura
Assume-se uma configuração de câmeras tal como a de Zitnick et al 2004
câmeras com baseline de aproximadamente 30º de espaçamento
número modesto de câmeras dispostas em um arco
Zitnick et al 2004 - High-quality video view interpolation using a layered representation
Entrada: coleção de imagens de n câmeras {C1, C2, …, Cn}
1. Para obter parâmetros de Cvirtual , usar par de câmeras adjacentes Ci e Ci+1
2. Renderizar separadamente vista de cada câmera de referência
3. Fazer composição para gerar imagem final
Uso intenso da GPU para manter performance interativa
Visão geral do método proposto
Render
Composição
Render
CvirtualC1 C2 Ci
…
Ci+1 Cn
…
Fase 1 – Parâmetros da câmera virtual
Parâmetros da câmera virtual Cvirtual definidos como interpolação dos parâmetros de calibração das câmeras de referência
Ci Ci+1
10 t
Parâmetros de calibração de câmera Ci:
Matriz intrínseca K
Matriz de visualização V (posição e orientação) – decomposta em:
posição eye quatérnio de rotação Q
0100
00
0
yaf
xsf
K
10003333231
2232221
1131211
trrr
trrr
trrr
V
),,( 1 iivirtual QQtslerpQ
1)1( iivirtual teyeeyeteye
1)1( iivirtual tKKtK
Cvirtual
Fase 2 – Renderizar uma vista
Imagem da câmera de referência Ci sofre 3D warping (McMillan et al 1997) para ponto de vista de Cvirtual:
1. Criar geometria a partir do mapa de profundidade
2. Reprojetar geometria para o ponto de vista desejado
3. Atribuir cor a cada ponto da superfície gerada
4. Identificar regiões de oclusão
Geometria a partir do mapa de profundidade
Gera-se uma malha 3D densa, regular, com número de vértices igual à resolução do mapa de profundidade
1 pixel no mapa de profundidade 1 vértice na malha 3D
Imagem WxH
Mesh com WxH vértices
Otimização
Buffer com mesh 2D com coordenadas (x,y): coluna e linha do mapa de profundidade
Vértice (x, y, ?)
Z: obtido acessando posição (x, y) domapa de profundidade (vertex shader)
Vértice (x, y, Z)
Se dimensão das imagens não muda, buffer pode ser gerado uma única vez economia na transferência CPU-GPU
0 W
0
H
Reprojeção para Cvirtual (3D warping)
Reprojeção de Ci para Cvirtual feita em GPU (vertex shader):
Unprojection: vértice (x, y, Z) transformado em coordenadas do mundo usando matrizes Ki e Vi
Reprojection: vértice em coordenadas do mundo transformado para ponto de vista Cvirtual usando matrizes Kvirtual e Vvirtual
Z
y
x
world
world
world
Z
Y
X
virtual
virtual
virtual
C
C
C
Z
Y
X
Unproject Reproject
Atribuição de cor
Envia-se textura com imagem colorida da câmera Ci para a GPU
Coordenadas de textura geradas na GPU (vertex shader) Vértice (x, y, Z) coordenada de textura (x, y)
Hardware gráfico interpola coordenadas de textura na rasterização
Cor (RGB) e profundidade (Z) armazenados em textura (render-to-texture)
Resultado até agora
Ci Cvirtual
3D warping
Regiões de oclusão artefatos
Áreas oclusas (não capturadas) se tornam visíveis ao mover-se de Ci para Cvirtual
Estas regiões devem ser preenchidas com informação da outra câmera de referência
Identificando regiões de oclusão
Regiões oclusas coincidem com regiões de descontinuidade em Z no mapa de profundidade facilmente identificáveis em um vertex shader
Vizinhos do vértice acessados no mapa de profundidade para testar continuidade canal alpha armazena label para posterior tratamento
Regiões de oclusão pintadas em preto somente para visualização
Fase 3 - Composição
Ci Ci+1
Cvirtual
?Composiç
ão
Composição (pixel-a-pixel) deve envolver:1. Função suave de blending – sem saltos bruscos de
cor2. Determinação de visibilidade3. Tratamento de oclusões
Função de blending suave- distância angular
Como sugerido por Buehler et al 2001:
Distâncias angulares entre ponto de vista desejado e câmeras de referência devem ser usadas para blend consistente
Quanto mais próximo Cvirtual estiver de uma câmera de referência, mais esta camera deve afetar a cor final
Buehler et al 2001 – Unstructured Lumigraph Rendering
Ci
Ci+1Cvirtual
Para transição suave entre câmeras, função exponencial usada para calcular pesos de vistas de referência
),max( 1
ii
i
ewi
),max(
11
1
ii
i
ewi
Função de blending - pesos
Ci
Ci+1Cvirtual
1ii
Penalidades – motivação
Ci
Ci+1
Cvirtual
Pixels marcados como oclusos
Pixels mais distantes de Cvirtual em uma câmera em relação a outra
Penalidades – oclusão
Se distância angular muito pequena, deve penalizar pouco extremo é a câmera virtual coincidente com a câmera de referência
ocluso como marcado pixel se ,
ocluso como marcado não pixel se ,0
1ii
ioccipenalty
Ci
Ci+1Cvirtual
1ii
Penalidades – visibilidade
Ao invés de fazer teste absoluto de Z, levamos informação de oclusão em consideração
Nos nossos testes, PENNz = 0.8 deu bons resultados
virtualcâmera da longe maisou ocluso não pixel se
virtualcâmera da próximo mais e ocluso pixel se
0,
,ZZcloser
PEENpenalty
i
Equação final de blending
Pesos finais para cada câmera:
Depois de normalizar pesos, cor final do pixel p definida como:
1
11
ii
iiiip ww
wcolorwcolorcolor
)1(),max( 1ii penaltyew ii
i
)1( 1),max(
11
1
ii penaltyew ii
i
Resumo do método
[CPU-GPU] Geração de buffer para malha 2D com dimensão igual ao mapa de profundidade (envio à GPU uma única vez)
[CPU] Determinar matrizes da câmera virtual a partir de par de câmeras adjacentes
[CPU-GPU] Atualizar texturas com imagens coloridas e mapas de profundidade para frame atual
[GPU] Separadamente para cada vista:
Reprojetar malha para ponto de vista desejado, identificando e marcando regiões de oclusão no canal alpha
[GPU] Fazer composição, levando em conta distância angular entre as câmeras e penalidades
Resultados – demo
Resultados – performance
Linear no número de pixels das imagens de entrada
Performance interativa para imagens Full HD (1920x1080)
0 500000 100000015000002000000250000030000000
5
10
15
20
25
30
35
320x240640x480
1024x768
1600x1200
1920x1440
Images’ number of pixels x Rendering time per frame (ms)
Workstation: Intel Core 2
Quad 2.4GHz Nvidia GeForce
9800 GTX 2 MB RAM
Resultados – análise qualitativa
Transições suaves de cor quando ponto de vista desejado muda
Poucos artefatos visíveis, exceto possivelmente em regiões onde Z estimado no mapa de profundidade não é confiável
Com vídeos, “flickering” na regiões de borda de objetos: os mapas de profundidade de entrada não apresentam coerência temporal
Dificilmente se distingue a imagem sintética da imagem real
Limitações – ghosting
+ =
“Fantasmas” podem aparecer no encontro entre regiões A e B A: região que sofreu blending (vista pelas duas câmeras de ref.)
B: região visível somente por uma câmera de ref., oclusa na outra
Ghost
Limitações – mix entre frente e fundo
Mix frente-fundo
Na imagem capturada: blend entre cor de objeto de frente e objeto de fundo
Mapa de profundidade atribui um único valor de Z por pixel
Após 3D warping, pixels podem acabar sendo contaminados
Contribuiçãode frente e
fundo
Único Z por pixel
Conclusão e trabalhos futuros
Contribuição: técnica inteiramente executada em GPU, desde criação de geometria e tratamento de oclusão até composição
Resolver limitações Ghosting: pós-processamento ou Gradient-domain compositing
Mix frente-fundo: Matting (determinar alpha) em regiões de oclusão na GPU para manter alta performance
Coerência temporal para mapas de profundidade frame-a-frame para interpolação de vídeos: evita saltos entre frames
Estimar mapas de profundidade para imagens de entrada framework completo de IBR a partir de imagens coloridas
Top Related