Monday, May 19, 2008

Facial Emoticons Versão Library

Por forma a poder utilizar-se a detecção de expressões faciais por aplicações externas, e já pensando na utilização pela interface a desenvolver, tranformei o projecto já existente numa biblioteca dinâmica.

Adicionalmente, foi acrescentada à dll uma funcionalidade para poderem obter-se as features existentes numa imagem.

Como definimos que o desenvolvimento da interface e de outras aplicações para testes e demonstração seria em Python, foi necessário adaptar esta biblioteca para a sua utilização pelo Python. Para tal, recorri às bibliotecas Boost, que permitem criar um wrapper que funciona como proxy entre o Python e a dll desenvolvida em C++.

Finalmente, foi criado um script em Python que, dada uma directoria, processa todas as imagens, devolvendo o conjunto de valores correspondentes às features identificadas, para posterior processamento e geração de gráficos que auxiliem a visualização das variações dos elementos faciais.

Sunday, May 4, 2008

Modelo elástico robusto

Depois de o modelo estar a fazer uma boa adaptação nos casos em que encontra correctamente as features, foi necessário garantir uma conclusão aceitável para o reconhecimento, mesmo quando alguns elementos não são detectados.

Desta forma, é feita uma adaptação progressiva do modelo às features que vão sendo detectadas e, caso alguma não seja identificada, é utilizada a estimativa do modelo adaptado.

Na figura seguinte, o caso extremo em que não é encontrado nenhum elemento, é estimado um conjunto de pontos, de acordo com o modelo elástico e a partir das características métricas do rosto.


Nestas duas imagens, é apresentada a estimativa adaptada após a identificação dos olhos, seguida do resultado final já com as features correctamente identificadas.





Como um exemplo de detecção de variação de expressões, pode ver-se na imagem abaixo a adaptação do modelo à localização das sobrancelhas.