Shape From Shading


Otavio Schipper
(orientacao Luiz Velho)

Introdução:

Nosso objetivo é obter a descrição tridimensional de um objeto a partir de uma ou mais de suas imagens. Esta descrição do objeto pode ser expressa de diferentes formas: através de um mapa de alturas Z(x,y), do vetor normal à superficie (Nx,Ny,Nz), do vetor gradiente (p,q), etc...

Em visão computacional as técnicas para se recuperar a geometria de um objeto são conhecidas como "shape-from-X techniques", onde X representa as possíveis variáves: stereo, motion, texture, etc. Desenvolvemos uma abordagem simples da técnica de Shape-from-Shading, ou seja, da recuperação da geometria de um objeto através da variação gradual da iluminação na sua imagem. Para estudarmos esse problema é importante considerarmos o modelo de formação da imagem. O modelo mais simples de iluminação é o caso em que consideramos a superfíceie como sendo uma superfície Lambertiana pura (reflete a luz incidente com a mesma luminância em todas as direções). Desse modo a mudança de posição do observador não altera a luminância que ele percebe vindo da superfície e como consequência a intensidade de cada pixel da imagem representa a luminância refletida pelo ponto equivalente na superfície. Temos portanto que a intensidade refeltida pode ser escrita como (lei de Lambert): onde N é o vetor normal a superfície e V é a direção da fonte de luz.

Queremos obter os vetores normais para cada ponto P(x,y,z) da superfície a partir dos valores das intensidades refletidas: Ir = Ii (Nx.Vx + Ny.Vy + Nz.Vz). Como sabemos a direção da fonte de luz e a intensidade de cada pixel da imagem precisamos de no mínimo 3 imagens com 3 fontes de luzes distintas para conseguirmos achar as 3 incógnitas: (Nx,Ny,Nz). Basta portanto resolvermos o seguinte sistema de equações lineares:

É importante impormos a condição de que V1.(V2 X V3) seja diferente de zero para garantirmos que os 3 vetores não estejam no mesmo plano fazendo com que uma das equações seja redundante.


Primeiros Resultados:

Implementamos um programa em linguagem C utilizando as bibliotecas de imagem do curso de Sistemas Gráficos 3D e uma rotina para resolver um sistema de 3 equações lineares através do método de Gauss. O programa recebe como parâmetros o nome das 3 imagens sintéticas geradas pelo ray-tracer disponibilizado no software do curso assim como as respectivas direções de iluminação de cada cena e a partir do valor da intensidade de cada pixel I(x,y) resolvemos o sistema de 3 equações lineares e conseguimos computar o vetor normal ao ponto correspondente na cena. Fazendo essa análise para todos os pixels das imagens conseguimos montar o mapa de normais da cena em questão. Como estudo inicial obtivemos o mapa de normais de três primitivas geométricas: a esfera, o cilindro e o cone. Uma vez obtido o mapa de normais de cada uma dessas primitivas construimos uma interface gráfica que nos permitisse visualizar o mapa de normais em 3 dimensões para que os resultados pudessem ser visualizados de forma mais intuitiva.

A figura acima ilustra o funcionamento do programa: dadas três imagens sintéticas o programa computa as intensidades de um determinado pixel e a partir das respectivas direções de iluminação o programa resolve o sistema de equações descrito acima e obtem assim o vetor normal ao ponto respectivo da cena.
Vemos abaixo os resultados para os mapas de normais da esfera, do cone e do cilindro obtidos pelo programa:



Estéreo Fotométrico:

Este método é utilizado para se recuperar trechos da superfície de um objeto a partir de imagens. O método implica em uma análise dos valores da intensidade de diferentes imagens de um mesmo objeto de um mesmo ponto de vista iluminanado com uma fonte de luz em diferentes direções. Este método nos fornece diretamente a orientação da superfície e nos permite recuperar a distância à superfície nos pontos correspondentes aos pixels da imagem.

A idéia é variar a direção da iluminação incidente entre imagens sucessivas enquanto mantemos a direção da câmera constante. A técnica é fotométrica pois utiliza os valores de radiância registrados em um ponto da imagem nas diferentes imagens capturadas. Técnicas de estereo tradicional obtêm a posição de pontos da imagem no espaço relacionando duas ou mais imagens de um objeto capturados a partir de diferentes pontos de vista. A técnica de estéreo fotométrico obtêm a orientação de pontos da superfície de um objeto variando somente a direção de iluminação da fonte de luz incidente entre sucessivas imagens capturadas.
Esta técnica possui algumas vantagens em comparação com outros métodos de reconstrução tais como:

• O algorítmo não precisa assumir que as superfícies sejam suaves (não apresentem descontinuidades) como os algorítmos de shape-from-shading que utilizam uma só imagem.
• Podemos utilizar equipamentos de baixo custo como câmeras digitais e flashes portáteis para obter uma boa reconstrução da superfície do objeto capturado.
• Em um ambiente controlado podemos construir um simples sistema para adquirir a geometria e propriedades reflexivas de um objeto.


Modelo de iluminação:

Mantendo a câmera e o objeto em uma posição fixa e iluminando a superfície do objeto com uma fonte de luz pontual que está longe o suficiente (em comparação com as dimensões do objeto) podemos considerar um modelo de iluminação local. Assumiremos que não há nenhuma iluminação ambiente e que a radiosidade em um ponto P na superfície do objeto pode ser escrita como: Onde alfa(P) é o albedo da superfície (que está sendo considerado constante), N(P) é o valor do vetor normal unitário à superfíce no ponto P e S é a direção de iluminação (um vetor unitário). Notamos que estamos considerando a resposta da câmera linear à radiosidade na superfície (no intervalo de exposição), e portanto o valor de intensidade de um pixel é dado por: onde k é a constante que conecta a resposta da câmera e a radiância de entrada. Estamos considerando também que as luzes estão balanceadas e que todas elas apresentam a mesma potência (que estamos assumindo como sendo igual a 1 em alguma unidade arbitrária). De fato, estamos utilizando um modelo de flash portátil para câmeras em diferentes posições variando assim a direção de incidência da luz.


Implementação:

O nosso sistema consiste em uma câmera digital modelo Cannon Rebel, um tripé Manfrotto, um flash modelo vivitar 285 HV com um cabo para que se possa utilizá-lo independentemente da câmera e uma esfera especular negra utilizada para se capturar as direções das fontes de luz. Colocamos a câmera em uma posição fixa e o objeto em um ambiente controlado com a esfera negra próxima a ele. Capturamos três ou mais imagens do objeto variando a posição e direção do flash e assim a direção da iluminação incidente :



O método para se determinar a direção das fontes de luz é feito pelo usuário ao marcar uma área retangular que contêm a esfera na interface gráfica:


Como sabemos a forma da esfera podemos computar os valores dos vetores normais em qualquer ponto da sua superfície, e portanto podemos computar a direção de reflexão para o ponto da esfera com o maior valor de brilho (especularidade).
Assumindo somente um canal de cor com três ou mais imagens de entrada iluminadas com diferentes iluminações podemos obter os valores normais da superfície do objeto para qualquer ponto resolvendo um problema linear de mínimos quadrados com o seguinte funcional (onde G = k.alpha.N) : Uma vez que temos os valores das normais N para cada pixel podemos resolver para os albedos outra solução de mínimos quadrados com o seguinte funcional (onde H = kN): Para minimizá-lo temos que diferenciar em relação a K e igualar a zero o resultado, o que implica em: Podemos realizar este procedimento para cada canal de cor independentemente para obter um albedo por canal. Se a superfície que apresenta essas normais existe poderíamos usar integração por partes para achar os seus valores de profundidade. Como não podemos garantir esta condição tentaremos colocar este problema como uma otimização de mínimos quadrados.
Como as normais são sempre perpendiculares à superficie, elas serão perpendiculares a qualquer vetor na sua superfície também. Consideremos um pixel (i,j) e o seu vizinho à direita (i+1,j). Podemos construir um vetor V que é perpendicular ao vetor normal N no ponto (i,j): Como sabemos que o produto escalar entre V e N tem que ser igual a zero temos que: De forma similar, na direção vertical temos que: É possível construir vínculos semelhantes para todos os pixels (que apresentem vizinhos) e formar uma matriz: Poderíamos utiliza outra solução de mínimos quadrados para este problema porém teríamos que lidar com uma matriz com tantas linhas e colunas quanto o número de pixels nas imagens. Como a maioria das entradas na matriz M é igual a zero podemos utulizar um metodo para resolver um sistema linear com matrizes esparsas para achar os valores das profundidades dos pontos.

Vemos abaixo alguns resultados (imagens de entrada, as normais, o albedo e a reconstrução obtida):
A documentação do programa pode ser encontrada aqui.

Estéreo Fotométrico baseado em exemplo:

O artigo “Shape and Materials by Example: A Photometric Stereo Approach” de Aaron Hertzmann e Steven Seitz apresenta uma técnica para se obter a geometria de ojetos com propriedades gerais de reflectância a partir de imagens. A maior parte das técnicas de reconstrução em visão computacional trabalha somente com cenas lambertianas. Este trabalho introduz o conceito de consistência na orientação como uma dica para a interpretação de cenas com propriedades de reflectância arbitrárias.

O conceito de "consistência na orientação generalizada" afirma que:
Em condições apropriadas, dois pontos com a mesma orientação na superfície de um objeto devem apresentar uma aparência similar ou igual em uma imagem. Baseado nesta regra podemos reconstruir as normais de um objeto, quando capturado em conjunto com um ou mais objetos de referência com materiais similares e geometria conhecida.
Esta abordagem apresenta as seguintes características:

- A BRDF, a iluminação e a forma do objeto podem ser desconhecidas. Além disso a BRDF pode ser arbitrária e variar na superfície.
- Quase nenhuma calibração da câmera ou da iluminação é necessária.
- O algorítmo é extremamente simples de ser implementado.

O método funciona da seguinte forma: um ou mais objetos de referência com material similar ou igual deve ser capturado sob a mesma iluminação que o objeto que se deseja reconstruir:


A consistência na orientação nos garante que dois pontos com a mesma orientação na superfície refletem a mesma radiância na direção do observador. As seguintes suposições devem ser mantidas para que o conceito seja válido:

- ambos os pontos apresentam a mesma BRDF.
- as fontes de luz são direcionais.
- a câmera é ortográfica.
- não há sombras, interrelexões, transparências ou outros efeitos que não dependam puramente da BRDF no ponto.

Supondo que capturamos várias imagens do objeto de referência e do objeto que desejamos recontruir (objeto alvo) a partir de um ponto de vista fixo mas com diferentes iluminações temos para cada pixel p = (x,y) na imagem, um valor da intensidade associada a este pixel Ip. Podemos definir portanto um vetor de observação como sendo o conjunto das intensidades observadas para um pixel ao longo das n imagens: No caso de imagens coloridas há um componente do vetor de observação para cada canal. Sejam Rp, Gp e Bp os vetores de observação para os canais vermelho, verde e azul respectivamente. Definimos o vetor de observação para imagens coloridas Vp como a concatenação de Rp, Gp e Bp em um único vetor: Para um pixel p no objeto alvo, a normal em p é determinada simplesmente por uma busca pelo ponto q no objeto de refererência que minimiza || Vp − Vq ||. Uma correspondência completa determina a normal para cada pixel no objeto alvo.
Vemos abaixo o resultado dessa busca para a imagem de entrada acima decodificada em uma mapa de cores para as normais.


A documentação do programa pode ser encontrada aqui.

Modelando a variação de materiais:

A técnica apresentada anteriormente apresenta duas limitações:
- o objeto alvo deve apresentar um albedo constante.
- o objeto de referência deve ser composto do mesmo material que o objeto alvo.

Variação de cor:

Consideremos um objeto alvo difuso com uma textura que varie ao longo de sua superfície. A aparência de tal objeto porde ser aproximada utilizando a fórmula Lambertiana: onde n é o vetor normal à superfície no ponto, l o vetor que representa a direção da fonte de iluminação e a sua intensidade, e ρ é o coeficiente de reflexão que varia ao longo da superfície. Supondo que o objeto de referência é homogeneamente difuso e apresente um coeficiente de reflexão ρ, a aparência deste objeto pode ser modelada por: Supondo agora que um ponto p no alvo apresente a mesma orientação da superfície que um ponto q no objeto de referência. Segue portando das equações acima que: Consequentemente, o mesmo algorítmo pode ser aplicado se normalizarmos os vetores de observação do alvo e da referência antes de realizar a busca. No caso de imagens coloridas, os vetores de observação para cada canal podem ser normalizados separadamente, antes de combiná-los em um vetor.

Variação de material:

No caso mais geral, o objeto alvo pode ser composto de múltiplos materiais que podem variar na sua superfície. Assumiremos que todos os materiais em um único objeto podem ser representados como uma combinação linear de k bases de materiais para um valor fixo k. Por exemplo, o modelo de Phong é expresso como uma combinação linear com uma componente difusa e uma especular, i.e., k =2.
Supondo que a superfície do objeto alvo apresenta um mapa de reflectância da forma: Mesmo que os objetos de referência possam em princípio apresentar materiais que variam espacialmente, assumimos por simplicidade que estes são homogêneos: onde q denota um ponto com a mesma orientação da superfície em cada imagem de referência. Se os vetores de observação de referência forem linearmente independentes, eles formam um espaço vetorial k-dimensional e segue portanto que os vetores de observação alvo devem pertencer a sua varredura, i.e. : Podemos reescrever esta equação como: onde:


Orientação na consistência generalizada:

A orientação na consistência é generalizada para lidar com múltiplos materiais como segue:
Dizemos que um ponto p no alvo apresenta consistência na orientação com um ponto q em cada uma das imagens de referência se existe um índice de material mp que satisfaz a última equação. O procedimento anterior é modificado para computar o índice de material mp para cada ponto candidato q pela operação pseudo-inversa: Para ponto p no alvo, o candidato q é escolhido tal que o valor de mp estimado minimize: : No caso de imagens coloridas, um índice mp separado é estimado para cada canal, e a equação acima é somada nos três canais.

Referências:

[1] Shape from Shading: A Survey – R. Zhang, P.Tsai, J.E. Creyer and M. Shan.

[2] Nehab Diego et. al ”Efficiently Combining Positions and Normals for Precise 3D Geometry”, ACM Transactions on Graphics - SIGGRAPH , July 2005.

[3] Zhang R. et. al ”Shape from Shading: A Survey”, Computer Vision Lab, UCF, IEEE Transactions on Pattern Analysis and Machine Intelligence, Volume 21 , Issue 8, 1999.

[4] Debevec P et. al ”Photometric Stereo for Archeological Inscriptions”, USC - Institute for Creative Technologies, Siggraph Technical Sketches, 2004.

[5] Woodham, R. ”Photometric method for determining surface orientation from multiple images”, Optical Engineering, Vol 19, No 01.

[6] Rushmeier, H ”Computing Consistent Normals and Colors from Photometric Data”, IBM Reserch Center, 2nd International Conference on 3D Digital Imaging and Modeling (3DIM ’99),Ottawa, CANADA.

[6] Forsyth D. and Ponce, J. ”Computer Vision; A Modern Aproach, Prentice Hall, 2003

[7] S. Arya, D. M. Mount, N. S. Netanyahu, R. Silverman, and A. Y. Wu. An Optimal Algorithm for Approximate Nearest Neighbor Searching in Fixed Dimensions. Journal of the ACM, 45(6):891– 923, 1998.

[8] R. Basri and D. Jacobs. Photometric stereo with general, unknown lighting. In Proc. CVPR, pages 374– 381, 2001.

[9] K. J. Dana, S. K. Nayar, B. van Ginneken, and J. J. Koenderink. Reflectance and texture of real-world surfaces. In Proc. CVPR., pages 151– 157, 1997.

[10] B. K. P. Horn. Robot Vision. McGraw-Hill, New York, NY, 1986.

[11] K. Ikeuchi. Determining surface orientations of specular surfaces by using the photometric stereo method. IEEE PAMI, 3(6):661– 669, 1981