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:
- Repetividade
- Invariância à iluminação
- Invariância à escala
- Rotação
- Entre outras
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:
- Arestas – Ex: Canny, Sobel, Transformada de Hough
- Cantos – Ex: Operador de Harris
- Curvas
- Específicos por aplicação: Ex: k-curvatura
- Etc
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.
- Detecção: determina a presença ou ausência de uma determinada
classe de objetos na imagem. Ex: braço, mão. As técnicas mais
conhecidas são baseadas em cor e movimento.
- Identificação: determina qual objeto, dentre os conhecidos, está presente na cena. Ex: identificação dos dedos da mão.
- Rastreamento: mantém o foco de objetos em movimento encontrados nos outros passos. Ex: captura das posições dos dedos.
Requisitos Não Funcionais: Latência, Resolução e Estabilidade.
-
Latência: processar as informações de forma que o usuário
não perceba atraso entre sua ação e a ação referente virtual.
Frequência superior a 20Hz.
-
Resolução: deve ser de forma que o usuário tenha a
impressão de continuidade nas suas ações (resolução temporal) e que o
número de pixels (resolução espacial) represente o ambiente visualizado
de forma adequada.
-
Estabilidade: para uma determinada entrada o sistema
possui uma constância nos resultados. Iluminação e ruídos da fonte
coletora podem ser fatores que alteram a estabilidade do sistema.
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:
- Captura de um número de imagens de treino.
- Cálculo de uma imagem média e uma imagem representando o desvio padrão.
- Para cada imagem de treino calcula-se imagens de distorção de brilho e de cor em relação à imagem média.
- É gerada uma imagem de distorção de cor e brilho com base na média quadrática das imagens geradas no passo anterior.
- No final tem-se 4 imagens de referência: imagem média, imagem do
desvio padrão, imagem da distorção de cor e imagem da distorção do
brilho.
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:
- Fundo original (B): se a distorção de cor e brilho são parecidas com seus pares nas imagens de referência.
- Fundo com baixa iluminação ou sombra (S): se a distorção de cor é parecida mas a de brilho é abaixo da imagem de referência.
- Fundo com alta iluminação (H): se a distorção de cor é parecida mas a de brilho é acima da imagem de referência.
- Objeto em movimento (F): se a distorção de cor é maior que o limiar aceito para a imagem de referência.
Algoritmo de Subtração:
- A imagem que contém o objeto é comparada com a imagem da média e de
desvio padrão para gerar uma imagem de distorção de cor e outra de
brilho.
- As imagens geradas são comparadas (subtraídas) com as respectivas
de referência e de acordo com os limiares estabelecidos são
classificadas em um dos grupos F, B, S e H.
- Ao final, é gerada uma imagem apenas com o objeto segmentado
(pontos em sombra ou em alta iluminação são considerados pontos de
fundo para esse trabalho).
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:
- Dilatação: se um ponto faz parte do fundo e um vizinho faz parte do objeto, então esse ponto faz parte do objeto.
- Erosão: se um ponto faz parte do objeto e um vizinho faz parte do fundo, então esse ponto faz parte do fundo.
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:
- É escolhido um ponto qualquer do contorno como ponto inicial do percurso.
- Após isso, utilizando a representação da Lista de Códigos, é escolhido o próximo ponto do contorno para ser armazenado.
- Esse processo se repete até que todos os contornos sejam armazenados.
2.4.2.4 - Seleção da Silhueta da Mão
- Dentre o conjunto de silhuetas encontradas no passo anterior apenas
uma representa a mão detectada na câmera. Como a mão é o elemento mais
representativo da imagem, podemos usar a regra de selecionar como
silhueta da mão a maior lista de códigos.
- Restrição: essa abordagem não permite detectar duas mãos na imagem
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:
- Partindo
do ponto P representativo do dedo, divida k por n, e selecione n pontos
igualmente espaçados a esquerda do ponto P e n a direita.
- Una a parte 1 da esquerda com a primeira parte da direita através de uma linha e ache o ponto médio.
- Repita o processo para as demais partes.
- Trace a melhor reta envolvendo os pontos médio e o ponto de referência P para achar a direção do dedo.
- Θ representa o ângulo entre a direção do dedo e o eixo horizontal da imagem.
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