MAC 5777
Reconhecimento de Objetos por Análise Estrutural e Temporal de Padrões
Relatório Final
Ana Beatriz Vicentim Graciano {abvg@vision.ime.usp.br}
Fabrício Martins Lopes {fabriciolopes@vision.ime.usp.br}
Kleber Iguchi {kleber.iguchi@gmail.com}
Omar Gaudio {omar@ngi.it}
O objetivo deste relatório é documentar os aspectos teóricos e de desenvolvimento, relativos a um sistema de detecção e rastreamento de objetos em vídeos digitais.
A tarefa de detecção de um objeto pode ser vista como a seleção de pixels cujas características sejam semelhantes às do objeto de interesse, de acordo com algum critério, em cada um dos quadros do vídeo digital. Já a tarefa de rastreamento consiste na utilização de informação a respeito de um objeto num dado quadro i para predizer sua possível posição em quadros futuros. É importante notar que as tarefas de detecção e rastreamento estão relacionadas, em muitos casos, podendo auxiliar-se mutuamente.
Em particular, o objeto-alvo do sistema a ser descrito neste documento consiste numa boneca rígida, denominada Miota, com características de cor e forma bastante expressivas, as quais podem ser aproveitadas para sua futura detecção e rastreamento em vídeos digitais obtidos sob diferentes condições. A Miota pode ser observada na Figura 1.

Figura 1 - Boneca (Miota).
A seção 2 apresenta resumidamente a teoria relativa aos métodos adotados e implementados no sistema de detecção, enquanto aspectos de implementação e resultados são comentados na seção 3. Considerações finais e possíveis ampliações deste desenvolvimento são apresentados na seção 4, em seguida na seção 5 são apontadas as principais referências utilizadas.
Podem ser usadas diversas abordagens para a geração um sistema de detecção e rastreamento de objetos, neste trabalho foram estudados quatro métodos distintos propostos na literatura, dos quais três foram adotados para o sistema de rastreamento da Miota aqui proposto.
O primeiro método está baseado na transformada da imagem em características invariantes à escala (SIFT, do inglês Scale Invariant Feature Transform), desenvolvido por Lowe [1], o qual é amplamente difundido para detecção de objetos em imagens estáticas em níveis de cinza, devido à sua robustez em cenas com oclusões parciais ou grandes agrupamentos de objetos diversos. Devido a esse sucesso, surgiu o interesse em utilizá-lo também na detecção de objetos em vídeos digitais.
O segundo método baseia-se no rastreamento de um certo objeto de acordo seu histograma de cor, o qual é obtido inicialmente para um modelo deste objeto e em seguida é usado para detectar o objeto em diferentes quadros do vídeo [2]. A adoção dessa técnica, a qual é apresentada no artigo de Aranda et al., foi com objetivo de usar informação de cor para a detecção do objeto Miota, já que ela apresenta característica de cor bastante particular.
O terceiro método implementado se fundamenta na detecção e rastreamento de um objeto considerando-se complementarmente duas primitivas básicas da imagem: a descrição de seu conteúdo através de pontos de interesse, e a parametrização de seu contorno através de Snakes. Esta metodologia é apresentada no trabalho de Gouet e Lameyre [3], o qual propõe reduzir a área de busca por pontos de interesse à região interna a Snake. Este mesmo trabalho também apresenta a idéia de que os pontos de interesse podem ser usados para estimar o movimento realizado pelo objeto, e esse movimento pode ser aplicado na Snake com objetivo que ela permaneça contornando o objeto de interesse mesmo que ele esteja em movimento.
Foi estudado ainda o trabalho desenvolvido por Shi e Tomasi em [4], no qual é proposto um método para encontrar características confiáveis e rastreáveis ao longo de muitos quadros de um vídeo digital. A idéia é abandonar características que tenham sua medida de dissimilaridade crescente ao longo do vídeo. O trabalho é seminal, no sentido de introduzir a modelagem de movimento através de transformações afins (translação e distorção), e de introduzir uma metodologia para determinar tais transformações entre o quadro inicial e o atual. Além disso, Shi e Tomasi otimizam o rastreador para características com “boas” propriedades de textura, em vez de propriedades tradicionais de borda. Optou-se, porém, por não implementá-lo, por apresentar resultados semelhantes aos propostos por Lowe (apesar de apresentar diferenças de metodologia e implementação).
Nas próximas subseções, as técnicas implementadas serão discutidas com maior nível de detalhamento.
2.1 SIFT - Scale Invariant Feature Transform
O método denominado SIFT (Scale Invariant Feature Transform) desenvolvido por Lowe [1], se baseia numa arquitetura em cascata para a extração de características locais de uma imagem. As principais vantagens deste processo residem nas propriedades de localidade e alta distinção das características locais extraídas de uma imagem, proporcionando robustez à oclusão parcial e à “desordem” (cluter) – pois não há segmentação prévia do objeto –, além de ser possível encontrar essas características em uma grande base de dados contendo as características de diversas imagens distintas.
Outra propriedade deste método é a possibilidade de extração de muitas características, inclusive para objetos pequenos, o que facilita a detecção deste objeto em uma imagem. A apresentação do método no artigo de Lowe aponta que seu desempenho é próximo ao de tempo-real, qualidade altamente desejável quando se tratam de detecção de objetos em vídeos digitais.
Estas características (SIFT) são invariantes a escala e rotação, e parcialmente invariantes a suaves mudanças de iluminação e posição tridimensional da câmera. Esse método pode ser visto como uma transformada da imagem em características locais (relativas a sua vizinhança) invariantes a rotação e escala.
A arquitetura consiste de quatro etapas principais:
1. Detecção de máximos e mínimos locais (Scale-space extrema detection): busca por pontos da imagem que sejam invariantes a escala, usando para isto os pontos extremos da função DoG (Difference of Gaussians) [9], utilizando algumas escalas de suavização entre as imagens.
2. Localização de keypoints (Keypoint localization): cada posição candidata (selecionada pela etapa anterior), é submetida a um ajuste detalhado utilizando Séries de Taylor, com objetivo de localizar a real posição dos extremos e de determinar sua escala. Pontos presentes ao longo da borda e com baixo contraste são removidos nesta etapa.
3. Atribuição de orientação (Orientation assignment): nesta fase é identificada a orientação de cada ponto, baseado em seu gradiente. Esses gradientes são usados para a geração de um histograma de gradientes locais contendo as direções relativas a cada ponto, com objetivo de tornar a detecção invariante também à rotação.
4. Descrição de um keypoint (Keypoint descriptor): São usadas as informações geradas pelas etapas anteriores para criar um descritor local da região a que pertencem os pontos selecionados. Esse descritor é gerado com base em um modelo biológico, e consiste de um vetor de características para cada um dos pontos, robusto a variações significativas de iluminação e de forma (distorção por perspectiva).
A etapa de classificação é realizada utilizando arquitetura supervisionada, o que indica a realização de uma de treinamento para a geração dos vetores de características (SIFT) a partir de imagens de treinamento contendo o objeto-alvo. Estes vetores de características são usados para gerar uma árvore de decisão (BBF, best bin first), a qual decide se um vetor de características extraído das imagens de teste (quadros do vídeo) pertence ou não ao objeto-alvo; tal decisão é tomada por meio da distância euclidiana entre o vetor de características obtido durante o treinamento e o obtido no teste, utilizando também um critério de distância entre o primeiro e o segundo elemento retornado pela árvore de decisão, caso o segundo seja muito próximo ao primeiro, o resultado é descartado tendo em visto que existe uma indecisão na escolha deste elemento.
Ainda no domínio das características, o algoritmo estudado sugere a utilização da Transformada de Hough para agrupamento dos vetores que representam um mesmo objeto-alvo, caracterizando-se assim, a detecção de tal objeto em uma imagem.
Como este método foi originalmente desenvolvido para detecção em imagens estáticas, não se faz uso da informação temporal entre os quadros do vídeo neste trabalho, ou seja, o objeto é detectado quadro a quadro do vídeo.
2.2. Rastreamento de objetos baseado em histogramas de cor
O objeto Miota apresenta características de cor bastante expressivas, traduzidas, sobretudo, pelo tom de rosa de seu vestido, além da cor preta de seu cabelo, e pelos tons de regiões relativas à pele. Logo, seria interessante aproveitar essas informações de cor específicas do objeto no processo de detecção e rastreamento.
Para tanto, foi estudada a metodologia descrita no artigo [2], a qual propõe o uso de histogramas de cor para detectar e rastrear um objeto-alvo através de uma câmera ativa que o mantém sempre centralizado na cena. No entanto, para fins do sistema de rastreamento apresentado neste relatório, a contribuição mais relevante do artigo refere-se ao uso da informação transmitida pelo histograma de cor, não sendo o tipo de câmera um fator restritivo de aplicação do método.
Em termos gerais, o funcionamento da metodologia pode ser subdividido em duas grandes etapas, considerando-se uma imagem-modelo contendo o objeto-alvo e cada quadro capturado digitalmente:
Etapa de aprendizagem supervisionada:
Esta fase consiste na definição do modelo do objeto-alvo que deverá ser rastreado pelo sistema. A imagem-modelo que contém o objeto é utilizada para extrair um blob (por exemplo, um subconjunto de pixels ou um retângulo envolvente) relativo apenas ao objeto. A partir deste blob, são calculados um histograma de cor Hmodel, baseado no modelo de cor RGB, e as seguintes características:
Todos estas características espaciais são usadas para descrever um modelo inicial do objeto-alvo, o qual será considerado pela etapa de rastreamento, explicada a seguir.
Etapa de
rastreamento:
Uma vez conhecido o modelo do objeto-alvo que o sistema deverá encontrar em cada quadro capturado pela câmera, pode-se iniciar o processo de rastreamento. Assim, para cada quadro It, t = 1, ... , N, sendo N o número de quadros a processar, os seguintes passos são realizados:
1. Segmentação do quadro em regiões de objeto ou de fundo, através de retro-projeção de histograma: de acordo com o histograma Hmodel, extraído da imagem-modelo, e um histograma de cor calculado para o quadro inteiro It, também baseado no modelo de cor RGB, é possível detectar regiões de It que tenham grande probabilidade de serem pertencentes ao objeto-alvo;
2. As regiões com grande probabilidade de serem objeto são obtidas do quadro It, definindo um blob a partir do qual são calculadas as mesmas características que foram extraídas na definição do modelo, e um histograma de cor Ht;
3. Adaptação do histograma Hmodel obtido para o modelo,
de acordo com as informações derivadas do quadro atual, para considerar o
dinamismo do vídeo e tornar a metodologia mais robusta a variações de iluminação.
Esse passo é realizado através da aplicação de um Filtro de Kalman que se baseia no histograma Ht observado, resultante do passo 2, e no histograma
esperado Ĥt ,
originando um novo histograma Ĥt+
Através dessas etapas, portanto, é possível detectar e rastrear um determinado objeto utilizando-se informação de cor e algumas características espaciais do objeto na cena.
No entanto, a análise do método apontou sua aplicabilidade para o rastreamento de um único objeto, já que a câmera visa perseguir um único elemento presente na cena. No exemplo apresentado no artigo, o objeto de interesse é bastante distinto dos restantes exibidos no vídeo em geral e também representa uma figura geométrica razoavelmente simplificada (uma espécie de “Y” invertido). Assim, o método pode não ser tão eficaz quando o alvo a ser rastreado for complexo e possuir histogramas distintos de acordo com a visão ou ângulo em que é posicionado, o que exigiria maior cuidado ao se criar o histograma modelo e suas atualizações.
2.3. Rastreamento de objetos baseado em contornos e pontos descritivos
O uso de Snakes [10],[11], é uma técnica amplamente difundida para segmentação, modelagem de formas e rastreamento de objetos em movimento. Os chamados contornos ativos, ou Snakes, foram inicialmente desenvolvidos devido à necessidade de se obter um detector de contornos que dispensasse o uso de conhecimento prévio relativo à forma do objeto a ser segmentado.
A analogia mais difundida desta técnica diz que uma Snake pode ser visualizada como um anel elástico de formato arbitrário que é capaz de se deformar ao longo do tempo, na tentativa de se posicionar o mais próximo possível do contorno do objeto-alvo. Através de um procedimento iterativo, a Snake é atraída em direção ao contorno em razão de diversas forças que controlam o formato e a posição da Snake dentro da imagem em que o objeto se encontra.
Uma Snake pode ser representada, em sua forma mais simples, como uma curva formada por N pontos de controle (xi,yi) conectados por segmentos de retas. Na Figura 2, é exibido um exemplo, no qual N=18.

Figura 2 - Exemplo de contorno ativo formado por seus pontos de controle conectados por segmentos de reta (retirado da referência [12]).
Note que a Snake, por não se tratar de uma abordagem global, mas sim local, depende de interação com o usuário ou com um mecanismo de mais alto-nível de visão computacional para ser inicializada próxima ao objeto de interesse. Supondo que a posição inicial é definida por um agente externo ao seu algoritmo, a Snake se deforma de modo a “aderir” ao contorno saliente mais próximo. A evolução de uma Snake se dá no sentido de minimização de sua função energia ESnake, relativa às forças atuantes no contorno ativo. Esta função possui uma componente interna Einterna, e uma externa Eexterna. A energia interna depende de propriedades intrínsecas da Snake, tais como sua elasticidade e curvatura. A parte externa da energia depende da estrutura da imagem à qual se aplica a Snake, sendo usado normalmente o gradiente da imagem.
A função de energia de uma Snake pode ser definida da seguinte forma:
Note que os parâmetros a, b e g controlam a influência relativa de cada energia mencionada e podem variar ao longo da Snake.
Cada energia representa um propósito:
EElástica: força a Snake a apresentar uma certa “continuidade”; geometricamente, isso significa que cada ponto (xi,yi) tende a ser levado, na iteração seguinte, ao ponto médio entre (xi-1,yi-1) e (xi+1,yi+1). Este comportamento leva a Snake a se contrair a cada iteração. Um exemplo pode ser observado na Figura 3 e uma simulação pode ser observada na Figura 4.

Figura 3 - Exemplo da força elástica que atua sobre um contorno ativo (adaptada da referência [10]).

Figura 4 - Simulação da força elástica que atua sobre um contorno ativo (adaptada da referência [10]).
ECurvatura: força a Snake a assumir uma forma “suave”, pois leva cada ponto (xi,yi) ao ponto médio gerado a partir de seus quatro vizinhos, de forma análoga à força elástica. Observe que quanto maior a curvatura do ângulo cujo vértice é o ponto (xi,yi), maior será o deslocamento deste ponto, fazendo com que a Snake se suavize rapidamente. Um exemplo pode ser observado na Figura 5.

Figura 5 - Simulação da força de curvatura que atua sobre um contorno ativo (adaptada da referência [10]).
EImagem: atrai cada ponto da Snake em direção à borda mais próxima dentro de seu entorno. Este comportamento pode ser obtido forçando-se cada ponto (xi,yi) a deslocar-se em direção à região em seu entorno que apresentar o maior gradiente em níveis de cinza, de forma proporcional a este gradiente. Note que EImagem fica menor à medida que os pontos (xi,yi) se aproximam das bordas presentes na imagem. Um exemplo pode ser observado na Figura 6.

Figura 6 - Simulação da força externa que atua sobre um contorno ativo, usando o gradiente da imagem como energia externa (adaptada da referência [10]).
Nos contornos ativos também são usadas B-Splines ao invés de retas, as quais utilizam muito menos pontos de controle, reduzindo seus graus de liberdade e o custo computacional de seu cálculo.
A abordagem para rastreamento de objetos em vídeos digitais, apresentada no trabalho de Goulet e Lameyre [3], faz uso de uma combinação de dois métodos já amplamente difundidos na literatura: detecção por pontos descritivos (keypoints), e rastreamento de contornos, ou Snakes.
Os autores optam por não utilizar os descritores locais SIFT [1], por serem estes invariantes a diversas transformações. Tal robustez, ao tempo em que os faz eficientes para reconhecimento de objetos em imagens estáticas, implica, naturalmente, em maior custo computacional; portanto não são necessariamente bons candidatos para uso em vídeos digitais, onde quadros consecutivos diferem por pequenas transformações.
Alternativamente, propõe-se o uso de descritores denominados local jets, com invariância restrita a translações e escala (rotação e forma não são contempladas), acrescentados de métodos estatísticos que adicionam a variabilidade gerada pelas pequenas transformações provenientes da diferença entre quadros consecutivos. No entanto, visto que o desenvolvimento do sistema aqui apresentado já considera o uso dos keypoints gerados pelo método SIFT, decidiu-se pela sua utilização dentro deste algoritmo.
O uso de Snakes é uma técnica amplamente difundida para segmentação, modelagem de formas e rastreamento de movimento. Uma Snake pode ser representada, em sua forma mais simples, como uma curva formada por pontos de controle conectados por segmentos de retas. Dada uma posição inicial, a Snake se deforma de modo a “aderir” ao contorno saliente mais próximo. A evolução de uma Snake se dá no sentido de minimização de sua energia ESnake. Esta função possui uma componente interna Einterna, e uma externa Eexterna. A energia interna depende de propriedades intrínsecas da Snake, tais como comprimento e curvatura. A parte externa da energia depende da estrutura da imagem à qual se aplica a Snake. Na prática se utilizam B-Splines, que utilizam muito menos pontos de controle, reduzindo seus graus de liberdade e o custo computacional de seu cálculo.
A descrição de uma dada visão Oi de um objeto em um quadro Fi é feita através do par (Pi,Si), onde Pi é um conjunto de pontos de interesse internos à Snake Si que envolve Oi. A partir da posição inicial S1,inicial – definida no primeiro quadro em que o objeto aparece –, a Snake evolui até S1 através da minimização da energia relativa a S1,inicial. Realiza-se então a extração de pontos de interesse internamente à janela que envolve S1. Para os quadros seguintes Fj, j>i, considerando-se que o objeto continua visível, realiza-se a seguinte seqüência de operações:
Expansão da Snake, D(Sj-1), com uma operação de dilatação;
Extração de pontos de interesse Pj em Fj internos a D(Sj-1);
Casamento de pontos entre o conjunto
Pj
e Pj-
Estima-se a transformação Tj entre Pj e Pj-1, que é usada para estimar de forma criteriosa a atual posição Sj,inicial da snake com Sj, inicial = Tj(Sj-1);
Refina-se Sj,inicial para o quadro atual, obtendo-se Sj;
Desta forma, a cada quadro do vídeo Fj tem-se o par (Pj,Sj) que caracteriza o objeto de interesse Oj. É vantajoso armazenar alguns destes pares para o caso em que o objeto sofra oclusão parcial ou total durante a seqüência de quadros e reapareça alguns quadros depois. Com este objetivo, cria-se uma fila FIFO HD que armazena os últimos D pares (Pi,Si). A última operação da seqüência anterior, então é:
Inserção do par (Pj,Sj) na fila HD (modo FIFO): HDß HD +(Pj,Sj);
Para os quadros seguintes Fj, j>i, nos casos em que o objeto encontrava-se parcial ou totalmente oculto e reaparece, realiza-se a seguinte seqüência de operações:
Extração de pontos de interesse Pj,global relativos a todo o quadro Fj;
Faz-se o casamento entre Pj, global e os Pi
A partir do resultado deste casamento, decide-se se o objeto está na cena ou não. Sendo decidido que o objeto não está na cena, o par (Pj,Sj) não é atualizado e finaliza-se a iteração j. Por outro lado, determinando-se que o objeto está na cena, ainda que parcialmente oculto, seleciona-se o par (Pi,Si) para as próximas operações;
Expansão da Snake, D(Si), com uma operação de dilatação;
Estima-se a transformação Tj entre Pj e Pi, que é usada para estimar de forma criteriosa a a atual posição Sj da Snake com Sj = Tj(Si);
O rastreamento do objeto-alvo através do rastreamento de seu contorno (Snake) integrado com a detecção de pontos de interesse torna o método robusto a grandes oclusões, favorecendo a sua escolha para implementação no sistema aqui apresentado.
3. Sistema desenvolvido e resultados obtidos
Na primeira etapa do desenvolvimento do sistema de detecção e rastreamento de objetos em vídeo digital, os esforços foram concentrados na implementação e nos testes dos métodos descritos nas subseções 2.1 e 2.2. Na etapa seguinte, a partir dos resultados obtidos, foram propostas novas abordagens para os mesmos métodos, enquanto que, paralelamente, foi estudada e proposta a implementação do algoritmo apresentado na subseção 2.3. Os resultados finais de implementação e observações relativas aos mesmos são apresentados nas próximas subseções.
A implementação do método SIFT foi baseada no código disponibilizado por Rob Hess (Oregon State University) [5], o qual foi adaptado para as necessidades do sistema de rastreamento do objeto Miota desejado. Tais adaptações foram feitas com uso da biblioteca OpenCV [6] [7], sob licença de código aberto. Vale ressaltar que havia um erro conceitual no algoritmo de Hess, pois a estrutura kd-tree criada baseava-se na imagem de entrada (teste), ao invés de ser gerada a partir dos modelos de treinamento. O código foi então alterado para criar a kd-tree a partir das imagens de treinamento, o que permitiu um melhor desempenho do algoritmo, tanto em termos de tempo de processamento quanto de qualidade dos keypoints detectados.
Da mesma forma, tanto o método de rastreamento de objetos baseado em retroprojeção de histogramas de cor, quanto o rastreamento fundamentado em Snakes And Points foram igualmente implementados com o uso do OpenCV, seguindo a metodologia apresentada por Aranda et al. [2] e Gouet e Lameyre [3], respectivamente.
Cada um dos métodos foi testado individualmente com diversos vídeos digitais, adquiridos sob condições distintas, e seus respectivos resultados puderam ser analisados. Em caráter complementar, foram realizados testes envolvendo mais de uma metodologia, e seus resultados também são exibidos a seguir.
3.2. Características dos vídeos digitais
Diversos tipos de vídeo digital foram utilizados como entrada para testar o funcionamento dos métodos. Em particular, os testes realizados podem ser categorizados de acordo com:
tipo de câmera: camcorder, câmera fotográfica digital, ou câmera de vigilância;
posição da câmera: fixa ou móvel;
ambiente: externo ou interno, com fundo estático ou dinâmico;
iluminação: natural ou artificial.
Cada vídeo, portanto, foi originado de uma determinada combinação desses elementos. Todos, porém, continham o objeto de interesse, o qual foi submetido a diferentes modificações (rotação, translação, oclusão, mudança de escala, etc.). Os vídeos utilizados estão disponíveis em [8].
Tabela 1 - Relação entre nome e nomenclatura dos vídeos utilizados.
|
Nome do vídeo |
ID do vídeo |
|
V01 |
|
|
V02 |
|
|
V03 |
|
|
V04 |
|
|
V05 |
|
|
V06 |
|
|
V07 |
|
|
V08 |
|
|
V09 |
|
|
V10 |
|
|
V11 |
|
|
V12 |
Descrevem-se a seguir as principais características do conteúdo de cada arquivo:
Tabela 2 - Descrição dos vídeos.
|
ID do vídeo |
Câmera |
Posição da câmera |
Fundo |
Iluminação |
|
V01 |
camcorder |
estática |
estático |
controlada |
|
V02 |
camcorder |
dinâmica |
dinâmico |
controlada |
|
V03 |
camcorder |
dinâmica |
dinâmico |
controlada |
|
V04 |
camcorder |
estática |
estático |
controlada |
|
V05 |
camcorder |
estática |
estático |
controlada |
|
V06 |
câmera digital |
estática |
dinâmico |
natural |
|
V07 |
câmera digital |
estática |
dinâmico |
natural |
|
V08 |
câmera digital |
dinâmica |
dinâmico |
natural |
|
V09 |
câmera digital |
dinâmica |
dinâmico |
natural |
|
V10 |
vigilância LG |
estática |
dinâmico |
controlada |
|
V11 |
vigilância LG |
estática |
dinâmico |
controlada |
|
V12 |
vigilância LG |
estática |
estático |
controlada |
De acordo com o vídeo processado, diferentes resultados foram obtidos da aplicação de cada método. A seguir serão detalhados os resultados de cada método implementado.
3.3. Detecção de objetos usando o SIFT
Para o método SIFT, foi necessário criar algumas imagens-modelos do objeto Miota sob diferentes pontos de vista, com objetivo de realizar a etapa de treinamento. Em geral, foram utilizadas entre 3 e 6 imagens-modelos, retratando visões frontal, lateral e posterior da boneca, bem como algumas rotações. Todas essas imagens-modelos de treinamento representavam apenas o objeto de interesse sobre um fundo de coloração uniforme (branco). Essas imagens estão disponíveis em [8].
Com objetivo de medir quantitativamente os resultados, foi utilizado como medida de detecção da Miota nos vídeos as coordenadas medianas (x,y) dos keypoints e uma distância relativa dR baseada no tamanho das imagens de treinamento. Essas medidas são visualizadas nos resultados (vídeos) por um ponto em branco (mediana) e um retângulo (branco ou verde) envolvendo os keypoints que ficaram dentro da distância dR nos eixos x e y, os quais são plotados em branco ou azul (no caso dos vídeos coloridos); os pontos que ficam a uma distância maior que dR são plotados em preto ou vermelho (no caso dos vídeos coloridos), um exemplo pode ser observado na Figura 7.

Figura 7 - Exemplo de funcionamento e medida de desempenho quantitativa do SIFT.
A medida utilizada para número de acertos e erros é apenas uma aproximação, dado que pontos não pertencentes à Miota podem aparecer dentro do retângulo ou, alternativamente, pontos da Miota ficam fora do retângulo. Observando ainda com mais cuidado, essa medida é válida apenas quando existe um agrupamento de pontos dentro ou fora da Miota; se esta condição não for satisfeita, a medida perde o sentido.
Um comentário geral a respeito dos testes está relacionado ao tipo de compressão da imagem utilizada como modelo e dos vídeos. Inicialmente foram extraídas imagens de treinamento a partir de um frame do vídeo, usando formato jpg. Estas imagens geraram poucos keypoints (aproximadamente 7) e alguns falsos positivos. Em seguida foram extraídas imagens de treinamento do mesmo vídeo, porém usando-se o formato de imagens bmp, e, apenas com essa mudança, o método SIFT passou a reconhecer aproximadamente 70-90 keypoints no vídeo em que a Miota aparece em posições parecidas com as do conjunto de treinamento, logo a perda de informação ao usar formatos compactados de imagens se mostrou muito relevante neste trabalho.
De maneira geral, quando o vídeo apresenta versões da boneca em escalas muito pequenas, o método SIFT encontra poucos keypoints relativos, inclusive determinando vários falsos positivos. Os resultados também apontaram uma grande sensibilidade do método em relação a variações não previstas, o que indica um sucesso de reconhecimento bastante dependente do conjunto de treinamento utilizado.
Tal problema poderia ser suavizado com o aumento do número
de imagens e situações presentes no conjunto de treinamento. No entanto, isso
aumentaria bastante o custo computacional do algoritmo, o qual já é bastante
elevado, tendo se mostrado bastante lento até mesmo para o pequeno conjunto de
imagens de treinamento escolhido (
Este vídeo foi gerado em ambiente interno, com câmera fixa e Miota inicialmente imóvel e em seguida com movimentação pela cena. Para este teste foram usadas cinco imagens de treinamento com diferentes visões.
O método SIFT não apresenta falsos positivos enquanto a Miota não entra na cena. Após sua entrada, a Miota é imediatamente detectada com a grande maioria dos keypoints da cena incidindo no objeto e esse comportamento dura enquanto o objeto não se movimenta.
Ao movimentar-se o objeto, o método passa a apresentar mais pontos de falsos positivos, no entanto só perde a detecção (quando mais da metade dos keypoints estão errados, ocorrem falsos positivos) do objeto em alguns quadros, nos quais existe uma movimentação mais rápida do objeto.
O método teve neste teste um acerto médio de 40 pontos e errou em média 1 ponto por quadro, apresentando um ótimo desempenho. (vídeo com resultado)
Foi realizado outro teste utilizando dez imagens para o treinamento: as cinco iniciais e mais as versões suavizadas dessas cinco imagens (suavização gaussiana, desvio padrão 2).
A inclusão das imagens suavizadas causou o aumento de falsos positivos, inclusive quando a Miota não aparece na cena, e aparentemente não melhorou o resultado obtido anteriormente (a percepção foi de ter inserido ruído nas amostras de treinamento), ao invés disso piorou um pouco. O método teve neste teste um acerto médio de 30 pontos e errou em média 1 ponto por quadro. Seu desempenho foi claramente prejudicado com a inclusão das imagens suavizadas. (vídeo com resultado)
Foram observados 144 quadros do vídeo em ambos os testes.
Este vídeo foi gerado em ambiente interno, com câmera
fixa e Miota em movimento e distante da câmera (apresentando,
portanto, baixa resolução). Para este teste foram usadas cinco imagens de
treinamento com diferentes visões.
O método não tem um bom funcionamento neste caso, a Miota é detectada (mais da metade dos pontos estão nela) apenas em alguns poucos quadros, pois a cena é complexa com vários objetos (cadeiras), incluindo a pessoa que está movimentando a Miota pela cena. Ao se gerar as imagens de treinamento para o SIFT, foi percebida a baixa qualidade (pouquíssima resolução) da Miota, que aparece distante da câmera (visualizando as imagens de treinamento aplicando-se um zoom, parece se tratar de uma borrão cor de rosa -> exemplo).
O método teve neste teste um acerto médio de 2 pontos e errou em média 6 pontos por quadro, apresentando um resultado muito ruim; observa-se ainda que em muitos quadros o retângulo não está sobre a Miota. (vídeo com resultado)
Foi realizado outro teste utilizando dez imagens para o treinamento: as cinco iniciais e mais as versões suavizadas dessas cinco imagens (suavização gaussiana, desvio padrão 2). Porém, não houve melhoria com a inclusão das imagens suavizadas. O método teve neste teste um acerto médio de 1 ponto e errou em média 8 pontos por quadro, apresentando um resultado sensivelmente pior com a inclusão das imagens suavizadas. (vídeo com resultado)
Foram
observados 140 quadros do vídeo em ambos os testes.
Neste vídeo
o objeto de interesse permanece imóvel, apenas com a movimentação da câmera nas
três dimensões. Para este teste foram usadas
seis imagens de treinamento com diferentes visões da Miota.
O método apresenta poucos falsos positivos, principalmente nos quadros que a Miota fica mais distante da câmera (perde resolução), nos quais o método tem a detecção nitidamente comprometida. Nos demais quadros, mesmo com rotação, translação e pequenas variações de profundidade da câmera, a Miota é detectada corretamente.
O método teve neste teste um acerto médio de 15 pontos e errou em média 2 pontos por quadro, apresentando um bom resultado.(vídeo com resultado)
Foi realizado outro teste utilizando dez imagens para o treinamento: as seis iniciais e mais as versões suavizadas de quatro dessas seis imagens (suavização gaussiana, desvio padrão 2). No entanto, não houve melhoria significativa com a inclusão das imagens suavizadas. O método teve neste teste um acerto médio de 14 pontos e errou em média 2 pontos por quadro, piorando levemente o resultado com a inclusão das imagens suavizadas, e aumentando o tempo computacional da execução. (vídeo com resultado)
Foram observados 254 quadros do vídeo em ambos os testes.
Neste vídeo a Miota aparece novamente com baixíssima resolução (longe da câmera) e como no caso 2 o método praticamente não a detecta, tanto nos quadros em que ela permanece imóvel, quanto naqueles em que ela é movimentada na cena. Outra observação importante é que mesmo quando a Miota não aparece na cena são detectados falsos positivos.
Para este teste foram usadas quatro imagens de treinamento com diferentes visões.
O método teve neste teste um acerto médio de 1 ponto e errou em média 2 pontos por quadro, tendo um resultado muito ruim; observa-se ainda que em muitos quadros o retângulo não está sobre a Miota. Em geral a Miota não foi detectada. (vídeo com resultado)
Foi realizado outro teste utilizando oito imagens para o treinamento: as quatro iniciais e mais as versões suavizadas dessas quatro imagens (suavização gaussiana, desvio padrão 2). Não houve, entretanto, melhoria significativa com a inclusão das imagens suavizadas. O método teve neste teste um acerto médio de 1 ponto e errou em média 1 ponto por quadro. Este resultado representa apenas que o método não conseguiu detectar a Miota na cena. (vídeo com resultado)
Foram observados 232 quadros do vídeo em ambos os testes.
Para este teste foram usadas seis imagens de treinamento com diferentes visões.
Neste vídeo a Miota aparece novamente com baixíssima resolução (longe da câmera) e, como nos casos anteriores (2 e 4), o método praticamente não detecta a Miota (e há muitos falsos positivos). Neste vídeo ainda existe uma variação brusca da iluminação – quando a iluminação interna é desligada por alguns segundos –, período em que o método praticamente não detecta a Miota (encontra apenas 1 ponto em alguns quadros), no entanto não apresenta falsos positivos durante o período sem iluminação.
O método teve neste teste um acerto médio de 1 ponto e errou em média 6 pontos por quadro, exibindo um resultado muito ruim; observa-se ainda que em muitos quadros o retângulo não está sobre a Miota.(vídeo com resultado)
Foi realizado outro teste utilizando doze imagens para o treinamento: as seis iniciais e mais as versões suavizadas dessas seis imagens (suavização gaussiana, desvio padrão 2). Não houve, porém, melhoria significativa com a inclusão das imagens suavizadas.
O método teve neste teste um acerto médio de 2 pontos e errou em média 5 pontos por quadro. Novamente o método não conseguiu detectar a Miota na cena. A aparente melhora numérica do método não se reflete na observação visual do resultado, na qual o retângulo fica a maior parte do tempo fora da Miota. (vídeo com resultado)
Foram observados 100 quadros do vídeo em ambos os testes.
A cena neste vídeo é complexa, com folhas, reflexo e variação de iluminação (externa) com a presença de sombras, inclusive com oclusão total e parcial com a retirada da Miota da cena.
Para este teste foram usadas três imagens de treinamento com diferentes visões. O método encontra poucos falsos positivos enquanto a Miota não aparece no vídeo, em média de 10 pontos falsos por quadro.
A Miota é corretamente detectada enquanto permanece imóvel, mas quando é movimentada, ela é parcialmente detectada na maioria dos quadros, ocorrendo a presença também de muitos falsos positivos.
É importante destacar que a complexidade da cena torna a execução do método SIFT sensivelmente mais lenta, isso se deve à quantidade de pontos que são detectados inicialmente na cena, os quais são descartados após a verificação da razão entre as distâncias (no espaço de características) do primeiro ponto e do segundo ponto retornados pelo método. Quando estão muito próximos indicam a indecisão na escolha no ponto e são descartados.
O método teve neste teste um acerto médio de 14 pontos e errou em média 9 pontos por quadro. Seu resultado pode ser considerado regular. (vídeo com resultado)
Foi realizado outro teste utilizando seis imagens para o treinamento: as três iniciais e mais as versões suavizadas dessas três imagens (suavização gaussiana, desvio padrão 2). Com a inclusão das imagens suavizadas o resultado visual melhorou modestamente a detecção da Miota, aumentando um pouco os pontos detectados corretamente. O método teve neste teste um acerto médio de 14 pontos e errou em média 8 pontos por quadro, melhorando discretamente o resultado com a inclusão das imagens suavizadas, inclusive no resultado visual dos vídeos. (vídeo com resultado)
Foram observados 196 quadros do vídeo em ambos os testes.
Este vídeo
foi gerado em ambiente externo com movimentação de folhas ao fundo, reflexo e
variação de iluminação (externa) com a presença de sombras. Para este teste foram usadas três imagens de
treinamento com diferentes visões.
Mesmo antes de a Miota entrar em cena, foram detectados alguns falsos positivos. Após a Miota entrar na cena, ela é devidamente detectada, continuando nesta condição enquanto ela permanece imóvel na cena. O método falha durante a movimentação da Miota, pois passa a detectar muitos falsos positivos, e volta a detectar a Miota apenas quando ela novamente volta a se movimentar vagarosamente e/ou ficar imóvel.
O método teve neste teste um acerto médio de 13 pontos e errou em média 8 pontos por quadro, apresentando um resultado regular. (vídeo com resultado)
Foi realizado outro teste utilizando seis imagens para o treinamento: as três iniciais e mais as versões suavizadas dessas três imagens (suavização gaussiana, desvio padrão 2). Não houve melhoria significativa com a inclusão das imagens suavizadas; aparentemente a percepção é a de que o resultado piorou um pouco. O método teve neste teste um acerto médio de 13 pontos e errou em média 7 pontos por quadro. Melhorando muito pouco o resultado com a inclusão das imagens suavizadas. (vídeo com resultado)
Foram observados
134 quadros do vídeo em ambos os testes.
Este vídeo
foi gerado em ambiente externo com deslocamento do objeto na cena, variando a
iluminação. Para este teste foram usadas quatro
imagens de treinamento com diferentes visões.
Inicialmente o objeto é corretamente detectado, mas ao se movimentar ele deixa de sê-lo e passam a existir muitos falsos positivos. Em alguns poucos quadros em que a Miota aparece focalizada, ela é detectada.
O método teve neste teste um acerto médio de 9 pontos e errou em média 4 pontos por quadro, o que poderia ser considerado um resultado regular, no entanto quando a Miota está em movimento o retângulo poucas vezes fica posicionado em cima dela. Também cabe observar que quando a Miota aparece nítida na cena, existe uma detecção correta de aproximadamente 40~50 pontos, contribuindo para este resultado numérico. Na observação visual o método não detecta a Miota quando ela está em movimento. (vídeo com resultado)
Foi realizado outro teste utilizando oito imagens para o treinamento: as quatro iniciais e mais as versões suavizadas (suavização gaussiana, desvio padrão 2) dessas quatro imagens, mas não houve melhoria no resultado. O método teve neste teste um acerto médio de 9 pontos e errou em média 4 pontos por quadro. Resultado numérico idêntico ao anterior, mas com a mesma avaliação visual descrita acima e com aumento do tempo computacional. (vídeo com resultado)
Foram observados 90
quadros do vídeo em ambos os testes.
Este vídeo foi gerado em ambiente externo mantendo a Miota parada e a câmera em movimento, variando a proximidade e ângulos da câmera com relação à Miota.
Para este teste foram usadas cinco imagens de treinamento com diferentes visões.
Esta é corretamente detectada, salvo em alguns poucos quadros em que são detectados mais falsos positivos que positivos. Quando a Miota aparece com maior resolução (a câmera aproxima-se da boneca), o método apresenta nítida melhoria em sua detecção.
O método teve neste teste um acerto médio de 23 pontos e errou em média 1 ponto por quadro, apresentando um
resultado muito bom. Novamente deve ser observado que em vários quadros o
retângulo não está sobre a Miota (principalmente naqueles com movimentação rápida da
câmera).
Foi realizado outro teste utilizando dez imagens para o treinamento: as cinco iniciais e mais as versões suavizadas cinco imagens (suavização gaussiana, desvio padrão 2) dessas.
O método teve neste teste um acerto médio de 23 pontos por quadro e errou em média 1 ponto por quadro. O
resultado se apresenta numericamente igual ao do teste anterior, não havendo
melhoria com a inclusão das imagens suavizadas. Foram observados 126 quadros do
vídeo em
ambos os testes.
Este vídeo foi gerado em ambiente interno, com fundo dinâmico (projeção “fogo”) e movimentação da Miota na cena. Para este teste foram usadas seis imagens de treinamento com diferentes visões.
Nesse vídeo ocorre o desfoque da Miota na maioria dos quadros, o que deteriora sensivelmente sua detecção pelo método SIFT: a Miota é detectada somente em alguns quadros, nos quais ela aparece focalizada na cena. Nos demais ocorrem poucos falsos positivos.
O método teve neste teste um acerto médio de 4 pontos e errou em média 0 pontos por quadro. Tendo um resultado numérico aparentemente razoável, mas o que se percebe na avaliação visual, é que quando a Miota não está na cena não são detectados falsos positivos e quando ela aparece são detectados pouquíssimos pontos sobre ela e isso ocorre em poucos quadros do vídeo, nos quais a Miota aparece nítida na cena. (vídeo com resultado)
Foi realizado outro teste utilizando nove imagens para o treinamento: as seis iniciais e mais as versões suavizadas de três dessas seis imagens (suavização gaussiana, desvio padrão 2). Aparentemente, houve melhoras na detecção em alguns poucos quadros. O método teve neste teste um acerto médio de 4 pontos e errou em média 0 pontos por quadro. Este resultado numérico não se reflete no resultado visual, o qual permanece da mesma forma como no teste anterior (sem usar as imagens suavizadas). (vídeo com resultado)
Foram observados 72
quadros do vídeo em ambos os testes.
Este vídeo foi gerado em ambiente interno, com fundo dinâmico (projeção “gramado”) e movimentação da Miota na cena. Nesse vídeo ocorre o desfoque da Miota na maioria dos quadros e ela aparece com baixa iluminação (muito escura). O método praticamente não detecta o objeto neste vídeo.
Para este teste foram usadas cinco imagens de treinamento com diferentes visões.
O método teve neste teste um acerto médio de 1 ponto por quadro e errou em média 0 ponto por quadro. Tendo um péssimo resultado. (vídeo com resultado)
Foi realizado outro teste utilizando oito imagens para o treinamento: as cinco iniciais e mais as versões suavizadas (suavização gaussiana, desvio padrão 2) de três dessas cinco imagens. Não houve melhoria com a inclusão das imagens suavizadas. O método teve neste teste um acerto médio de 1 ponto por quadro e errou em média 0 ponto por quadro. Na prática ambos os testes não detectaram a Miota. (vídeo com resultado)
Foram observados 64 quadros do vídeo em ambos os testes.
Este vídeo foi gerado em ambiente interno com iluminação controlada (constante), e representa o “melhor” vídeo em termos de resolução da Miota e de iluminação.
Para este teste foram usadas quatro imagens de treinamento com diferentes visões.
O método não encontra falsos positivos enquanto a Miota não aparece no vídeo, o que tampouco ocorre nos quadros intermediários do vídeo em que ela é retirada de cena. A Miota não é detectada em alguns poucos quadros, nos quais ocorre uma suavização excessiva causada pelo desfoque devido à movimentação rápida da Miota na cena.
O método apresentou desempenho muito bom neste vídeo, com detecções do objeto completo, parcialmente ocluso e em movimento, sem geração de keypoints significativos quando a Miota é retirada da cena.
O método teve neste teste um acerto médio de 72 pontos por quadro e errou em média 2 pontos por quadro,
apresentando um excelente resultado, no qual a Miota é detectada corretamente em praticamente todos os quadros do
vídeo.
Foi realizado outro teste utilizando oito imagens para o treinamento: as quatro iniciais e mais as versões suavizadas (suavização gaussiana, desvio padrão 2) dessas quatro imagens.
Não houve melhoria com a inclusão das imagens suavizadas, aparentemente a percepção é que o resultado piorou um pouco com aumento na detecção de falsos positivos.
O método teve neste teste um acerto médio de 68 pontos por quadro e errou em média 2 pontos por quadro. Este resultado é um pouco pior que no caso anterior, representando mais uma vez que a inclusão das imagens suavizadas não contribuiu na melhoria dos resultados. (vídeo com resultado)
Foram observados 389 quadros do vídeo em ambos os testes.
Observa
O método SIFT se mostrou adequado para oclusão parcial do objeto na cena, nos vídeos que isso ocorreu, o método conseguiu detectar as partes visíveis da Miota na cena.
Porém, quando o objeto de interesse ocorre com baixa resolução na cena, o método SIFT apresenta baixíssima taxa de detecção. Da mesma forma, quando o objeto de interesse é desfocado pela sua movimentação rápida na cena, o SIFT não consegue detectar esse objeto. Outra situação em que o objeto deixa de ser detectado pelo SIFT. É quando há variação brusca de iluminação. Foi observado, além disso, que a resolução do objeto a ser procurado no vídeo tem influência direta no resultado do método.
O número de imagens disponibilizadas para o treinamento parece não interferir nos resultados, o que se percebeu é a necessidade de boas amostras para o treinamento, incluindo diferentes visões em que o objeto aparece no vídeo. Na ausência destes, os resultados são muito pobres, dada a concepção do método utilizado, que está baseado em atributos locais da imagem. De modo geral, a inclusão de imagens suavizadas no conjunto de treinamento não melhorou os resultados.
Como uma forma de evitar a geração de um número excessivo de imagens de treinamento foram gerados testes utilizando um conjunto padrão de treinamento para os vídeos, porém sem sucesso. Os resultados mostraram forte que as imagens de treinamento devem ser muito próximas daquelas que aparecem nos quadros do vídeo.
Foram realizados testes utilizando isoladamente canais de crominância como H e S do modelo de cores HSV e Cr, Cb do modelo YCrCb. Em geral os resultados foram inferiores aos conseguidos utilizando a luminância (Y do modelo YCrCb ou V do modelo HSV ou a média dos canais RGB), no entanto apenas o vídeo mov00016.avi apresentou melhoria ao se utilizar o canal H do modelo de cores HSV, e passou a ter um acerto médio de 25 pontos e errou em média 6 pontos por quadro, resultado muito melhor que utilizando informação de luminância. (vídeo com resultado)
Os espaços de cores utilizados são descritos resumidamente na próxima seção deste trabalho.
Outros testes foram realizados como utilizar o negativo da imagem, equalização do histograma (dos canais de luminância e crominância dos modelos HSV, YCrCb e RGB), mas sem apresentar nenhuma melhora nos resultados obtidos.
Os vídeos utilizados, imagens de treinamento e resultados obtidos podem ser acessados em [8].
3.4. Rastreamento baseado em histograma de cor
As mesmas seqüências de imagens foram utilizadas para testar o método de rastreamento baseado em histograma de cor. Para tanto, foi desenvolvida uma aplicação com auxílio da biblioteca OpenCV para detectar o objeto Miota através de cálculo de retro-projeção de histograma.
Em relação à proposta inicial apresentada no artigo [2], foi decidido adotar diferentes espaços de cores como alternativas ao RGB proposto. Alguns modelos de cores trazem informações mais intuitivas do que o RGB e, portanto, permitem extrair distinguir dados de cor pura de outros elementos como saturação e brilho, ou iluminação. Dessa forma, a etapa de atualização de histograma por filtro de Kalman, que visa acomodar mudanças de leves de iluminação ao longo do vídeo e refletir alterações a respeito do objeto, não foi utilizada, pois a adoção de tais espaços de cores trouxe ganhos em termos de tolerância a variações de iluminação.
Outro fator que levou à não utilização do filtro de Kalman conforme sugerido, foi a possibilidade de perda total do objeto caso este desapareça da cena sob circunstâncias de alteração brusca de iluminação como, por exemplo, pela ausência de iluminação. Nesse caso, se o histograma-modelo for atualizado, haveria perda da informação a respeito do objeto e sua recuperação quando do reaparecimento em cena seria comprometida.
Como características de espaços cromáticos diferentes poderiam contribuir para a geração de histogramas mais representativos do objeto-alvo, testes foram realizados com os seguintes modelos de cor: RGB, HSV, YCrCb e RGCromaticidade. Os canais individuais H, Cr e Cb também foram utilizados separadamente em um grupo de testes.
O
modelo RGB baseia-se
em três cores: “vermelho” (Red), “verde” (Green) e “azul”(Blue). Tal modelo é
baseado no conceito de adição de luz emitida, i.e., a emissão de luz vermelha,
verde e azul, em diferentes quantidades é adicionada para produzir as
diferentes cores do espectro. Na ausência de luz (R = G = B = 0) tem-se a
representação do “preto”, enquanto na presença de luz vermelha, verde, e azul,
nos valores máximos, obtém-se o “branco”.
O espaço RGCromaticidade é um espaço de cores bidimensional derivado do modelo RGB em que informações a respeito de intensidade de cor são descartadas. Nesse modelo, cada pixel está associado a valores que representam as proporções de vermelho, de verde, e de azul existentes numa cor c=(R,G, B). Como as proporções devem totalizar 1, a informação das proporções de dois canais, o R e o G, são suficientes para transmissão de toda a informação sobre as proporções numa dada cor. A conversão do espaço RGB para RGCromaticidade são assim definidas:
R’ = R / (R + G + B) e G’ = G / (R + G + B), se (R, G, B) ≠ (0, 0, 0)
R’ = G’ = 1/3, c.c.
Note que, a partir dessas definições, não é possível distinguir se uma cor representada por proporções iguais de vermelho e verde é um tom de cinza, branco ou preto.
Embora não haja informação a respeito de intensidade nesse modelo, o mesmo pode ser útil em aplicações de rastreamento baseadas em cores em que, por exemplo, um objeto de interesse é iluminado irregularmente por uma fonte de luz. No entanto, se a iluminação existente nas cenas for diversa e proveniente de fontes de luz diferentes, tal modelo ainda será suscetível a erros.
Já o
modelo HSV (Hue-saturation-value,
também chamado HSB, de hue-saturation-brightness)
é baseado em três sensações de cor: a matiz (hue) corresponde à “cor pura”; a saturação (saturation) indica a “diluição” da cor
por branco (quanto maior a saturação, mais próxima da cor pura está a cor
observada); o brilho (brightness) indica se a
cor é escura ou não (uma cor com brilho igual a zero corresponde ao preto). As
características desse modelo, portanto, são mais intuitivas do que a do modelo
aditivo RGB, pois se baseiam em sensações de cores mais próximas da experiência
humana.
Para converter
uma imagem RGB no formato HSV, são utilizadas as seguintes transformações:
V = máximo(R,G,B)
S = (V - mínimo(R,G,B))/V, se V ≠ 0,
0, c.c
H = 180 + (B - R)*60/S, se V = G
240 + (R - G)*60/S, se V = B
(G - B)*60/S, se V = R
Finalmente, o modelo YCrCb (ou YCC) é comumente usado pela maioria dos formatos normativos de compressão de imagens digitais ou sistemas de vídeo, como JPEG e MPEG. Tal modelo deriva de outro conhecido por YUV (comumente usado em transmissão comercial de TV colorida), alterando-se uma variação de escala e de posição para cada cor. O modelo YCC é caracterizado pelo componente Y, ou luma, correspondente ao brilho, e pelos componentes Cb e Cr, ou chroma, que descrevem as informações de cor (crominância). Tais informações de cor são subamostradas para reduzir taxas de transmissão de sinais, enquanto o componente de brilho é amostrado para preencher toda a gama de valores de brilho. A motivação para essa compactação dos dados provém da constatação de que a visão humana é mais propensa a detectar alterações de intensidade do que mudanças de matiz ou saturação.
A conversão do espaço RGB para o YCC é definida da seguinte maneira, para imagens com pixels de 8 bits de profundidade:
Y <- 0.299*R + 0.587*G + 0.114*B
Cr <- (R-Y)*0.713 + 128
Cb <- (B-Y)*0.564 + 128
Metodologia
De modo geral, cada seqüência de imagens foi processada segundo os passos descritos a seguir. Em primeiro lugar, um histograma-modelo foi derivado com base numa imagem-modelo, contendo apenas a Miota e um fundo facilmente removível (monocromático), e que fora previamente convertida para o espaço de cor desejado e restrita à região da imagem-modelo contendo pixels de objeto (sem informações de fundo).
Em seguida, o vídeo de interesse foi processado: cada quadro foi convertido para o mesmo espaço de cor do modelo e o par (histograma-modelo, quadro), submetido ao algoritmo de retro-projeção de histograma do OpenCV. A imagem de retro-projeção obtida representa probabilidades ou freqüências dos valores dos pixels da imagem de entrada incidirem no histograma-modelo. Essa imagem foi então equalizada para fins de visualização dos resultados. Portanto, pontos mais claros (branco) estão associados a pixels com alta probabilidade de ser objeto, enquanto os mais escuros (pretos) associam-se a baixas probabilidades.
Há duas opções de cálculo de retro-projeção de histograma na biblioteca OpenCV: cvCalcBackProject e cvCalcBackProjectPatch.
A primeira função consiste na associação entre o valor de um único pixel do quadro ao bin de tal valor no histograma-modelo. Desse modo, a imagem de retro-projeção representa um mapa probabilístico das freqüências de uma dada cor da entrada no modelo. No entanto, os resultados foram pouco satisfatórios, mesmo com o uso de modelos diferentes de cor, já que a detecção de falsos positivos era considerável. Tal fator deve-se à existência de pixels de cores semelhantes às da Miota por toda a cena, o que se reflete na retro-projeção mesmo com a aplicação de canais específicos como o H ou modelos de cores como RGCromaticidade, YCrCb e HSV. No caso do modelo RGB, testado na primeira fase deste projeto, os resultados foram ainda piores, com maior sensibilidade à ruídos.
Na fase final do projeto, a função cvCalcBackProjectPatch também foi utilizada. Esta realiza a retro-projeção de histograma atribuindo a um pixel de saída o resultado das seguintes etapas calculadas sobre uma subjanela (patch) do quadro de entrada:
entrada: imagens = vetor dos canais de interesse do quadro do vídeo
patch = tamanho de uma sub-janela (largura, altura)
Hm = histograma-modelo de cor
para todo (x,y) em imagens
se ((x+patch.largura-1, y+patch.altura-1) está inteiramente
contido em imagens)
calcular o histograma Hsub dos pixels abaixo da sub-janela
normalizar Hsub, para que a soma de seus bins tenha valor 1.
comparar Hsub normalizado com Hm de acordo com um método pré-definido (Correlação, Intersecção, Chi-quadrado)
armazenar o valor obtido na imagem de saída, na posição(x,y)
Portanto, a correlação entre cada histograma calculado para uma sub-janela e o histograma-modelo define um mapa de probabilidades das sub-regiões serem semelhantes a alguma parte do histograma-modelo de referência. Neste caso, como são comparadas informações sobre um conjunto de pixels do quadro e os do modelo, os resultados são muito superiores em termos de qualidade e exclusão de ruídos.
Idealmente, a sub-janela deveria possuir o mesmo tamanho da imagem de referência que gerou o histograma-modelo (em média, 125 x 300 pixels). Porém, na prática, a escolha de janelas maiores do que 3x3 ocasiona um acréscimo considerável no tempo de processamento, tornando inviável a aplicação das mesmas em vídeo. Portanto, apenas janelas de tamanho 3x3 foram utilizadas. Em termos de qualidade, a diferença de precisão dos resultados de retro-projeção entre janelas pequenas e grandes é considerável, mas a diferença em tempo de processamento torna inviável a aplicação de janelas grandes ao processamento de vídeo.
O número de canais componentes da imagem de entrada também aumenta linearmente o tempo de processamento do algoritmo de retro-projeção baseado em patch. Por exemplo, adotando-se uma sub-janela de tamanho 3x3, se a imagem possuir apenas 1 canal, o tempo consumido para seu processamento foi de aproximadamente 3 segundos. Para dois canais, esse valor sobe para 6 segundos e, para três, 9 segundos.
Testes e resultados
A análise dos resultados foi realizada de acordo com o desempenho da adoção dos diferentes modelos de cor e como esses afetam a qualidade da retro-projeção obtida (quantidade de pixels classificados corretamente como pertencentes à Miota ou a elementos do fundo da cena em cada vídeo).
De maneira geral, os resultados obtidos mostraram que a segmentação por retro-projeção apresenta resultados razoáveis para detectar o objeto de interesse, principalmente quando se usa espaços de cores capazes de separar informação sobre brilho, luminosidade e pureza de cor. Nesses casos, o uso dos canais relativos à crominância ou à cor pura mostraram os melhores resultados, os quais são detalhados a seguir.
Configuração
dos testes:
Cada vídeo foi submetido às funções de cálculo de retro-projeção citadas anteriormente, adotando-se todos os modelos de cor desejados: HSV, YCrCb e RGCromaticidade, além dos canais individuais H, Cr e Cb. Testes com os canais S, V e Y apenas também foram realizados, mas a informação que carregam (brilho, saturação ou luminosidade) não derivaram resultados de boa qualidade.
Para criar o histograma-modelo, foi utilizada uma única imagem de referência relativa a e extraída de cada vídeo, exceto para os vídeos mov00015.avi e mov00016.avi, em que a imagem de referência adotada provem do vídeo mov00017.avi. Essa exceção foi proposital para avaliar o comportamento da retro-projeção e dos espaços de cores quando modelo e entrada não têm necessariamente as mesmas características.
Modelos de
cor HSV, RGCromaticidade e YCrCb:
A utilização de tais modelos de cor em sua totalidade (todos os canais) mostrou-se razoável na prática apenas para a função cvCalcBackProject. Em particular, o espaço HSV produziu, na maioria dos vídeos, a melhor detecção da Miota. A utilização de quaisquer desses modelos, no entanto, proporcionou a detecção do vestido da boneca, falhando na detecção de sua cabeça e cabelo.
Para a função cvCalcBackProjectPatch, o uso de todos os canais de dados ocasionou um acréscimo considerável na lentidão do processamento, proporcional ao número de canais do modelo, o que inviabilizou a completude dos testes para os espaços HSV e YCrCb. Porém, essa limitação de números de canais não caracteriza um problema, já que grande parte da informação relevante a respeito de cor pode ser extraída de canais individuais das imagens.
Execuções com o espaço RGCromaticidade foram viáveis, mas os resultados obtidos não foram melhores do que os extraídos de um único canal. De maneira geral, poucos pontos da retro-projeção foram atribuídos a uma alta probabilidade de ser Miota.
Para entender esse resultado, é preciso
compreender o processo de comparação de histogramas feito pelo OpenCV através do
método de correlação entre histogramas de mesmas dimensões e com igual número de
intervalos. Cada intervalo "i" do histograma de um quadro (Hinput) é comparado
ao respectivo intervalo no histograma modelo (Hmodel) e a correlação entre ambos
os histogramas é dada por:

ou
correl = 1, se denominador < 2.2204460492503131e-016 (valor muito próximo de 0)
Se um patch deriva um histograma em que
praticamente apenas um intervalo é representativo e, simultaneamente, tal
intervalo está associado a uma grande incidência no histograma-modelo, então a
correlação resultante é alta de acordo com tal expressão, pois correl = 1 nesse
caso. Porém, se o patch gera um histograma mais "distribuído" em diferentes
intervalos, a correlação resultante pode ser reduzida.
Uma análise da representação dos canais R e G dentro do espaço RGCromaticidade
mostra que é possível observar os detalhes no vestido da boneca mesmo após a
conversão dos dados. Logo, patches sobre o vestido da Miota serão representados
por histogramas mais distribuídos e sofrerão do problema supracitado. No
entanto, nas pequenas sub-regiões mais uniformes da boneca (por exemplo, entre
as listas brancas do vestido), os histogramas de patches são mais condensados
(aproximadamente um único intervalo representativo) e geram pontos na
retro-projeção com maiores intensidades. Porém, os pontos que derivam tais
patches não são numerosos, o que explica o número reduzido de pontos com alta
probabilidade na imagem de retroprojeção.
Canais
individuais H, Cr/Cb:
- Canais Cr e Cb:
Os resultados para os canais Cr e Cb foram bastante variáveis de acordo com o
vídeo, mas, de modo geral, os blocos de pixels classificados como Miota, assim
como no caso dos testes com o espaço RGCromaticidade, não eram tão densos, fato
que exigiria maior grau de pós-processamento para agrupar regiões e obter um
blob do objeto de interesse. Novamente, a explicação para tal fenômeno detectado
nas imagens de retro-projeção de histograma para os canais Cr e Cb é similar ao
explicado para o modelo RGCromaticidade.
Para o vídeo mov00015.avi, não
foi possível encontrar a Miota, possivelmente devido ao modelo ser distinto do
vídeo e à baixa qualidade desse último. Já no caso dos vídeos
mov00016.avi e
mov00017.avi, os pontos
detectados foram muito poucos, mas sempre incidiam sobre a Miota, o que torna a
utilização de tais pontos interessante, por exemplo, para determinar um fecho
convexo dos mesmos e utilizar a região interna como sendo o objeto.
- Canal H:
A análise dos resultados obtidos com esse canal indicou um acerto muito grande
na detecção da Miota, sob diferentes circunstâncias e com poucos falsos
positivos em geral nos vídeos em que o modelo utilizado provém do próprio vídeo
sob análise, um exemplo deste resultado pode ser observado na Figura 8.
Diferentemente dos demais espaços de cores, a imagem referente à matiz não
apresenta grandes diferenças de valores ao longo do vestido da Miota, encobrindo
os detalhes existentes no mesmo. Assim, o número de pixels da entrada que geram
patches com distribuição concentrada em um intervalo é muito maior e, portanto,
o número de pontos na imagem de retro-projeção correspondentes a altas
probabilidades é bastante superior aos demais casos.

Figura 8 - Exemplo detecção (em vermelho) da Miota pelo método de retro-projeção do histograma, observando o canal H do modelo HSV.
- Observações gerais:
Nos vídeos processados com modelo criado a partir de outro vídeo, há uma maior
incidência de falsos positivos ou um menor número de pontos detectados sobre a
Miota.
Como no caso dos espaços de cores completos, poucos vídeos processados com os
canais individuais conseguiram detectar a parte superior da Miota (cabeça e
cabelo). Isso foi possível apenas no caso do vídeo
mov00017.avi, filmado sob
iluminação controlada e com aplicação de movimentos regulares ou observação do
objeto em poses estáticas.
Os vídeos contendo os resultados discutidos nesta seção
estão disponíveis em
http://www.vision.ime.usp.br/
Sift e
retroprojeção de histograma:
Embora a retro-projeção de histograma possa detectar com certa precisão o objeto Miota, o processo de rastreamento pode ser beneficiado pelo acoplamento entre esse método e o SIFT, por exemplo.
Para isso, a imagem resultante da retro-projeção foi utilizada para gerar uma máscara de restrição de regiões do quadro de entrada sobre as quais o algoritmo SIFT deveria ser aplicado.
Os resultados dessa junção trouxeram o benefício de redução do tempo de processamento do SIFT, devido à detecção e cálculo de keypoints numa região restrita do quadro de entrada, e a quantidade de keypoints detectados apenas sobre a Miota foi muito mais freqüente do que nos testes com a aplicação do SIFT somente. Isso se deve ao menor conjunto de dados em que o algoritmo SIFT se baseia para calcular os keypoints e, dessa forma, o casamento entre keypoints do quadro de entrada e os do treinamento tende a ser mais preciso, pois possíveis falsos positivos já teriam sido descartados na etapa de segmentação do quadro de entrada com base na retro-projeção.
Outra utilização conjunta do algoritmo SIFT e de retro-projeção foi realizada tomando-se os resultados de cada um dos métodos, i.e., keypoints classificados como pertencentes à Miota e imagem de retro-projeção, e combinando-os num classificador representado por uma combinação linear:
para cada keypoint com coordenadas (x, y)
se o respectivo valor de pixel na imagem de retro-projeção for igual a 255
selecionar keypoint
c.c descartar keypoint
Esta última junção
entre os dois métodos permitiu a eliminação de grande parte dos pontos
classificados como falsos positivos pelo SIFT somente. Porém, não foi possível
favorecer a classificação correta de pontos da Miota quando o SIFT falhava
em encontrá-los, os vídeos contendo os resultados dos testes estão disponíveis
em
http://www.vision.ime.usp.br/
3.5. Rastreamento baseado em contornos e pontos (SAP - Snakes And Points)
Como dito anteriormente, o algoritmo aqui implementado segue a idéia principal de combinar contornos ativos e pontos de descrição do objeto-alvo, através do uso de Snakes com a opção de se associá-las ao SIFT. Em um primeiro momento, realizaram-se testes somente com o método de Snakes para rastreamento da Miota, um exemplo pode ser observado na Figura 9. Depois, realizou-se uma bateria de testes para a verificação dos resultados de esforços conjuntos de Snakes e SIFT. Como a descrição de cada seqüência de vídeo já foi detalhada, se apresentarão a seguir somente os resultados do método.
As Snakes utilizadas aqui foram definidas como apresentado na seção 2.3, assim foram realizados testes exaustivos para definição dos valores dos parâmetros a, b e g . Os melhores resultados foram obtidos com os seguintes valores: a = 0,01, b = 0,03 e g = 0,06, e podem estão disponíveis em resultados Snakes.
Somente Snakes:

Figura 9 - Exemplo do uso da Snake (contorno vermelho) para detectar a Miota.
A snake adere bem na Miota em cenas estáticas, e chega a um bom equilíbrio. Mas assim que a Miota é movimentada, a snake fica incapaz de acompanhar o movimento.
Os movimentos do objeto-alvo são muito rápidos, e a snake não alcança uma performance satisfatória.
Os movimentos da câmera atrapalham muito o desempenho das Snakes. A Snake converge, mas quando seu tamanho se torna menor, os bruscos movimentos da câmera levam a snake a encolher ainda mais, eventualmente colapsando em um ponto.
Comparado com os outros vídeos, o resultado deste é
surpreendentemente bom. A snake tem dificuldade em convergir porque a Miota é
muito pequena, mas eventualmente converge, e consegue acompanhar boa parte dos
pequenos movimentos.
De forma semelhante ao vídeo anterior, pequenos
movimentos são acompanhados relativamente bem. Porém, quando é apaga a luz, a snake se
torna incapaz de seguir bordas.
O fundo irregular externo inutiliza a snake
implementada; esta acha bordas na cena de fundo e é incapaz de aderir corretamente
ao contorno da Miota.
Um pouco melhor, mas basicamente como anterior.
Este apresenta o mesmo problema dos dois vídeos
anteriores, mas fica ainda pior porque os movimentos da Miota são muito rápidos.
A snake aparentemente tenta convergir para o contorno da Miota,
mas os movimentos bruscos da câmera inutilizam os esforços de convergência da snake.
O fundo irregular, móvel e de baixo contraste leva a snake a
entrar em colapso em um único ponto rapidamente, independentemente da presença
ou não da Miota.
Neste caso, a snake acha bordas inexistentes no fundo (projeção
“gramado”), e não consegue aderir ao contorno da Miota.
A Snake funciona muito bem, aderindo satisfatoriamente na Miota, e apresentando relativa robustez às rotações da mesma. A forma fica levemente distorcida durante a rotação, mas assim que a Miota fica novamente parada, a Snake é capaz de recuperar um contorno satisfatório.
A segunda bateria e testes utilizando conjuntamente os métodos SIFT e Snakes são resumidamente comentados a seguir. Um exemplo de seu funcionamento pode ser observado na Figura 10.
Snakes e SIFT:

Figura 10 - Exemplo do uso do SIFT (pontos azuis e retângulo verde) e Snake (contorno vermelho) para detectar a Miota.
O resultado é satisfatório, o SIFT funciona bem e a snake é
ajudada pelo SIFT quando os movimentos se tornam mais rápidos.
O SIFT funciona mal, detectando erroneamente posições
da Miota na maioria dos quadros, e isso inutiliza o algoritmo
das Snakes, pois elas estão exatamente baseadas nas posições
detectadas pelo SIFT.
Neste caso o SIFT ajuda um pouco as Snakes,
mas estas ainda têm dificuldade em achar corretamente as bordas, provavelmente
devido à má qualidade do vídeo e ao fundo complexo (cadeiras, mesas) que
atrapalham.
O SIFT apresenta desempenho sofrível na detecção da Miota,
que é pequena demais, ocasionando queda de desempenho das
Snakes.
O resultado, em geral, é ruim.
Como o anterior, mas ainda pior quando a luz é apagada.
Mesmo nos momentos em que o SIFT detecta corretamente
a Miota, a snake não é capaz de achar o contorno devido à extrema
irregularidade do fundo.
Mesmo nos momentos em que o SIFT detecta corretamente
a Miota, a snake não é capaz de achar o contorno devido à extrema
irregularidade do fundo.
O SIFT funciona mal, o fundo é irregular, e os
movimentos são rápidos. De conseqüência
as Snakes tornam-se imprestáveis.
O SIFT ajuda bastante, mas mesmo assim movimentos
rápidos e fundo irregular tornam insatisfatório o comportamento da snake.
O SIFT funciona mal, deteriorando consequentemente o
desempenho das Snakes também.
O SIFT funciona mal, deteriorando consequentemente o
desempenho das Snakes também.
Ambos os métodos funcionam bastante bem, graças à boa
qualidade da imagem, que ajuda o SIFT, e aos movimentos relativamente simples e
ao fundo quase uniforme, que ajudam as Snakes.
Tabela 3 - Resultados práticos das implementações.
|
ID do vídeo |
1. SIFT |
2. Snakes |
3. Histogram Backprojection |
|
V01 |
bom |
bom |
bom |
|
V02 |
ruim |
ruim |
ruim |
|
V03 |
bom |
ruim |
ruim |
|
V04 |
ruim |
bom |
ruim |
|
V05 |
ruim |
regular |
ruim |
|
V06 |
regular |
ruim |
ruim |
|
V07 |
regular |
ruim |
ruim |
|
V08 |
ruim |
ruim |
ruim |
|
V09 |
regular |
ruim |
ruim |
|
V10 |
ruim |
ruim |
ruim |
|
V11 |
ruim |
ruim |
ruim |
|
V12 |
bom |
bom |
bom |
Resumidamente, o método SIFT mostrou-se robusto para detecção de pontos do objeto Miota em determinadas circunstâncias, produzindo os melhores resultados quando o conjunto de treinamento caracterizava diversas situações presentes no vídeo. No entanto, o custo computacional do algoritmo mostrou-se muito elevado, sendo muito lento para processar alguns poucos segundos de vídeo digital.
Uma forma de lidar com essa limitação é restringir a região dos quadros do vídeo que será analisada pelo SIFT. Isso pode ser feito segmentando-se a priori possíveis regiões relativas a um objeto e, então, aplicando-se o algoritmo sobre essas áreas pré-selecionadas. Essa técnica foi avaliada aproveitando-se a segmentação obtida a partir da retroprojeção de histograma.
Quanto ao método baseado em histograma de cor, foram aplicados diferentes modelos cromáticos e alguns canais individuais extraídos dos mesmos para distinguir melhor as propriedades de cor do objeto Miota em relação às dos demais elementos presentes na maioria das cenas.
Além disso, o cálculo da retroprojeção de histograma que se baseia em Hmodel e no histograma de cor HI,t do quadro inteiro It define uma razão Hmodel/HI,t que permite definir a probabilidade de um pixel pertencer ao objeto de interesse ou ao fundo, dada uma certa cor. Esse fato pode ser usado para criar um classificador de Bayes:
P(miota|cor) < P(fundo|cor) => fundo, e P(miota|cor) >= P(fundo|cor) => Miota.
Reordenando, essas inequações podem ser vistas como:
P(fundo|cor) < L e P(miota|cor) >= L.
Assim, através de um limiar L estipulado, pode-se decidir qual razão indica se o pixel será considerado como pertencente à Miota ou ao fundo. Ainda dentro desse contexto, é possível assumir certas distribuições de probabilidade, e calculá-las diretamente para cada pixel, classificando-o então como objeto ou fundo.
Finalmente, é interessante utilizar os resultados de detecção obtidos tanto pelo SIFT, quanto pelo histograma de cor, para que a classificação final de um dado pixel (objeto-alvo ou fundo) resulte de uma combinação linear de ambos os classificadores.
Com relação ao método de Snakes implementado, fundos irregulares e movimentos rápidos do objeto-alvo ou da câmera deterioram sensivelmente o desempenho do algoritmo implementado, fazendo com que a snake se perca ou não convirja para o contorno desejado. Em condições estáticas e com fundo regular, no entanto, a snake funciona muito bem.
Uma das razões para a snake funcionar mal em casos em que aparentemente o contraste é bom, como nos vídeos V6 e V7 (ver Tabela 1), é o fato de a snake utilizar a imagem em níveis de cinza, que não apresenta as mesmas sutilezas de um modelo de cor de 3 canais, por exemplo.
Para melhorar o comportamento do algoritmo, seria necessária uma implementação mais elaborada, possivelmente utilizando modelos de forma, mas mesmo assim, a snake poderia não ser capaz de rastrear movimentos rápidos.
Já no momento em que se combinam os métodos de contornos ativos e SIFT (seguindo a idéia básica de Snakes And Points), é importante observar que quando o SIFT funciona mal, o comportamento da snake é deteriorado pelas informações errôneas fornecidas pelo SIFT. Ao contrario, quando o SIFT funciona bem e o fundo é simples e uniforme, o SIFT ajuda bastante as Snakes nos movimentos rápidos.
Em termos gerais, para deixar as
Snakes evoluírem o suficiente a
cada quadro, o custo computacional torna-se extremamente alto. Acrescentando-se
este fato ao custo computacional já alto do SIFT, pode-se concluir que a
combinação dos dois métodos não é eficiente para rastreamento
[1] D.
Lowe. Distinctive image features from
scale-invariant keypoints. In International
Journal of Computer Vision, volume 20, pages 91–110, 2003.
[2] J. Aranda, J. Vergés-Llahí and A.
Sanfeliu. Object tracking system using colour histograms. In Proceedings of the IX Symposium on Pattern Recognition and Image
Processing, pages 225–230, 2001.
[3] V.
Gouet and B. Lameyre. SAP: A robust
approach to track objects in video streams with Snakes and Points. In British Machine Vision Conference, 2004.
[4] J.
Shi and C. Tomasi. Good Features to
Track. In IEEE Conference on Computer
Vision and Pattern Recognition, pages 593-600, 1994.
[5] R. Hess. SIFT Feature Detector. In http://web.engr.oregonstate.edu/~hess/, acessado em 30/03/2007.
[6] OpenCV . In http://sourceforge.net/projects/opencvlibrary/, acessado em 30/03/2007.
[7] OpenCV. In http://opencvlibrary.sourceforge.net/, acessado em 30/03/2007.
[8] Vídeos da Miota. http://www.vision.ime.usp.br/~fabriciolopes/mac5777/videos_miota/, acessado em 25/06/2007.
[9] K. Castleman. Digital Image Processing. Prentice Hall, 667 pages, 1996.
[10] D. Young. Active Contour Models. http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/YOUNG/vision7.html, acessado em 25/06/2007.
[11] A. Blake and M. Isard. Active Contours. http://www.robots.ox.ac.uk/~contours/, acessado em 25/06/2007.
[12]
T. Cootes. Notas de aulas.
http://www.isbe.man.ac.uk/~bim