Segmentação, Indexação e Recuperação de Vídeo Utilizando...

21
Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV Thiago Teixeira Santos Carlos Hitoshi Morimoto 1 Resumo: Os constantes avanços em poder de processamento, capacidade de armazenamento, e largura de banda tornaram possível ao usuário de com- putadores o acesso, manipulação e edição de imagens e vídeos digitais. Nesse tutorial, vamos descrever alguns algoritmos de visão computacional para a seg- mentação, indexação e recuperação de vídeo utilizando o OpenCV para que, ao final do tutorial, você seja capaz de desenvolver suas próprias ferramentas de visão computacional para processamento de vídeo. Conhecimentos sobre visão computacional e experiência em programação utilizando a linguagem C++ são desejados para um melhor aproveitamento do conteúdo desse tutorial. Abstract: Constant advancements in processing power, larger storage ca- pacity and higher bandwidth available at lower cost, have made it possible to everyone to access, edit, and manipulate digital images and video. In this tuto- rial we present a few computer vision algorithms for video segmentation and indexing based on visual content using OpenCV. By the end of this tutorial, you will be able to develop your own computer vision tools for video proces- sing. Previous knowledge of computer vision and programming experience in C/C++ is required to take full advantage of this tutorial. 1 Introdução Esse texto foi preparado para servir de material de apoio ao mini-curso ofe- recido no IV Workshop de Visão Computacional realizado em novembro de 2008 na Universidade Estadual Paulista em Bauru, estado de São Paulo, e é baseado na dis- ssertação de mestrado de Thiago Teixeira Santos [14]. O objetivo desse trabalho é introduzir conceitos sobre segmentação e indexação de vídeo, necessários para que possamos a seguir desenvolver alguns algoritmos simples de processamento de vídeo usando o OpenCV. Alguns desses algoritmos serão descritos em detalhes durante o mini-curso e podem ser encontrados em [14]. 1 Instituto de Matemática e Estatística, USP {hitoshi,[email protected]}

Transcript of Segmentação, Indexação e Recuperação de Vídeo Utilizando...

Page 1: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de VídeoUtilizando OpenCV

Thiago Teixeira SantosCarlos Hitoshi Morimoto 1

Resumo: Os constantes avanços em poder de processamento, capacidadede armazenamento, e largura de banda tornaram possível ao usuário de com-putadores o acesso, manipulação e edição de imagens e vídeos digitais. Nessetutorial, vamos descrever alguns algoritmos de visão computacional para a seg-mentação, indexação e recuperação de vídeo utilizando o OpenCV para que, aofinal do tutorial, você seja capaz de desenvolver suas próprias ferramentas devisão computacional para processamento de vídeo. Conhecimentos sobre visãocomputacional e experiência em programação utilizando a linguagem C++são desejados para um melhor aproveitamento do conteúdo desse tutorial.

Abstract: Constant advancements in processing power, larger storage ca-pacity and higher bandwidth available at lower cost, have made it possible toeveryone to access, edit, and manipulate digital images and video. In this tuto-rial we present a few computer vision algorithms for video segmentation andindexing based on visual content using OpenCV. By the end of this tutorial,you will be able to develop your own computer vision tools for video proces-sing. Previous knowledge of computer vision and programming experience inC/C++ is required to take full advantage of this tutorial.

1 Introdução

Esse texto foi preparado para servir de material de apoio ao mini-curso ofe-recido no IV Workshop de Visão Computacional realizado em novembro de 2008 naUniversidade Estadual Paulista em Bauru, estado de São Paulo, e é baseado na dis-ssertação de mestrado de Thiago Teixeira Santos [14]. O objetivo desse trabalho éintroduzir conceitos sobre segmentação e indexação de vídeo, necessários para quepossamos a seguir desenvolver alguns algoritmos simples de processamento de vídeousando o OpenCV. Alguns desses algoritmos serão descritos em detalhes durante omini-curso e podem ser encontrados em [14].

1Instituto de Matemática e Estatística, USP{hitoshi,[email protected]}

Page 2: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV

1.1 Processamento de vídeo digital

Quando assistimos a um programa em vídeo (como TV, cinema, etc), nossosolhos recebem estímulos visuais (imagens) a uma taxa rápida o suficiente para quepercebamos objetos em movimento. Cada imagem estática corresponde a um quadrono vídeo. Um vídeo é tipicamente composto por 30 quadros por segundo, ou 1800quadros por minuto, ou 108 mil quadros por hora. Esse grande volume de dados éum dos motivos que torna essa área de pesquisa tão desafiadora.

Com a popularização do vídeo digital (veja http://www.youtube.com porexemplo), novas aplicações que exijam a sua manipulação, busca e navegação, de-mandam uma nova estrutura para esta mídia. Tradicionalmente em mídias analógi-cas como fitas de vídeo-cassete, a única forma disponível de navegação é a seqüen-cial. Com o armazenamento do vídeo em computadores, formas mais sofisticadas deacesso se tornaram possíveis. O Moving Picture Experts Group (MPEG), ao criar o pa-drão MPEG-4, em 1998, apresentou uma decomposição do conteúdo audiovisual emobjetos de mídia que podem ser combinados e reutilizados de formas diferentes emaplicações distintas.

Posteriormente, em 2001, o grupo apresentou seu novo padrão MPEG-7, for-malmente chamado Multimedia Content Description Interface. O padrão acrescentamecanismos de anotação para descrever formas, cores, texturas e movimento presen-tes no vídeo. Mais do que isso, o MPEG-7 permite a estruturação de diversos ele-mentos espaço-temporais em relações de antes/depois, à frente/atrás, acima/abaixo,parte/todo.

Para possibilitar novas formas em seu envio, consulta e consumo, o vídeo digi-tal deve estar estruturado. Considere, por exemplo, um sistema de busca em acervosde vídeo digital, como mostrado na Figura 1. A estruturação incrementa a eficiên-cia dos extratores de características pois estes não necessitam mais efetuar processa-mento quadro-a-quadro. A própria estrutura em si pode conter também característi-cas de interesse, para responder questões como:

• Quais os segmentos que compõem a primeira cena do filme?

• Onde mais se encontra este personagem?

• Quais os segmentos filmados neste cenário?

Assim, torna-se necessário definir uma unidade para a decomposição do vídeoque leve a uma estrutura útil às várias possíveis aplicações.

2 RITA • Volume X • Número 1 • 2008

Page 3: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV

Figura 1. Um sistema para recuperação de conteúdo em vídeo digital.

1.2 Estruturação e tomadas

Além dos quadros, a tomada é outra estrutura importante do vídeo. Uma to-mada2 é uma seqüência de quadros que mostra uma ação contínua no tempo e noespaço. Cenas são obtidas pela combinação de várias tomadas e delas obtem-se ovídeo completo, como ilustra a Figura 2. A transição de uma tomada para a seguintepode ser feita através da simples concatenação de quadros ou da aplicação de efeitosmais complexos de edição, como dissoluções e fades, que sobrepõem segmentos dasduas tomadas na forma de uma passagem gradual de uma para a outra, como vistona Figura 3.

As tomadas são as estruturas com a mais fina granularidade em relação à uni-dade de ação, sendo a base para a maioria dos sistemas para segmentação e sumariza-ção de vídeo [11, 8]. De modo similar à decomposição de texto em seções, parágrafose frases, a divisão de vídeo em tomadas pode ser utilizada para a indexação de vídeoe construção de sumários, promovendo formas eficientes de busca e navegação.

Além de navegação e busca, várias outras aplicações podem se beneficiar daestruturação por tomadas. Ferramentas automáticas e semi-automáticas para colori-zação de vídeos em preto e branco podem associar mapas de cores distintos à tomadasdiferentes, agilizando o trabalho dos editores. A restauração de vídeos antigos podeser auxiliada de forma semelhante, reaproveitando conteúdo e configurações entretomadas similares [8].

2Utilizaremos “tomada” neste trabalho como tradução do termo “shot”.

RITA • Volume X • Número 1 • 2008 3

Page 4: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV

Figura 2. Estruturação de vídeo, como visto em Lienhart et al. [11].

1.3 Sumarização e indexação

Grandes quantidades de informação, como as disponíveis em vídeo (e em acer-vos de vídeo) necessitam de técnicas eficientes de navegação e busca. A navegaçãoexige uma exibição sucinta e representativa do conteúdo do material, como os sumá-rios utilizados em livros e revistas. Já a busca se beneficia da construção de índicesque referenciem de modo apropriado os elementos desejados.

Uma forma de representar segmentos do vídeo é a utilização de um ou maisquadros-chaves. Considere como exemplo a Figura 4. Se desejamos obter um sumário

Figura 3. Uma transição gradual (dissolução) em Airline Safety and Economy(disponível via The Open Video Project [13]).

4 RITA • Volume X • Número 1 • 2008

Page 5: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV

visual conciso do vídeo em questão, podemos admitir que há grande redundânciaentre os quadros da seqüência, de modo que um único deles poderia representar demodo satisfatório todo o conteúdo do segmento para fins de navegação.

Devido a sua unidade em termos de tempo e espaço, uma tomada é adequadanão só à procura de quadros chaves como também para a construção de mosaicos. Mo-saicos gerados por técnicas como strip pasting, a partir dos quadros de uma tomada,podem representar, em uma única imagem, toda a ação contida em um segmento dovídeo.

Quadros-chaves e mosaicos podem ser utilizados na criação de índices, atravésda extração de características de imagem, como cor, textura e forma. Já as tomadassão adequadas para a extração de características envolvendo movimento.

Sistemas complexos para problemas de detecção de padrões, como reconheci-mento de faces, podem se beneficiar dessas representações sucintas do conteúdo eter seus desempenhos incrementados, pois podem operar em uma massa menor dedados, como visto anteriormente na Figura 1.

1.4 Organização deste trabalho

A próxima seção descreve algoritmos de segmentação de vídeo, em particular,para a detecção de cortes. A forma de avaliação desses algoritmos é apresentada naSeção 3, e a Seção 4 apresenta características utilizadas para a detecção de cortesentre tomadas de vídeo. A Seção 5 discute como definir o limiar para otimizar adetecção de cortes e a Seção 6 introduz o problema de indexação e recuperação devídeo a partir de conteúdo visual, e ilustra uma possível aplicação baseada em filtrospara detecção de faces. Algoritmos para o processamento de vídeo em OpenCV sãodescritos na Seção 7. A Seção 8 conclui esse tutorial.

2 Segmentação de Vídeo

O problema de segmentação de vídeo em tomadas (shot boundary detection) éum passo importante para sua estruturação e para a análise de eventos. A passagemde uma tomada para outra representa uma troca de contexto essencial se estamosinteressados, por exemplo, na construção de uma imagem panorâmica, no estudo datrajetória de um objeto ou qualquer outra análise dependente de unidade temporale/ou espacial.

Podemos representar um vídeo digital como uma seqüência V = 〈q1, q2, ..., qn〉composta por quadros qi, imagens de resolução M × N . Ele é obtido pela monta-

RITA • Volume X • Número 1 • 2008 5

Page 6: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV

Figura 4. Tomada de Airline Safety and Economy.

6 RITA • Volume X • Número 1 • 2008

Page 7: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV

gem de várias tomadas em um processo de edição, onde cada par consecutivo detomadas é separado por uma transição. Pode-se representar uma transição Ti entreduas tomadas consecutivas Si e Si+1 por um par de índices (s, t), s < t, tais queSi = 〈..., qs−1, qs〉 e Si+1 = 〈qt, qt+1, ...〉, como exibido na Figura 5.

A forma mais simples de transição entre duas tomadas consecutivas é o corte,onde t = s + 1, ilustrado na Figura 6. Já as transições graduais ocorrem quandot > s + 1, onde os quadros no intervalo entre s e t são editados, formados por umacomposição dos quadros originais das duas tomadas em questão. É o que ocorre entreas tomadas S2 e S3 na Figura 5.

Figura 5. Montagem de um vídeo a partir de quatro tomadas.

Figura 6. Um corte em Challenge at Glen Canyon (disponível via The Open VideoProject [13]).

Transições graduais obtidas pela manipulação das cores ou da intensidade lu-minosa dos quadros de duas tomadas sucessivas são chamadas transições cromáticas

RITA • Volume X • Número 1 • 2008 7

Page 8: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV

[7]. Nesta categoria, os efeitos de edição mais largamente utilizados são os fades (di-minuição progressiva da luminosidade nos quadros) e as dissoluções (transformaçãogradual de uma tomada para a seguinte). Além das cromáticas, as transições gradu-ais podem ser espaciais como em wipes, onde uma cena é deslocada espacialmentepara a entrada da próxima cena. Dada a complexidade para detecção de transiçõesgraduais, nesse tutorial trataremos apenas de cortes.

2.1 Análise do problema

Hanjalic [8] apresenta uma análise do problema de delimitação de tomadas.A base para a resolução do problema reside no fato que quadros em torno de umatransição geralmente apresentam uma mudança significativa em seu conteúdo visual.O processo de detecção consiste no reconhecimento de descontinuidades no fluxo doconteúdo visual da seqüência de vídeo.

Toma-se uma característica do conteúdo visual dos quadros que será utilizadacomo base para o método, junto a uma métrica para mensurar a variação zl(i) =z(qi, qi+l) dessa característica entre dois quadros qi e qi+l, onde l ≥ 1 é uma distânciainter-quadros (um passo). Cada zl(i), 1 ≤ i ≤ n, é comparado por um detector a umlimiar K(i), decidindo-se assim se qi consiste ou não em um limite de uma tomada.O Algoritmo 1 a seguir sumariza o processo:

Algoritmo 1 (Determinação de descontinuidades) Dada uma seqüência de vídeo V =〈q1, q2, ..., qn〉, encontra uma seqüência de transições T = 〈T1, T2, ..., Tv〉 em V .

D1. [Inicialize.] Atribua i← 1, T ← 〈〉.

D2. [Calcule a variação.] Faça o processamento adequado dos quadros qi e qi+l ecalcule zl(i).

D3. [Obtenha o limiar.] Calcule K(i).

D4. [Excedeu?] Se zl(i) > K(i), adicione a nova transição T = (i, i+ l) a T e atribuai← i+ l + 1. Vá para D6.

D5. [Incremente i.] Atribua i← i+ 1.

D6. [Fim do vídeo?] Se i ≥ n, o algoritmo termina. Caso contrário, volte a D2.

A maioria dos algoritmos apresentados pela literatura são variações do Algo-ritmo 1, sobretudo em relação ao parâmetro l e as funções d(qi, qj) e K(i). Para o

8 RITA • Volume X • Número 1 • 2008

Page 9: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV

sucesso do Algoritmo 1, o par característica/métrica utilizados em zl(i) deve ser tãodiscriminante quanto possível. Seja R̄ o intervalo mínimo de valores tal que zl(i) ∈ R̄para todo i onde qi e qi+l estão dentro de uma mesma tomada. Analogamente, seja Rum intervalo mínimo de valores tal que zl(i) ∈ R para todo i onde qi e qi+l estão emtomadas diferentes. A função zl(i) é tão discriminante quanto menor for a intersecçãoentre R e R̄, como indicado na Figura 7. Uma grande intersecção torna-se fonte defalsos positivos e falsos negativos durante a fase de detecção, degenerando a qualidadeda solução.

Figura 7. Intervalos R e R̄ e a desempenho da detecção [8].

2.2 Fatores extremos

As maiores diferenças no conteúdo visual de quadros em uma mesma tomadasão causadas principalmente por movimentações de objetos, movimentação da câ-mera e mudanças de iluminação. Características e métricas muito sensíveis a esseseventos terão uma grande sobreposição dos intervalos R e R̄ (R̄ se expande). Se zl(i)pudesse ser construída sobre características e métricas robustas em relação a essesfatores, não só a interseção R∩ R̄ seria pequena, mas também tería-se intervalos con-sistentes mesmo em vídeos de natureza diferente. Um filme de ação ou um vídeo cliptem níveis maiores de movimentação e alteração de luminosidade do que um dramaou uma entrevista. Dizer que os intervalos são consistentes significa desempenho si-milar em vídeos diferentes sem a necessidade de ajustes manuais ou qualquer outraintervenção humana [8].

Porém, grandes alterações na luminosidade da tomada ou casos extremos de

RITA • Volume X • Número 1 • 2008 9

Page 10: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV

movimentação de objetos e câmera são situações difíceis mesmo para um par carac-terística/métrica robusto. Tais situações, combinadas às descontinuidades sutis nastransições graduais, requerem o uso de algum conhecimento extra para uma melhoriana desempenho do detector.

Várias informações extras podem auxiliar um detector. Conhecimento sobre ospadrões assumidos por zl(i) durante um corte ou seu comportamento no decorrer defades ou dissoluções são dados que podem ser utilizados na etapa de decisão para evi-tar falsas conclusões. No caso de dissoluções, por exemplo, Yeo e Liu [18] mostraramque, para l suficientemente grande, o gráfico de zl(i) assume a forma de um trapéziodurante uma dissolução, o que os autores chamam de “platôs”.

Além da análise de descontinuidades, há outras informações que podem au-xiliar na detecção e na determinação da natureza de uma transição. Alattar [1] ob-servou que a variância da luminosidade dos quadros assume um padrão parabólicodurante uma dissolução. Já Guimarães et al. [6] mostraram que há uma contraçãonos histogramas de luminosidade durante fades. Há, também, certas informações apriori que podem ser utilizadas sem qualquer análise dos quadros da seqüência devídeo. Vasconcelos e Lippman [15, 16] embutiram seu detector com informação so-bre a duração das tomadas. Imediatamente após o final de uma tomada, uma novatransição tem poucas chances de ocorrer. Contudo, a probabilidade de ocorrênciade uma transição vai aumentando conforme o tempo passa. Tal idéia é retomada naabordagem probabilística de Hanjalic [8].

3 Avaliação de desempenho

O sucesso de um delimitador de tomadas é medido pela acurácia com que eleidentifica os extremos qs e qt de uma transição. As medidas de cobertura e precisão3,comumente utilizadas na área de recuperação de informação, são utilizadas como in-dicadores da qualidade da solução dada por um delimitador contra uma solução idealanotada por um observador humano. Sua função é mensurar a quantidade de falsosnegativos e falsos positivos em uma solução proposta, ou em outras palavras, avaliara proporção de transições reais perdidas e falsas transições inseridas por engano dodetector.

Considere Tcorte = {T1, T2, ..., Tm} o conjunto de cortes reais existentes em umaseqüência de vídeo V (obtido por um avaliador humano ou através do esquema ori-ginal de edição). Seja T̄corte = {T̄1, T̄2, ..., T̄p} o conjunto de cortes T̄i encontrados pelo

3Os termos “cobertura” e “precisão” serão utilizados aqui no lugar das palavras inglesas “recall” e “precision”respectivamente.

10 RITA • Volume X • Número 1 • 2008

Page 11: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV

delimitador para V . A cobertura R, utilizado para avaliar a solução em relação afalsos negativos, é definido para cortes como

Rcorte =|Tcorte ∩ T̄corte||Tcorte|

. (1)

Para avaliar o número de falsos positivos da solução, utilizamos a precisão P,definida por

Pcorte =|Tcorte ∩ T̄corte||T̄corte|

(2)

4 Características e métricas

Como visto na Seção 2.1, utiliza-se uma medida de variação do conteúdo visualentre dois quadros como base para a detecção de transições. Diversas medidas forampropostas na literatura, baseadas em características espaciais (pixels, super-pixels ebordas), características de cor e na estrutura da compressão MPEG.

4.1 Domínio espacial: comparação pixel a pixel

A comparação direta entre os pixels correspondentes de dois quadros qi e qjfoi uma das primeiras características exploradas na literatura. Uma das métricas maissimples é dada por

zpixel(qi, qj) =1

MN

M∑x=1

N∑y=1

| qi[x, y]− qj [x, y] |, (3)

para quadros em níveis de cinza ou, de forma equivalente,

zpixel(qi, qj) =1

MN

∑c∈{R,G,B}

M∑x=1

N∑y=1

| qi[x, y, c]− qj [x, y, c] | (4)

para quadros coloridos (no caso, no domínio RGB).

Infelizmente, tal métrica é incapaz de discernir entre uma pequena mudançaem uma grande área dos quadros e uma grande alteração em uma pequena área, oque a torna muito sensível à movimentação de objetos e da câmera [9]. Devido a

RITA • Volume X • Número 1 • 2008 11

Page 12: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV

isso, Nagasaka e Tanaka [12] e Zhang et al. [20] propuseram considerar apenas ospixels onde a alteração de valor fosse considerável:

dpixel(p1, p2) ={

1 se |p1 − p2| > kpixel,0 caso contrário. (5)

zpixel(qi, qj) =1

MN

M∑x=1

N∑y=1

dpixel( qi[x, y], qj [x, y] ), (6)

onde p1 e p2 são valores em níveis de cinza (entre 0 e 255) e kpixel um limiar fixado(a extensão para quadros coloridos decorre de forma análoga). Esta métrica é capazde filtrar alterações irrelevantes entre pixels mas ainda é muito sensível aos fatoresextremos, sobretudo movimentação.

4.2 Domínio espacial: blocos

Buscando utilizar informação local para incrementar a robustez da métrica emsituações de movimento, alguns autores substituiram a comparação entre pixels pelacomparação de blocos de pixels, que dividem o quadro em regiões retangulares demesmas dimensões e sem sobreposição entre si. Shahraray propôs a soma ponderadadas diferenças entre blocos correspondentes:

zbloco(qi, qj) =B∑b=1

cb dbloco(qi[b], qj [b]), (7)

onde dbloco mede a diferença entre dois blocos. Kasturi e Jain [10] assumem cb = 1para todos os blocos e fazem uso da verossimilhança da seguinte forma:

λ( qi[b], qj [b] ) =[σ

2(qi[b])+σ2(qj [b])

2 + (µ(qi[b])−µ(qj [b])2 )2]2

σ2(qi[b]) · σ2(qj [b]), (8)

dbloco( qi[b], qj [b] ) ={

1 se λ(bu, bv) > kλ,0 caso contrário. (9)

onde σ2(q[b]) e µ(q[b]) são, respectivamente, a variância e a média da intensidadeluminosa no bloco q[b]. Comparada a diferença pixel a pixel, esta métrica conseguereduzir o número de falsos positivos devido a sua tolerância a movimentos lentos decâmera e/ou objetos [20]. Contudo, pode gerar falsos negativos quando blocos muitodiferentes têm probabilidades com funções de densidade similares, além do fato que

12 RITA • Volume X • Número 1 • 2008

Page 13: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV

os cálculos envolvidos nas equações 3.6 e 3.7 tornam muito lenta a computação damedida [20, 17, 5].

Xiong et al. [17] estudaram como uma amostragem baseada em blocos poderiaimpactar a eficiência da segmentação. Eles argumentam que o tamanho do blocotem estreita relação com a robustez do método a movimentações: quanto menor obloco, mais ele se aproxima da comparação entre pixels e torna-se mais sensível a taiseventos. A partir dessa observação, os autores definem os blocos como quadrados delado 2δ, onde δ é o máximo movimento, em pixels, entre duas imagens. Eles alegamque, na prática, δ = 10 é uma estimativa que leva a bons resultados. Isto garanteque, não havendo uma transição abrupta, ao menos um quarto dos pixels de blocoscorrespondentes são iguais. A similaridade entre os blocos é mensurada através de

dbloco(q1[b], q2[b]) ={

1 se |µ(q1[b])− µ(q2[b]) | > kbloco,0 caso contrário. , (10)

onde µ(q[b]) é a média da intensidade luminosa no bloco q[b] e kbloco um limiar (aequação 3.8 pode ser vista como generalização da equação 3.3). A diferença é dadapor

zbloco(qi, qj) =1|Bs|

∑b∈Bs

db(qbi , qbj) , (11)

sendo Bs uma amostra do conjunto blocos B. Os autores provam que o desempenhoda medida degenera muito pouco com a amostragem, podendo Bs ser consideravel-mente menor que o conjunto de todos os blocos B.

4.3 Domínio espacial: bordas

Zabih et al. [19] propõem uma métrica baseada nos conceitos de pixel de bordaentrante4 e pixel de borda ausente5. Um pixel de borda entrante entre dois qi e qj é umpixel (x, y) de borda de qj que não possua um correspondente em uma vizinhança deqi(x, y). Similarmente, um pixel de borda ausente é um pixel (x, y) de bordas de qique não possua um correpondente em uma vizinhança de qj(x, y).

Mais formalmente, seja fi a imagem binária obtida pelo detector de bordasde Canny aplicado a qi. Seja também f̄i a imagem binária obtida pela dilataçãomorfológica de fi por um elemento estruturante (um “diamante” de altura e larguraigual a 2r + 1 pixels). Define-se daí a fração de pixels ausentes, ρout, por

4Do original entering edge pixel.5Do original exiting edge pixel.

RITA • Volume X • Número 1 • 2008 13

Page 14: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV

ρout(qi, qj) = 1−∑x,y fi(x+ δx, y + δy) · f̄j(x, y)∑

x,y f(x, y). (12)

Analogamente, obtem-se a fração de pixels entrantes, ρin, por

ρin(qi, qj) = 1−∑x,y f̄i(x+ δx, y + δy) · fj(x, y)∑

x,y f(x+ δx, y + δy). (13)

Os valores δx e δy são inteiros que representam uma translação que alinhe qi eqj , obtidos por algoritmos de compensação de movimento. A partir daí, tem-se umanova métrica, a fração de bordas alteradas zρ, dada por

zρ(qi, qj) = max( ρout(qi, qj), ρin(qi, qj) ). (14)

A detecção de transições realizada pelos autores baseia-se nos padrões assu-midos por ρin e ρout entre quadros sucessivos ao longo da seqüência de vídeo. Cortesapresentam picos em ρin e ρout. Fades-in apresentam valores crescentes de ρin ao longodo tempo, o mesmo ocorrendo de modo análogo com fades-out e ρout. Dissoluções sãomarcadas por valores crescentes de ρout e um pico de ρin e ρout na metade da transição,seguida por valores decrescentes de ρin.

4.4 Domínio de cores: histogramas

Uma das características mais utilizadas na literatura é o histograma de inten-sidade luminosa. O histograma de um quadro qi em níveis de cinza no intervalo[0, L − 1] é um vetor hi[l] = nl onde l é o l-ésimo nível de cinza e nl o número depixels na imagem que apresentam tal valor. Os elementos hi[l] são comumente cha-mados bins. Baseando-se nessa característica Nagasaka e Tanaka [12] e Zhang et al.[20] propõem o uso da diferença entre histogramas bin-a-bin

zh(qi, qj) =L−1∑l=0

|hi[l]− hj [l] |. (15)

Ao tratarem-se de quadros coloridos, há várias alternativas. Uma delas éreduzí-los a quadros em escala cinza. De acordo com o padrão de vídeo NTSC:

l = 0, 299R+ 0, 587G+ 0, 114B (16)

14 RITA • Volume X • Número 1 • 2008

Page 15: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV

.

Contudo, há várias formas para a construção de um histograma de cores.Zhang et al., por exemplo, utilizam um código para cada cor obtido tomando-se osdois bits mais significativos das componentes básicas R, G e B. Com esse código c, avariação por histograma pode ser calculada através de

zh(qi, qj) =64∑c=1

|hi[c]− hj [c] |. (17)

Há opções a diferença bin-a-bin. Nagasaka e Tanaka sugerem o uso do χ2 comomedida, revista posteriormente por Gargi et al. [5]:

zχ2(qi, qj) =

{ ∑Ll=1

(hi[l]−hj [l])2

hj [l]se hj [l] 6= 0,∑L

l=1(hi[l]−hj [l])

2

hi[l]caso contrário.

(18)

Contudo, de acordo com os testes de Zhang et al. e Gargi et al., o χ2 não possuidesempenho melhor que a de zh 15, sendo ainda mais sensível às várias formas demovimentação. Por outro lado, Gargi et al. identificam em seus testes um melhordesempenho da medida dada pela intersecção de histogramas, definida por

z∩(qi, qj) = 1−L∑l=1

min(hi[l], hj [l]). (19)

Quadros díspares podem ter histogramas similares, o que seria uma possívelfonte de falsos negativos6. Histogramas são mais robustos à movimentação de objetossobre um fundo constante do que as métricas em domínio espacial, mas permanecemsensíveis à movimentação de câmera.

5 Limiarização e detecção

A forma mais comum de delimitação de tomadas é utilizar o Algoritmo 1 coml = 1 e K(i) = kcorte para todo i. Em outras palavras, calcula-se a variação entre todoquadro qi e seu sucessor imediato qi+1, obtendo-se assim um sinal (Figura 8) que éposteriormente limiarizado frente a uma constante kcorte, um limiar global para todo ovídeo.6A ocorrência de tais eventos é, felizmente, pouco freqüente.

RITA • Volume X • Número 1 • 2008 15

Page 16: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV

Figura 8. Gráfico i× zh(qi, qi+1) de um segmento de Airline Safety and Economy.

Embora seja uma solução razoável para a detecção de cortes, tal detector nãotem um comportamento adequado com relação às transições graduais. A região entreos quadros 4500 e 4525, referente a uma dissolução em Airline Safety and Economy,ilustra a situação: um limiar global sobre o sinal poderia não identificar a transição,de valores menores se comparados aos cortes em 4875, 4935 e 5028, ou ainda declararcomo corte cada ponto da transição.

6 Indexação e Recuperação de Vídeo

A busca por conteúdo visual em repositórios de vídeo digital é realizada atravésde anotações na forma de texto, realizadas manualmente. Porém, não é sempre queessa informação se encontra disponível e, mesmo quando ela existe, em geral ela éincompleta e inexata para uma grande variedade de buscas. Por exemplo, buscaspodem ser bem genéricas como “cenas de praia”, ou específicas como “PresidenteLula surfando no Guarujá”.

Como as informações visuais podem ser difíceis de serem expressadas em pa-lavras, alguns sistemas propoem o uso de exemplos na forma de imagens ou esboços.Outros sistemas propoem o uso de filtros para a detecção de objetos específicos quepermitiriam a construção de perguntas com conteúdo semântico mais elevado. Nessetrabalho, vamos introduzir um sistema de indexação automática de vídeo utilizandofaces. Aplicações semelhantes foram sugeridas em [3, 4]

A Figura 9 ilustra uma possível interface para um sistema assim. Essa inter-face é constituída por 3 partes. A primeira parte (P1), presente no canto superioresquerdo, permite a visualização das faces encontradas no vídeo. A segunda parte(P2), no canto superior direito, permite a visualização de um vídeo, e a terceira parte

16 RITA • Volume X • Número 1 • 2008

Page 17: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV

(P3), localizada na parte inferior da interface, mostra os quadros-chave que repre-sentam todas as tomadas extraídas do vídeo. As tomadas estão organizadas de formacronológica, sendo possível dessa forma visualizar o vídeo como um todo na formade um mosaico de quadros-chave. Ao se clicar em um quadro-chave em P3, o vídeopassa a ser exibido em P2 a partir dessa tomada. Ao se clicar em uma face em P1, astomadas que contem aquela face são realçadas com uma borda em vermelho. Dessaforma é possível visualizar todas as personagens de um vídeo em P1, saber em quetomadas elas aparacem, e facilmente acessar qualquer tomada de interesse.

Figura 9. Interface de um sistema para indexação e recuperação de vídeos baseadoem faces

7 Implementação dos Algoritmos usando OpenCV

O OpenCV (Intel Open Source Computer Vision Library) é uma biblioteca de có-digo aberto (open source) desenvolvida pela Intel em C/C++ que implementa váriasrotinas populares para o processamento de imagens e algoritmos de visão computa-

RITA • Volume X • Número 1 • 2008 17

Page 18: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV

cional. O código, documentação e instruções para instalação do OpenCV podem serobtidos em http://sourceforge.net/projects/opencvlibrary.

O OpenCV pode ser utilizado para a construção de um sistema para busca erecuperação de vídeo baseado em faces como descrito na seção anterior. Para isso,vamos utilizar o seguinte esqueleto de programa para detectar os cortes e as facescontidas em um arquivo de vídeo:

1 int main( int argc, char** argv ) {2 CvCapture* capture = 0;3 IplImage *frame[2] = {0,0};4 int i = 0;5 cvNamedWindow("Video Window", 1);6 if (argc == 2)7 capture = cvCaptureFromFile ( argv[1] );8 else9 printf("Usage: %s %s\n", argv[0], "video_file_name");

1011 while (cvGrabFrame( capture)) {12 frame[i%2] = cvRetrieveFrame( capture );13 cvShowImage("Video Window", frame[i%2]);14 if(shotBoundary(frame)) storeCut(i);15 if (detectFaces(frame[i%2])) storeFaces(frame[i%2], i);16 i++;17 }18 cvReleaseCapture( &capture );19 return 0;20 }

Esse esqueleto está bastante simplificado para facilitar sua leitura e entendi-mento, e não mostra, por exemplo, itens importantes como os protótipos das funções,include files, e testes de consistência dos ponteiros capture e frame devolvidos pelasfunções.

O programa recebe o nome de um arquivo de vídeo, que corresponde ao pa-râmetro argv[1] definido pelo usuário na linha de comando. Caso o número deparâmetros não seja correto, o programa fornece uma mensagem de erro ao usuário.

A função cvCaptureFromFile prepara um arquivo de vídeo para ser proces-sado. Ela é bastante similar a função cvCapture, que prepara a captura de vídeo apartir de uma câmera. A função cvGrabFrame captura uma imagem (do arquivo oucâmera), que é acessada pela função cvRetrieveFrame. Essas duas funções per-mitem que o OpenCV capture imagens rapidamente. A função cvNamedWindow cria

18 RITA • Volume X • Número 1 • 2008

Page 19: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV

uma janela de nome “Video Window” e cvShowImage mostra a imagem capturadaem frame[i%2] na janela. Todas essas funções para captura e exibição de ima-gens estão definidas no pacote highgui.h do OpenCV. Você pode usar uma estrutrasimilar para desenvolver suas próprias ferramentas.

Observe que a variável i é utilizada para contar o número de quadros proces-sados até o momento. Quando o quadro é par, ele é armazenado em frame[0] e,quando é ímpar, ele é armazenado em frame[1]. A função shotBoundary recebeesses 2 quadros e verifica se existe um corte entre eles. Em caso afirmativo, o quadroatual é marcado como o início de uma nova tomada e o quadro anterior como o fimda tomada anterior pela função storeCut.

Finalmente a função detectFaces verifica se há faces no quadro capturadoe, em caso afirmativo, chama a função storeFaces que organiza as faces em cadaquadro para que possam ser utilizadas pela interface.

Mais detalhes sobre as funções detectFaces e shotBoundary estão dispo-níveis em http://www.ime.usp.br/˜hitoshi/wvc08. A função detectFacesé baseada no exemplo fornecido como parte da documentação do OpenCV, que de-tecta faces utilizando filtros de Haar em cascata. Já a função shotBoundary é umaversão muito simplificada do programa desenvolvido na dissertação de mestrado dis-ponível em [14].

As estruturas a serem utilizadas pela interface definiram o que as funçõesstoreCut e storeFaces devem realizar, e não são tratadas nesse tutorial.

8 Conclusão

Nesse trabalho foram descritos alguns algoritmos básicos para segmentação,indexação e busca automática de conteúdo visual em vídeo. Primeiramente foramintroduzidos algoritmos para dividir o vídeo em seqüências de quadros com conti-nuidade temporal, conhecidas como tomadas. As tomadas podem ser utilizadas parasimplificar o processamento, o acesso, e a visualização do vídeo. A indexação de con-teúdo visual, que tipicamente é feita de forma manual, pode ser automatizada coma utilização de filtros, como descrevemos em [2]. Introduzimos uma ferramenta queilustra o grande potencial de aplicações que integrem a visualização, busca e manipu-lação de vídeo utilizando apenas um filtro para detecção de faces. Finalmente suge-rimos um esqueleto de programa para o processamento de vídeo usando OpenCV. Osalgoritmos apresentados aqui são de certa forma simples e serve apenas para intro-duzir o leitor a essa área que vem se expandindo muito rapidamente. Para conhecerdetalhes de algoritmos de segmentação mais complexos para detecção de transições

RITA • Volume X • Número 1 • 2008 19

Page 20: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV

graduais, sugerimos a dissertação de Santos [14].

Agradecimentos

Os autores gostariam de agradecer à Fundação de Amparo à Pesquisa do Estadode São Paulo (FAPESP) e à Coordenação de Aperfeiçoamento de Pessoal de NívelSuperior (CAPES) pelos auxílios financeiros concedidos a esse projeto.

Referências

[1] Adnan M. Alattar. Detecting and compressing dissolve regions in video sequen-ces with a dvi multimedia image compression algorithm. Proceedings of IEEEInternational Symposium on Circuits and Systems (ISCAS), 1:13–16, Maio 1993.

[2] R.A. Barbosa, F. Silva, T.T. Santos, and C.H. Morimoto. An extensible automaticvideo browsing tool. In Workshop Teses e Dissertações - Sibgrapi 05, Natal, RN,October 2005.

[3] Csaba Czirjek, Noel O’Connor, Sean Marlow, and Noel Murphy. Face detectionand clustering for video indexing applications. In Proceedings of the ACIVS 2003- Advanced Concepts for Intelligent Vision Systems, pages 3–15. IEEE, September2003.

[4] Andrew Fitzgibbon and Andrew Zisserman. On affine invariant clustering andautomatic cast listing in movies. In Proc. of 7th the European Conference onComputer Vision, volume 3, pages 304–320. Springer Verlag, 2002.

[5] Ullas Gargi, Rangachar Kasturi, and Susan H. Strayer. Performance characte-rization of video-shot-change detection methods. IEEE Transactions on Circuitsand Systems for Video Technology, 10(1):1–13, 2000.

[6] Silvio Jamil Ferzoli Guimarães, Michel Couprie, Arnaldo de AlbuquerqueAraújo, and Neucimar Jerônimo Leite. Video segmantation based on 2d imageanalysis. Pattern Recognition Letters, 24:947–957, 2003.

[7] A Hampapur, T. Weymouth, and R. Jain. Digital video segmentation. In Procee-dings of the second ACM international conference on Multimedia, pages 357–364.ACM Press, 1994.

[8] Alan Hanjalic. Shot-boundary detection: Unraveled and resolved? IEEE Tran-sactions on Circuits and Systems for Video Technology, 12(2):90–105, fevereiro2002.

20 RITA • Volume X • Número 1 • 2008

Page 21: Segmentação, Indexação e Recuperação de Vídeo Utilizando …iris.sel.eesc.usp.br/wvc2008/Anais/Minicursos/tutwvc.pdf · 2008-08-28 · Segmentação, Indexação e Recuperação

Segmentação, Indexação e Recuperação de Vídeo Utilizando OpenCV

[9] F Idris and S. Panchanathan. Review of image and video indexing techniques.Journal of Visual Communication and Image Representation, 8(2):146–166, June1997.

[10] R. Kasturi and R. Jain. Computer Vision: Principles, chapter Dynamic Vision,pages 469–480. IEEE Computer Society Press, Washington, DC, 1991.

[11] Rainer Lienhart, Silvia Pfeiffer, and Wolfgang Effelsberg. Video abstracting.Communications of ACM, 40(12):54–62, 1997.

[12] Akio Nagasaka and Yuzuru Tanaka. Automatic video indexing and full-videosearch for object appearances (abstract). J. Inf. Process., 15(2):316, 1992.

[13] The Open Video Project. http://www.open-video.org.

[14] Thiago Teixeira Santos. Segmentação automática de tomadas em vídeo. Mas-ter’s thesis, Instituto de Matemática e Estatística, Universidade de São Paulo,2004.

[15] Nuno Vasconcelos and Andrew Lippman. A bayesian video modeling frameworkfor shot segmentation and content characterization. In Proceedings of the 1997Workshop on Content-Based Access of Image and Video Libraries (CBAIVL ’97),page 59. IEEE Computer Society, 1997.

[16] Nuno Vasconcelos and Andrew Lippman. Statistical models of video structurefor content analyis and characterization. IEEE Transactions on Image Processing,9(1):3–19, Janeiro 2000.

[17] Wei Xiong, John Chung-Mong Lee, and Man-Ching Ip. Net comparison:a fastand effective method for classifying image sequences. In Proc.of SPIE Conferenceon Storage and Retrieval for Image and Video Databases III, volume 2420, pages318–328, San Jose, CA, 1995.

[18] Boon-Lock Yeo and Bede Liu. Rapid scene analysis on compressed video. IEEETransactions on Circuits and Systems for Video Technology, 5:533–544, December1995.

[19] Ramin Zabih, Justin Miller, and Kevin Mai. A feature-based algorithm for de-tecting and classifying scene breaks. Proceedings of ACM Mutlimedia 95, pages189–200, Novembro 1995.

[20] HongJiang Zhang, Atreyi Kankanhalli, and Stephen W. Smoliar. Automatic par-titioning of full-motion video. Multimedia Systems, 1(1):10–28, 1993.

RITA • Volume X • Número 1 • 2008 21