Visão Computacional - INF2604 / Prof. Marcelo Gattass
Trabalho 1 - Extração de Feições e Características
Guilherme Schirmer de Souza
Download da apresentação

1 - Introdução

A Visão Computacional é uma ciência que obtém informações de imagens ou dados multi-dimensionais. As áreas típicas de aplicação são de reconhecimento, estimativa de movimento, reconstrução e restauração de imagens. Cada uma dessas áreas possuem sistemas típicos com algumas funções básicas para atingir seus objetivos, como aquisição de imagem, extração de características, detecção e segmentação, processamento de alto nível, etc.
O objetivo desse trabalho é apresentar uma pequena introdução geral sobre extração de feições e características e fazer um estudo teórico mais aprofundado na detecção de gestos e movimentos através de uma câmera com o uso de técnicas de extração de feições e de detecção e segmentação de imagens.

1.1 - Detecção de Feições e Características

Na visão computacional o conceito de detecção de características se refere aos métodos que têm como objetivo detectar se para cada ponto de uma imagem existe uma informação de característica previamente abstraída. Entende-se como característica/feição qualquer parte da imagem que seja de interesse da aplicação. Essas partes de interesse geralmente são parâmetros de entrada de muitos dos algoritmos de visão computacional.

1.2 - Propriedades das características

Características de interesse são parâmetros de entrada para muitos algoritmos, por isso é necessário que seus detectores tenham algumas propriedades de forma a manter a coerência dos resultados desses algoritmos e que estes sejam confiáveis. Algumas das propriedades são:
1.3 - Tipos de detectores de características

Ao longo dos anos, vários detectores de características foram desenvolvidos para atingir diferentes objetivos. Tais detectores podem ser classificados em um dos seguintes tipos:

2 - Detecção de Gestos e Movimentos

2.1 - Objetivo

Utilizar uma câmera web para detectar alguns gestos e movimentos da mão para propiciar uma interação entre o usuário e o computador sem o uso de qualquer outro dispositivo, como luvas. Além disso, o ambiente considerado não é limitado a restrições, ou seja, não precisa ter um fundo especial e pode sofrer alterações de iluminação, necessitando apenas de alguns ajustes durante o período de instalação.

2.2 - Requisitos dos Sistemas Baseados em Visão

Requisitos Funcionais: Detecção, Identificação e Rastreamento.
Requisitos Não Funcionais: Latência, Resolução e Estabilidade.
2.3 - Visão Geral

O estudo tem como objetivo entender algumas técnicas de detecção e rastreamento dos dedos da mão e com base neles e suas informações (posição, número, direção) reconhecer um conjunto básico de gestos. Para alcançar o objetivo de detecção dos dedos, é utilizada a técnica de detecção da silhueta da mão a qual é baseada em uma abordagem de segmentação que considera as características de cor e de iluminação do ambiente. Tal segmentação tenta diminuir as restrições do ambiente e influência da iluminação ao gerar a modelagem do fundo.



2.4 - Processo

2.4.1 - Subtração de Fundo

Fase do processo que utiliza um conjunto de algoritmos para segmentar e detectar uma mão em movimento a partir de algumas imagens coloridas obtidas de uma câmera com uma cena de fundo estático. A idéia geral consiste em subtrair uma imagem atual obtida da câmera com uma imagem de referência apenas do fundo usado como base. Essa imagem de referência é obtida após um período de treinamento e de ajuste do sistema durante a instalação.
Desafios: a simples e pura subtração de imagens na maioria das vezes não produz resultados desejados devido a alterações de iluminação e principalmente de sombras geradas pela mão durante o movimento. Sendo assim, para resolver o problema, os algoritmos devem levar em contra tanto mudanças de cor como mudanças de brilho dos pontos.



Distorção de brilho e cor: uma forma de modelagem que reduz drasticamente o problema levantado se dá através do uso do cálculo das distorções de brilho e de cor no espaço RGB. Isso se deve ao fato de que um ponto em sombra por causa da mão não perde suas características de cor, apenas possui uma baixa iluminação. Sendo assim, é muito mais suscetível a mudanças de iluminação do que de cor.



2.4.1.1 - Modelagem do Fundo: Imagem de Referência

A subtração de fundo utiliza como base uma imagem de referência que servirá para segmentar a mão da imagem atual. Para gerarmos tal imagem de referência não podemos utilizar apenas uma imagem obtida do fundo puro, pois os equipamentos de captura possuem imprecisões e ruídos que podem fazer com que o mesmo ponto tenha cor ou iluminação diferente. Portanto, um processo de treino e cálculo é realizado com base em várias imagens do fundo para poder gerar a imagem de referência.

Processo de Treinamento e Cálculo:


Cálculo da distorção de brilho (αi) e distorção de cor (Cdi):



2.4.1.2 Limiares

Calculados com base estatísticas de forma a obter bons valores para serem usados no processo de subtração. São montados histogramas de distorção normalizada do brilho e da cor para todas as imagens de treino com relação a imagem média e desses histogramas são extraídos tais valores.



2.4.1.3 Segmentação

Nessa etapa é feita a subtração da imagem atual pela imagem de fundo. Com o uso das imagens de referências e alguns limiares é possível classificar os pixels em um dos seguintes grupos:


Algoritmo de Subtração:




2.4.2 – Detecção de Silhueta


Fase do processo que detecta e representa os objetos em uma imagem através de suas silhuetas e que é capaz de lidar com os erros e ruídos encontrados durante o processo de subtração. A idéia geral consiste em, com base no resultado do processo anterior, filtrar a morfologia da mão, ou seja, corrigir falhas existentes na mão, detectar as bordas da mesma e por fim detectar e representar através de uma estrutura de dados os pontos que definem a silhueta da mão.

2.4.2.1 Filtro Morfológico

Etapa que visa melhorar a segmentação. Para isso, tenta corrigir e diminuir ao máximo os erros e ruídos da morfologia do objeto. A abordagem utilizada para cumprir esse objetivo é o uso de filtros que completam pequenos buracos e eliminam regiões isoladas de poucos pixels. Filtros morfológicos utilizados:

  • Filtro de Dilatação – dilatam os objetos pelas bordas internas e externas
  • Filtro de Erosão – encolhem os objetos pelas bordas

  • A forma e tamanho da dilatação e erosão são dados por suas máscaras. Nesse trabalho a máscara utilizada é a de vizinhança N8.



    Critérios de filtragem: O processo consiste em primeiramente expandir o objeto por suas bordas internas e externas, preenchendo assim regiões vazias que deveriam estar preenchidas. Após isso, o objeto é reduzido ao seu tamanho original pelo filtro de erosão e mantém os pontos internos preenchidos, pois atua apenas nas bordas.

    2.4.2.2 Detecção de Bordas

    O objetivo dessa etapa é localizar os contornos internos e externos dos objetos, sendo tais contornos as silhuetas desejadas dos objetos. O processo de detecção da borda é bastante simples pois é dado pela subtração das imagens geradas pelo filtro morfológico de dilatação e pelo filtro de erosão.

    2.4.2.3 Detecção de Contornos

    Processo que identifica e detecta o contorno das silhuetas e armazena tais pontos identificados em uma estrutura de dados que será utilizada na fase de reconhecimento. A idéia para localizar a silhueta dos objetos é percorrer os contornos presentes na imagem e armazená-los (as bordas são todas conexas). Após o percurso e armazenamento dos contornos, um conjunto de listas de silhuetas é gerado e um processo de seleção no qual alguns contornos são descartados e outros identificados como objetos é feito.

    Representação dos Pontos do Contorno:

    Os pontos do contorno são armazenados através de uma Lista de Códigos. Nessa lista, cada ponto armazena a direção do próximo ponto de contorno. As direções são definidas no sentido anti-horário.


    Percurso dos contornos:
    2.4.2.4 - Seleção da Silhueta da Mão


    2.4.3 - Reconhecimento

    Essa é a última fase do processo e é responsável pelo reconhecimento de alguns gestos pré-estabelecimentos realizados com a mão assim como a detecção da orientação e posição dos dedos. A idéia geral consiste em detectar algumas feições da silhueta da mão resultante da fase anterior e com isso ser capaz de detectar a orientação e direção dos dedos para , finalmente, conseguir reconhecer alguns gestos representados pela mão de entrada detectada pela câmera.

    2.4.3.1 Detecção de feições

    Existem duas feições que são de interesse para esse estudo para atingir seu objetivo: as pontas dos dedos (picos, P) e a junção entre os dedos (vales, V).



    O objetivo dessa etapa é encontrar os pontos da silhueta que se assemelhem com essas duas feições.
    Embora o problema possa ser resumido como o problema de encontrar cantos em curvas planares, a grande quantidade de ruídos na silhueta faz com que o uso de derivadas locais não seja adequado.
    O algoritmo utilizado para detecção foi o k-curvatura o qual utilizada uma medida de ângulo de curvatura para obter os resultados.



    A idéia do algoritmo consiste em diminuir o efeito do ruído ao longo do contorno quando a distância k é maior, diminuindo assim o ângulo formado pelos vetores.



    Para detectar as regiões semelhantes a picos e vales as características da forma cilíndrica dos dedos devem ser levadas em consideração. Assim, K é pré-escolhido de forma a gerar vetores suficientemente grandes para serem usados na detecção das feições. Se o ângulo αi gerado por esse vetores for menor do que um limiar pré-determinado, aquele ponto é considerado um ponto de interesse.
    Os pontos em azul e vermelho são os pontos de interesse encontrados no exemplo abaixo. Podemos perceber que nem todos os vales foram encontrados.





    2.4.3.2 Detecção dos dedos

    Essa etapa tem como objetivo principal detectar cada um dos dedos da mão. Para que ela retorne resultados confiáveis, apenas pode levar em consideração feições que sempre são detectadas na silhueta da mão. Os vales nem sempre são encontrados, portanto os picos são as feições utilizadas para detecção dos dedos. Cada pico é formado por um conjunto de pontos. O ponto que tiver maior k-curvatura é o ponto considerado como representativo da posição do dedo.



    Essa etapa também tem como objetivo determinar a direção do dedo. Para isso um simples algoritmo é utilizado:

    2.4.3.3 Reconhecimento de Gestos

    É a etapa final do processo e tem como objetivo determinar os gestos, dentro de um conjunto pré-determinado, realizados com a mão e capturados pela câmera.
    Existem 4 gestos pré-determinados:



    Para detectar os gestos é feita uma comparação entre o número de dedos detectados e o número de dedos em cada gesto pré-definido

    2.5 - Exemplos de aplicações



    3 - Conclusões

    Nesse estudo foram apresentadas algumas técnicas de extração de características, mais especificamente para detecção e reconhecimento de gestos e direção dos dedos. Embora o conjunto de gestos fosse pequeno e algumas restrições fossem impostas, pode-se notar que várias aplicações podem ser vistas/utilizadas com essas técnicas e combinações de gestos.

    4 - Referências

    [1] - http://en.wikipedia.org/wiki/Feature_detection_(computer_vision)
    [2] - http://pt.wikipedia.org/wiki/Vis%C3%A3o_computacional
    [3] - Notas de aula
    [4] - http://www.tecgraf.puc-rio.br/~mgattass/michel/dissertacao.pdf