• Nenhum resultado encontrado

4.2 CAPTURA DE MOVIMENTO FACIAL EM TEMPO REAL

4.2.1 FaceCap

Para captura de movimento facial em tempo real, foi selecionado o método proposto em (THOMAS; TANIGUCHI, 2016), que chamamos de FaceCap. A principal ideia é utilizar um

par de imagens de textura e relevo (bump) para aumentar todas as malhas de blendshape de modelo, com o objetivo de construir faces de alta fidelidade, com expressões e detalhes específicos (Figura 38). A imagem de bump é utilizada para simular relevos e pertubações nas superfícies de malhas pela alteração da orientação normal da superfície, dando a ilusão de pequenas profundidades, as quais reagem à iluminação, produzindo um pequeno nível de sombreamento e criando uma impressão de buracos ou irregularidades na textura do objeto. Sendo assim, o mapeamento baseado em bump consegue renderizar uma superfície mais próxima à realidade, com mais detalhes e imperfeições.

Figura 38 – As malhas de blendshape representam a forma da cabeça e expressões faciais, enquanto que a imagem de bump representa os mínimos detalhes do rosto.

Fonte: Adaptado de (THOMAS; TANIGUCHI, 2016).

A Figura 39 exibe todo o pipeline do FaceCap. O método funciona com a captura de imagens de entrada utilizando uma câmera RGB-D. As imagens para processamento são geradas a partir do mapeamento da nuvem de pontos para a imagem original, usando a informação de profundidade do sensor. As malhas de blendshape {B𝑖}𝑖∈[0:𝑛] representam

a forma geométrica base e as 28 expressões faciais distintas, onde B0 é a malha com

28). Os pontos 3D da superfície da cabeça são expressos como uma combinação linear das malhas de blendshape, como na Equação 4.10 abaixo:

M(𝑥) = B0 + 𝑛

∑︁

𝑖=1

𝑥𝑖𝑖, (4.10)

onde x = [𝑥1, 𝑥2, ..., 𝑥𝑛] são os coeficientes dos blendshapes ˆB𝑖 = B𝑖 − B0 para 𝑖 ∈ [1 : 𝑛]

e M(𝑥) é a malha misturada (blended mesh) (THOMAS; TANIGUCHI, 2016).

A primeira etapa para inicialização do algoritmo é realizada pela captura inicial da face frontal do usuário com expressão neutra. O alinhamento facial inicial é feito usando o algoritmo IntraFace (De la Torre et al., 2015), onde a face é detectada por um classificador

em cascata (VIOLA; JONES et al., 2001), e os pontos fiduciais de interesse são detectados

pelo algoritmo SDM (XIONG; TORRE, 2013). Em seguida, a escala do blendshape neutro

B0 é ajustada para que as distâncias euclidianas entre os pontos faciais de B0 coincidam

com as calculadas a partir da imagem RGB-D. Nesta etapa também é computado um primeiro alinhamento entre B0 e a primeira imagem de entrada. Por fim, é aplicado o

registro elástico (elastic registration) (ZHOU; MILLER; KOLTUN, 2013) para um rápido

alinhamento do modelo B0 à face do usuário, transferindo também todas as deformações

calculadas para as outras malhas e gerando as imagens de bump e textura iniciais (Figura 39) (THOMAS; TANIGUCHI, 2016).

Figura 39 – Metodologia do FaceCap.

Fonte: Adaptado de (THOMAS; TANIGUCHI, 2016).

Na etapa seguinte é realizado o rastreamento da face. O rastreamento rígido (pose da cabeça) (R, t) é computado usando a informação de profundidade provida pela imagem RGB-D e o algoritmo ICP (RUSINKIEWICZ; LEVOY, 2001). Para estimar os coeficientes de blendshape, o FaceCap usa a abordagem descrita em (HSIEH et al., 2015). As correspondên-

cias densas dos pontos são calculadas a partir de todos os pontos disponíveis da imagem de bump, gerando os alinhamentos de ponto-a-plano (Equação 4.11), pela imagem de pro-

fundidade, e ponto-a-ponto (Equação 4.12), pelos pontos 3D de características faciais. No fim, os coeficientes são computados pela resolução do problema de minimização para o alinhamento total (Equação 4.13) (THOMAS; TANIGUCHI, 2016):

𝑐𝑆(𝑢,𝑣)(𝑥) = n(𝑢,𝑣)(RP𝑥(𝑢, 𝑣) + t − v(𝑢,𝑣))2, (4.11) 𝑐𝐹𝑗 (𝑥) = ||RP𝑥(lmk𝑗 + t − v𝑗)||22, (4.12) 𝑥= 𝑎𝑟𝑔𝑚𝑖𝑛 𝑥 ∑︁ (𝑢,𝑣) 𝑐𝑆(𝑢,𝑣)(𝑥) + 𝑤1 ∑︁ 𝑗 𝑐𝐹𝑗 (𝑥) + 𝑤2 𝑛 ∑︁ 𝑘=1 𝑥2𝑘. (4.13) Nas equações descritas acima os dados são representados da seguinte forma: (𝑢, 𝑣) representa um pixel da imagem de bump, P𝑥(𝑢, 𝑣) é um ponto correspondente da imagem

de bump na malha 3D (Equação 4.14), sendo V𝑥 a imagem de vértice e N𝑥 a imagem

normal da malha; v(𝑢,𝑣)é o ponto mais próximo a RP𝑥(𝑢, 𝑣)+t na imagem de profundidade

e n(𝑢,𝑣) é o vetor de normais; lmk𝑗 representa a localização do 𝑗-ésimo ponto de referência

na imagem de bump e v𝑗 representa o 𝑗-ésimo ponto facial 3D da imagem RGB-D; 𝑤1 e

𝑤2 são constantes de ponderação. P𝑥(𝑢, 𝑣) pode ser definido como:

P𝑥(𝑢, 𝑣) = V𝑥(𝑢, 𝑣) + Bump(𝑢, 𝑣)N𝑥(𝑢, 𝑣). (4.14) Na etapa final ocorre a fusão de dados (Figura 40). Neste procedimento o modelo aumentado da face é remodelado e refinado a cada quadro. Para adicionar os dados da imagem RGB-D na imagem de bump e na textura é usada a média móvel de uma máscara MASK pré-definida com a própria imagem de bump. A máscara possui a mesma dimensão da imagem de bump e representa o grau de confiança de cada pixel. Logo, para os coeficientes x do blendshape, cada (𝑢, 𝑣) na imagem de bump corresponde ao ponto 3D P𝑥(𝑢, 𝑣) que se encontra na linha 𝐿𝑥(𝑢, 𝑣) direcionada pelo vetor N𝑥(𝑢, 𝑣) e passando pelo ponto 3D V𝑥(𝑢, 𝑣) (Equação 4.14). Então, para cada quadro de entrada RGB-D, já com a

pose (R, t) estimada e os coeficientes x, as imagens de bump e cor são atualizadas usando o ponto 3D da imagem RGB-D mais próximo a linha 𝐿𝑥̂︀ (𝑢, 𝑣), direcionado pelo vetor

RN𝑥(𝑢, 𝑣) e passando pelo ponto 3D RV𝑥(𝑢, 𝑣) + t. Para calcular a distância 𝑑(𝑢, 𝑣) do ponto p𝑢,𝑣 para o ponto correspondente RV

𝑥(𝑢, 𝑣) + t da malha, em direção a RN𝑥(𝑢, 𝑣),

é aplicada a (Equação 4.15). Por conseguinte, é aplicada a média móvel entre 𝑑(𝑢, 𝑣) e o Bump(𝑢, 𝑣). (Equação 4.16). (THOMAS; TANIGUCHI, 2016):

𝑑(𝑢, 𝑣) = (p𝑢,𝑣(RV𝑥(𝑢, 𝑣) + t) · (RN𝑥(𝑢, 𝑣))), (4.15)

Bump(𝑢, 𝑣) = MASK(𝑢, 𝑣)Bump(𝑢, 𝑣) + 𝑑(𝑢, 𝑣)

No fim, a cada quadro é aplicado um filtro mediano na imagem de bump para remover outliers (THOMAS; TANIGUCHI, 2016).

Figura 40 – Etapa de fusão de dados do FaceCap.

(a) Seleção do conjunto pixels candidatos. Um segmento 3D (segmento vermelho na região retangular vermelha) é definido como o segmento central em volta do ponto 3D aumentado com a imagem de bump, na direção do vetor normal da superfície do modelo

e com o tamanho proporcional à confiança atual. Os pixels candidatos são identificados como aqueles que pertencem ao segmento 2D projetado na imagem de entrada RGB-D.

(b) Identificação do melhor casamento para a fusão de dados. Todos os pixels candidatos são projetados no espaço 3D (ponto de cor magenta na região retangular vermelha) e o ponto mais próximo ao vetor normal é identificado como a melhor correspondência. Esta

por sua vez é projetada no vetor normal e na distância para a superfície de modelo na direção da normal do ponto 3D original aumentado. A correspondência projetada é

então fundida usando a média móvel.

Fonte: Adaptado de (THOMAS; TANIGUCHI, 2016).

O FaceCap consegue alcançar bons resultados para o rastreamento 3D e reconstrução facial simultânea (Figura 41), sendo necessário apenas o uso de uma câmera RGB-D e um computador com uma CPU simples, atingido execução em tempo real. A abordagem não necessita de treinamento por meio de estratégias mais complexas, como ocorre nas CNNs.

Figura 41 – Ilustração da captura de movimento facial usando o FaceCap.

Fonte: Elaborado pelo autor, 2019.

Contudo, com base nos experimentos feitos, foi observado que a técnica apresenta falhas na modelagem facial em alguns cenários. A primeira delas pode ser vista na Figura 42. É possível notar uma deformação indesejada na região dos olhos. Esse problema é comumente gerado nos casos em que a rotação da cabeça ultrapassa aproximadamente os 45º graus. Observou-se também que o erro ocorre sempre no olho oposto ao lado da rotação: caso a cabeça seja movimentada para esquerda, a deformação ocorre no olho direito, e vice-versa.

Figura 42 – Deformações indesejadas geradas pelo FaceCap nos blendshapes. Os círcu- los vermelhos destacam elementos estranhos nas regiões do olho direito das imagens.

Fonte: Elaborado pelo autor, 2019.

Outra falha recorrente acontece na modelagem do contorno dos lábios. Em certos momentos, a expressão facial da boca muda, mesmo que o usuário não tenha feito nenhum

movimento. Na Figura 43 é possível observar que a boca continua fechada na imagem real, enquanto que a malha deforma a boca como se o usuário tivesse feito o movimento de abertura.

Figura 43 – Falhas do FaceCap para detectar e gerar corretamente o contorno dos lábios. As duas comparações do topo exibem o desenho do contorno dos pontos faciais detectados pelo SDM. Já a última imagem comparativa exibe a imagem de bump com a textura. Nas imagens da coluna mais a direita, é possível ver o erro com maior precisão.

Fonte: Elaborado pelo autor, 2019.

As falhas mais drásticas ocorrem após certos movimentos da cabeça, sobretudo para os movimentos de rotação vertical (yaw) e extensão/flexão (pitch) (Figura 44). Como pode ser visto, os blendshapes apresentam comportamentos estranhos, como mudanças repenti- nas nas expressões faciais, desalinhamentos com as faces 2D, deformações indesejadas nos seus detalhes e perdas de rastreamento. Em cenários de oclusão por acessórios na face, o FaceCap também não consegue gerar resultados satisfatórios (Figura 45).

Figura 44 – Falhas apresentadas pelo FaceCap nos movimentos da cabeça: (a) extensão, (b) rotação para direita, (c) flexão e (d) rotação para esquerda.

Fonte: Elaborado pelo autor, 2019.

Figura 45 – Falhas apresentadas pelo FaceCap na reconstrução facial incluindo acessórios.

Fonte: Elaborado pelo autor, 2019.

Outras falhas observadas estão relacionadas a perda de rastreamento da face, princi- palmente devido a movimentos bruscos da cabeça.