Depto. de Ciência da Computação
IME - USP
MAC 499 - Trabalho de Formatura Supervisionado
Monografia Final

Aluna: Ana Beatriz Vicentim Graciano
abvg@ime.usp.br
Orientador: Roberto Marcondes Cesar Junior
Prof. Responsável: Carlos Eduardo Ferreira

Resumo:

Este documento visa apresentar o projeto de formatura desenvolvido durante o último ano do curso de Ciência da Computação para a disciplina MAC 499, abordando os aspectos técnicos do trabalho, bem como a experiência pessoal adquirida ao longo do mesmo.



Sumário


Introdução

No $1^o$ semestre de 2001, cursei a disciplina MAC 417 - Visão e Processamento de Imagens - como optativa eletiva do curso de Ciência da Computação. Essa área sempre me interessou, pois tem aplicações relacionadas à biogenética, medicina, interação homem-computador, robótica, automação industrial, edição de vídeo, dentre tantos outros campos de natureza diversa.

Através dessa experiência com a disciplina, surgiu a oportunidade de participar de um projeto de iniciação científica, que poderia também ser aproveitado como projeto de formatura, proposto pelo professor Roberto Marcondes Cesar Jr. Especificamente, o trabalho está ligado à aplicação de Processamento de Imagens em edição de vídeo digital.

As próximas seções tratam desse trabalho e da experiência adquirida através do mesmo. Em particular, a Parte I apresentará toda a descrição técnica do projeto, enquanto a Parte II relatará a experiência pessoal, as dificuldades enfrentadas, os acertos e a importância da formação obtida no IME.


Parte I - O Projeto de Iniciação Científica

Introdução

Dentro do contexto de Processamento de Imagens aplicado à edição de vídeo digital, há um grande interesse em se desenvolver e aprimorar algoritmos e técnicas computacionais de combinação de vídeos (video mixing), recurso que consiste em recortar objetos presentes numa seqüência de vídeo e aplicá-los a uma outra seqüência. O interesse no desenvolvimento de tais técnicas deve-se ao fato de que os métodos tradicionais utilizados (por exemplo, chroma key) apresentam, em geral, várias desvantagens decorrentes da exigência de um certo nível de intervenção humana para o recorte dos objetos, o que é dispendioso.

Além disso, as técnicas computacionais existentes [7, Apêndice A] ainda necessitam de aperfeiçoamento, pois, dependendo da complexidade do objeto, nem sempre produzem resultados satisfatórios ou impõem diversas restrições. Muitas vezes, os objetos segmentados apresentam bordas com reentrâncias indesejáveis ou mesmo incoerência espacial entre os recortes obtidos a partir de quadros consecutivos da seqüência de vídeo.

O objetivo principal desta pesquisa é, portanto, propor soluções para o aprimoramento dos resultados obtidos aplicando-se a metodologia de segmentação de objetos em seqüências de vídeo proposta por Franklin C. Flores em sua dissertação de mestrado  [7]. Tal metodologia baseia-se em ferramentas de aprendizado computacional e de morfologia matemática, respectivamente. Em particular, a segmentação automática dos objetos é dada através da aplicação do paradigma de Beucher-Meyer, o que permite a detecção exata das bordas dos mesmos.

Nas próximas seções, serão apresentadas as etapas da metodologia supracitada, os problemas encontrados nos resultados, as soluções derivadas a partir deste projeto e os aprimoramentos conseguidos.

Metodologia Utilizada

Uma seqüência de vídeo é composta por um conjunto de quadros (ou frames), que são apresentados numa dada freqüência (por exemplo, 30 quadros por segundo), o que nos permite ter a sensação real de movimento dos objetos constantes da seqüência.

Assim como é possível observarmos um objeto em especial ao assistirmos um vídeo, podemos desejar perseguir um ou mais objetos de uma seqüência automaticamente através de algoritmos e recursos computacionais. Então, utilizaríamos esses objetos observados, por exemplo, sobre um fundo diferente de acordo com o interesse.

Para que um objeto seja observado automaticamente ao longo de uma seqüência de quadros, duas etapas devem ser levadas em consideração:

  1. Marcar o objeto de interesse no espaço do quadro, ou seja, encontrar um subconjunto de pixels pertencentes ao objeto.
  2. Segmentar (recortar) o objeto a partir do marcador obtido na etapa anterior, separando-o do restante da cena.
A seguir, é apresentada a forma como o método introduzido em [7] realiza as etapas supracitadas.

Etapa I - Busca de Marcadores para os Objetos

Em primeiro lugar, alguns conceitos preliminares devem ser definidos para a discussão feita a seguir.

Seja $E \subset Z \times Z$ um subconjunto retangular finito de pontos, $K = [0, k]$ um intervalo fechado em $Z$, e $F[E,K] = \{f: E \rightarrow K\}$. Uma imagem é dada por uma função $f \in F[E,K]$. Um conjunto de pixels de $f$ é um subconjunto finito do conjunto Imagem $ \subset K$ de $f$.

Para encontrar um conjunto de pixels constituintes de um dado objeto de estudo no quadro, [7] propõe a aplicação de operadores aperture. Tais operadores são construídos através de técnicas de aprendizado computacional, que consistem no estudo de métodos computacionais que permitam o aprendizado de um dado conceito. No caso dos operadores aperture, o conceito fundamental envolvido é a caracterização dos mesmos por funções específicas, que associam uma função a um valor inteiro.

Para que os marcadores sejam impostos sobre os objetos ao longo de toda a seqüência, é necessário que o usuário defina manualmente quais objetos serão perseguidos no primeiro quadro em que aparecem. Essas regiões marcadas manualmente servem para treinar os operadores aperture. Após essa interação, os objetos podem ser detectados nos quadros subseqüentes pelos operadores aperture, que impõem os marcadores adequadamente.

Portanto, para cada quadro da seqüência, é gerada uma imagem contendo marcadores que indicam os objetos de interesse. Essas imagens $m$ com marcadores possuem o seguinte formato:


\begin{displaymath}
m(pixel) =
\left\{
\begin{array}{ll}
C, & \mbox{ se p...
...eto de interesse} \\
c, & \mbox{ c.c}
\end{array} \right.
\end{displaymath} (1)

$C$ e $c$ são, respectivamente, um majorante e um minorante de $f \in K^{E}$, ou seja, os pixels que pertencem aos marcadores para os objetos possuem nível de cinza máximo e os restantes possuem nível de cinza mínimo.

Etapa 2: Segmentação Automática dos Objetos

A segmentação dos objetos detectados e marcados pelos operadores aperture é realizada quadro-a-quadro através da aplicação do Paradigma de Beucher-Meyer. Tal paradigma permite a detecção exata das bordas dos objetos de interesse através da aplicação do operador watershed em uma imagem com as seguintes características:

A próxima seção descreve detalhadamente o funcionamento do Paradigma de Beucher-Meyer.

Paradigma de Beucher-Meyer

Para entendermos o funcionamento do Paradigma de Beucher-Meyer, vamos definir primeiramente o conceito de operador morfológico. Um operador morfológico ([7]) é um operador decomponível em termos de operações e operadores elementares. Para realizarmos tal decomposição, utilizamos a linguagem formal conhecida como linguagem morfológica, cujos operadores são a erosão e a dilatação , e cujas operações são supremo, ínfimo, negação e composição. Um operador morfológico compõe uma frase nessa linguagem.

Sejam $f$ e $g$ $\in F[E,K]$, onde $E, K, F[E, K]$ foram definidos anteriormente. Seguem, então, as definições matemáticas dos operadores e operações da linguagem morfológica:

O Paradigma de Beucher-Meyer busca a segmentação exata das bordas dos objetos de estudo, consistindo na aplicação seqüencial dos seguintes operadores morfológicos:

Gradiente Morfológico: efetua o realce das bordas dos objetos presentes no quadro.
Operador de Mudança de Homotopia: remove a supersegmentação dos objetos realçados pelo gradiente morfológico.
Operador Watershed: permite detectar exatamente as bordas dos objetos restantes após a aplicação do operador anterior.

A sequência de figuras abaixo mostra o efeito da aplicação desses operadores sobre um quadro.

Figura 1: Segmentação das partículas: (a) Quadro original; (b) Gradiente morfológico; (c) Mudança de Homotopia; (d) Operador Watershed
\epsfig{file=ball1.eps, width=1.72in , height=1.72in}
(a)
\epsfig{file=ball2.eps, width=1.72in , height=1.72in}
(b)
\epsfig{file=ball3.eps, width=1.72in , height=1.72in}
(c)
\framebox{\epsfig{file=ball4.eps, width=1.72in , height=1.72in}}
(d)

Gradiente

Essa primeira etapa do paradigma tem o propósito de reforçar as bordas ou contornos do quadro $img$ em que ocorrerá a segmentação. As bordas da imagem são caracterizadas por transições dos níveis de cinza da mesma, ou seja, descontinuidades da imagem (regiões de mudanças bruscas).

Seja $B$ o elemento estruturante  [8, Cap. 3] igual ao losango ou ao quadrado elementar, o operador gradiente morfológico de $img$ pode ser definido como  [8]:


\begin{displaymath}
\psi_{B}(img) = \delta_{B}(img) - \epsilon_{B}(img)
\end{displaymath} (2)

Assim, o operador gradiente resulta da subtração entre dois outros operadores morfológicos: dilatação e erosão de $img$. Logo, o resultado desse operador sobre $img$ é uma nova imagem $g$ cujas bordas são realçadas.

Nesse passo, eventuais ruídos também podem ser ressaltados pelo operador, o que acarreta supersegmentação do resultado após a aplicação do operador watershed na fase final do paradigma. Para contornar esse problema, realiza-se um procedimento chamado filtragem homotópica, visto a seguir.

Filtragem Homotópica

Nessa etapa, o objetivo é filtrar o resultado $g$ do gradiente para evitar a supersegmentação do resultado final. Assim, deseja-se obter um gradiente filtrado cujos mínimos regionais representem os objetos que se quer segmentar.

Para isso, constrói-se uma imagem $m$ contendo somente marcadores para os objetos do frame. Como visto anteriormente, tal imagem é obtida pelo uso dos operadores aperture. $m(x,y)$ tem valor igual ao maior nível de cinza para os pixels de $img$ que pertencem ao objeto, e igual ao menor nível de cinza para aqueles que não constituam o objeto de interesse.

A filtragem é então realizada através do operador de mudança de homotopia, que realiza uma reconstrução da imagem $g$ pela imagem $m$ com os marcadores. Tal filtragem é composta de:

Com isso, obtemos uma nova imagem $g'$ contendo apenas os mínimos regionais relativos aos objetos marcados.

Operador Watershed

O último passo do paradigma consiste na aplicação do operador watershed sobre a imagem resultante $g'$, obtendo uma nova imagem $f$ apenas com as bordas dos objetos segmentados. De posse dessa imagem, é possível realizar a combinação do objeto ou do fundo com uma outra sequência de vídeo.

O operador watershed (ou linha de partição de águas) é uma das ferramentas de segmentação de imagens mais eficientes e utilizadas dentro da morfologia matemática, pois apresenta considerável desempenho em relação às outras abordagens.

A idéia básica do operador watershed pode ser exemplificada através da seguinte analogia. Uma imagem em níveis de cinza pode ser vista como uma superfície cujos pontos têm altitudes relativas aos valores dos pixels. Quanto maior o valor do nível de cinza correspondente, maior a altitude. Como as bordas dos objetos já foram ressaltadas pelo operador gradiente, a superfície seria formada de vales e bacias. Ainda, pode-se imaginar que essa superfície é imersa em água, a partir dos pontos mais baixos. Conforme o nível de água nas bacias e vales aumenta, as águas dessas bacias transbordam e tocam aquelas provenientes de outras bacias. Nesse ponto, são construídas barragens para evitar a união dessas águas, daí o nome de "linha de partição de águas".

Esse processo pode ser representado matematicamente através de operadores morfológicos.

Um mínimo regional de altitude h da função $g'$ é um conjunto conexo de pontos de $E$ tal que seus elementos possuem o valor $h$.

Seja $g' \in K^E$. A seção inferior de $g'$ no nível $h$ é o conjunto definido por $g'^h = \{g'(x) \leq h \}$. Computacionalmente, esse conceito pode ser implementado através de um histograma dos níveis de cinza encontrados em $g'$, bem como seus valores supremo $h_{max}$ e ínfimo $h_{min}$. De posse desse resultado, faz-se uma ordenação dos endereços dos pixels de $g'$ de acordo com seus níveis de cinza, para facilitar o acesso às posições da imagem que possuem valores iguais. Isso permite a "inundação" da superfície a partir dos níveis de cinza mais baixos até os mais altos.

Agora, é necessário definir o conjunto das bacias de captação de água de $g'$, dado pelo seguinte conjunto $X_{h_{max}}$ obtido através da seguinte recorrência:


$\displaystyle X_{h_{min}} = g'^{h_{min}}(g')$      
$\displaystyle X_{h+1} = RM_{h+1}(g') \cup IZ_{g'_{h_{min}}}(X_h)$     (3)

O conjunto IZ é conhecido como zona de influência geodésica de $X_h$, que reúne os pixels vizinhos ao conjunto de $X_h$ cuja distância a $X_h$ é menor do que a qualquer outro conjunto. Em termos algorítmicos, essas bacias são encontradas por meio de rótulos dados aos pixels e utilizando-se o vetor ordenado por níveis de cinza contendo os endereços dos pixels correspondentes.

As linhas de partição de águas de $g'$ são formadas pelo conjunto complementar das bacias de captação de $g'$. Nesse caso, o algoritmo marca os pixels que têm possibilidade de receber dois rótulos diferentes, o que indica que as águas de duas bacias distintas se encontraram.

Uma explicação detalhada de implementações eficientes do algoritmo de watershed pode ser encontrada em [8] ou em [4].

Aprimorando os resultados

Apesar de o método proposto apresentar-se bastante eficiente na detecção dos objetos, as bordas dos objetos segmentados apresentam reentrâncias indesejáveis, dependendo da complexidade do objeto recortado. Seria desejável obter recortes de cada quadro com maior suavidade nas bordas e também com maior linearidade nos resultados quando da comparação entre quadros subseqüentes.

Soluções

Melhorando a Coerência Espacial

Em diversas sequências, os contornos obtidos de quadros consecutivos apresentavam razoável incoerência espacial, ou seja, mostravam-se comparativamente discrepantes devido a diversos fatores, dentre eles, à modificações na iluminação entre quadros. Uma possível solução para esse problema é a utilização de um mecanismo de extração de contornos combinado a um algoritmo de interpolação.

Extração dos Contornos

A imagem $r$ resultante do operador watershed sobre o $i-$ésimo quadro da sequência é binária e possui dimensões iguais às do quadro original. Porém, seria interessante obter uma estrutura que contivesse apenas os pixels representantes do recorte, pois a mesma permitiria maior eficiência ao ser usada em computações posteriores. Além disso, o consumo de memória também seria reduzido consideravelmente.

Para isso, pode-se aplicar a todas as imagens resultantes do paradigma de Beucher-Meyer um algoritmo de extração de contorno, que, dada uma imagem binária, encontra os pixels pertencentes ao contorno dos objetos presentes em $r$ e armazena as coordenadas dos mesmos numa estrutrura como vetor, lista ligada ou até mesmo em arquivo. Neste projeto, optou-se por utilizar dois vetores como saída do algoritmo: um para armazenar as coordenadas $x$ dos pixels pertencentes ao contorno, e outro para as coordenadas $y$.

Existem vários algoritmos distintos para a extração de contornos paramétricos de uma imagem. Para este projeto, foi utilizado o algoritmo contour following descrito em [2, Cap. 5]. Tal algoritmo extrai o contorno externo (vide [2]) dos objetos presentes na imagem.

O funcionamento do algoritmo está centralizado no fato de que, numa imagem binária, sabe-se que o fundo é representado por pixels brancos, enquanto os objetos são formados por pixels pretos. Dessa forma, é possível percorrer a imagem em busca de pixels vizinhos a ``pixels pretos'', ou seja, que constituam os contornos.

Na primeira etapa do algoritmo, a imagem é visitada linha a linha em busca de um pixel branco e cujo vizinho à direita é preto. Uma vez encontrado esse pixel inicial, o processo de extração do contorno é iniciado. O que é feito, na verdade, é uma busca pelos pixels que circundam o objeto até encontrar o pixel inicial novamente.

Para circundar o objeto, utiliza-se uma máscara $3 X 3$ com pixels 8-conectados, concêntrica ao pixel corrente pertencente ao contorno. Os pixels dessa máscara são acessados de acordo com a seguinte ordenação: o pixel vizinho à direita do pixel central da máscara tem rótulo 0, e os pixels seguintes, percorridos no sentido anti-horário, possuem rótulos 2, 3, 4, 5, 6, 7.

A partir do pixel pertencente ao contorno atual, analisa-se qual o próximo pixel a ser obtido. Para isso, a máscara é percorrida no sentido anti-horário, novamente em busca de um pixel cujo valor é zero e cujo vizinho correspondente no código da cadeia é preto. O procedimento acaba quando o pixel inicial é revisitado.

O algoritmo de extração de contornos de imagens binárias foi implementado em C, tendo sido um dos projetos avaliados na disciplina MAC 447 - Análise e Reconhecimento de Formas: Teoria e Prática, oferecida pelo IME - USP e ministrada pelo Prof. Dr. Roberto Marcondes Cesar Junior, no período de Agosto a Novembro de 2001.

Para permitir o uso desse algoritmo dentro do ambiente do MATLAB$^\copyright$, o programa foi adaptado para comportar a interface entre funções do software e códigos $C$. Para isso, as modificações necessárias consistem basicamente da criação de uma função chamada mexFunction, que substitui a função main tradicional de $C$, e das seguintes transformações:

Uma vantagem de se usar programas escritos em código $C$ dentro do ambiente do MATLAB é o fato do código ser compilado, o que permite maior eficiência durante a execução, pois os comandos são executados diretamente. Já os programas escritos na linguagem para o MATLAB, chamados scripts, são interpretados ao serem executados, levando a um processamento mais lento. Como as imagens tendem a ter tamanhos variados e o algoritmo de extração de contornos deve percorrê-las completamente, é interessante utilizar o recurso dessa interface, para não incrementar consideravelmente o tempo de processamento total da sequência de vídeo.

Aplicando Interpolação

O fator preponderante na busca da coerência espacial é aproximar os contornos obtidos entre os quadros $i$ e $i+1$, o que é feito através do algoritmo de interpolação de contornos. Todos os objetos recortados em cada quadro da sequência têm seus contornos extraídos e interpolados ao contorno do quadro anterior, que é previamente guardado. A interpolação só não é realizada no $1^o$ quadro da sequência, pois apenas um contorno está disponível nesse ponto.

A entrada desse algoritmo são dois contornos, ou vetores no formato obtido do algoritmo de extração de contornos, e o número de pontos que se deseja usar na interpolação. O resultado obtido é um novo contorno a ser submetido à filtragem passa-baixas.

Um exemplo do resultado da interpolação dos contornos pode ser visto abaixo.

\framebox{\epsfig{file=ball01.eps, width=1.72in , height=1.72in}}
(a)
\framebox{\epsfig{file=ball02.eps, width=1.72in , height=1.72in}}
(b)

Figura: Contorno da partícula: (a) quadro $i$; (b) quadro $i + 1$; (c) resultado da interpolação
\framebox{\epsfig{file=interp.eps, width=1.72in , height=1.72in}}
(c)

Suavização dos Contornos

Para sanar o problema das bordas com reentrâncias, propõe-se uma filtragem passa-baixas do contorno da imagem $f'$ obtido após a interpolação dos contornos. Como o contorno é representado por um sinal unidimensional, a computação adicional é relativamente baixa.

Uma filtragem passa-baixas é caracterizada por atenuar os componentes de alta freqüência de uma função ou imagem, permitindo a passagem de baixas freqüências. No caso de uma imagem, as altas freqüencias são representadas pelas bordas dos objetos pois, matematicamente, elas podem ser consideradas picos ou pontos de inflexão entre regiões. Como os contornos são boas representações das bordas dos objetos, utiliza-se um filtro passa-baixas sobre os mesmos, atenuando o efeito das bordas e conseguindo suavizar reentrâncias nas mesmas, como é possível ver na figura abaixo.

Figura 3: Partícula Suavizada
\framebox{\epsfig{file=gauss.eps, width=1.72in , height=1.72in}}

Um dos métodos de filtragem passa-baixas mais utilizado é a filtragem gaussiana. Isso se deve à facilidade computacional de sua aplicação, pois tal filtro pode ser implementado utilizando-se propriedades de derivação da transformada de Fourier (vide [2], [6], [1]). Como a transformada de Fourier é computacionalmente viável e eficiente, tal filtragem foi também a escolhida para a suavização das bordas dos objetos segmentados nos quadros da seqüência.

A suavização gaussiana foi também implementada através de funções dos toolboxes de processamentos de imagens e de sinais do software MATLAB$^\copyright$.

Alternativas para a obtenção automática de marcadores

Embora a utilização de operadores aperture resulte em marcadores satisfatórios para os objetos de interesse,  [7] propôs o estudo de operadores ou técnicas adaptativas para detecção de marcadores como possível campo de continuidade de seu trabalho. Essa extensão permitiria maior flexibilidade na busca de marcadores caso a sequência de imagens apresentasse considerável variação qualitativa entre os quadros como, por exemplo, mudanças de iluminação.

Para abordar esse aspecto adaptativo, foram estudados os seguintes métodos:

Como fonte de apoio para esses tópicos, foram também estudados alguns artigos ( [5], [3]).

De posse dessas ferramentas, será possível analisar e propor uma combinação de características a serem consideradas na busca dos marcadores, na tentativa de reduzir razoavelmente a dependência entre os marcadores e a homogeneidade dos quadros. Esses fatores poderão ser extraídos quadro-a-quadro e atualizados para que se adaptem ao longo da sequência.


Parte II - Experiência Pessoal

Dificuldades de pesquisa e experimentação

A natureza da pesquisa tecnológica é promover novas soluções a problemas diversos, ou apresentar novos problemas. Só esse fator já pode ser considerado como um desafio motivante, mas ao mesmo tempo, uma dificuldade, já que isso nem sempre é fácil e exige um certo esforço.

No caso da minha iniciação, o problema já estava bem definido, restando propor soluções aos resultados da metodologia desenvolvida anteriormente. Em relação à parte teórica, foi possível encontrar muitas fontes bibliográficas que facilitaram o entendimento do problema e propiciaram o encaminhamento das soluções. Porém, na prática, nem sempre foi fácil atingir os objetivos. Às vezes, um fator não considerado previamente levava à reformulação do método, o que consumia um certo tempo.

Outro fator que dificultou um pouco a implementação do projeto foi o fato de eu não saber programar para o MATLAB$^\copyright$. Embora seja uma linguagem relativamente simples e com muito suporte funcional, precisei de um certo tempo para compreendê-la tão bem quanto eu sei utilizar C. A opção pelo MATLAB deve-se à ampla utilização desse software no laboratório de Visão e Processamento de Imagens, o que tornaria o projeto uma ferramenta que todos os que quisessem poderiam usar. Originalmente, a metodologia apresentada havia sido implementada em C, na forma de bibliotecas para o software Khoros, que não é tão conhecido quanto o MATLAB.

Além disso, aprendi também como utilizar programas em C dentro do MATLAB através da interface que este oferece: os arquivos mex. Através deles, pudemos adaptar o algoritmo de extração de contornos, como visto anteriormente. Ainda, aprendi como usar as funções do toolbox de Morfologia Matemática para o MATLAB. Isso facilitou a obtenção dos resultados, mas, ao mesmo tempo, dificultava um pouco quando as coisas não saíam como se esperava. Quando não se sabe como são implementados os algoritmos, é mais complicado descobrir onde podem estar os problemas.

Por fim, como o paradigma e suas soluções consistiam de diversos scripts diferentes, o uso de uma interface gráfica facilitaria a manipulação do processo. Para isso, aprendi a desenvolver também interfaces dentro do MATLAB, o que não foi uma tarefa muito fácil. Precisei me preocupar com questões de compatibilidade entre as versões do MATLAB para Windows e Linux/Unix, manipulação dos callbacks, facilidade de uso da interface, entre outros fatores. Porém, o problema principal que encontrei nessa etapa foi a documentação do MATLAB para interfaces gráficas. Apesar do help ser bem completo, há muita informação e é difícil entender o funcionamento básico das interfaces dele. Com a ajuda de um documento encontrado na internet, foi possível utilizar, finalmente, essa funcionalidade do MATLAB.

A relação com o orientador e profissionais da área

O professor Roberto Marcondes Cesar Jr. foi uma peça fundamental na realização deste projeto, pois a proposta de realização do mesmo surgiu dele, a partir do conhecimento do meu interesse pela área.

Desde então, ele sempre procurou me integrar aos outros membros do grupo de visão computacional do IME, o Creativision, além de mostrar-se disponível para esclarecer dúvidas e problemas, e para auxiliar no que fosse necessário. Ainda, incentivou a participação em seminários da área ou de trabalhos correlatos e apoiou a inscrição em eventos científicos como o SIICUSP, que possibilitou o contato com outros trabalhos de iniciação científica e permitiu uma experiência nova de apresentação do projeto para públicos diversos.

Uma outra experiência interessante foram as reuniões semanais realizadas entre o professor e os outros alunos sob sua orientação. Nesses encontros, podíamos apresentar as dúvidas, discutir o andamento dos projetos e conhecer também os trabalhos de cada um. Isso tudo facilitava a solução de problemas mais práticos, por exemplo, quando se tratava da manipulação de um determinado software.

Apesar do meu projeto ser baseado numa tese produzida no IME, não tive muito contato com o autor Franklin Cesar Flores. Ele se disponibilizou uma vez, mas relativamente no começo do projeto, quando eu ainda não conhecia tão bem a teoria. Nesse encontro, ele me explicou genericamente como o paradigma de Beucher-Meyer era utilizado e também como funcionavam os operadores aperture. Além disso, ele permitiu com que eu tivesse acesso aos scripts e às sequências de vídeo que havia usado na elaboração da tese. Outras dúvidas que surgiram foram esclarecidas por email, mas poucas vezes.

Uma experiência que gostaria de tentar no futuro é a participação num projeto em que houvesse mais pessoas envolvidas, pois acredito que isso contribua para a troca de informações e também para a análise dos problemas e a metodologia que se deve aplicar para atingir os objetivos da pesquisa.

Além da iniciação científica, também tive a oportunidade de participar das seguintes atividades:

O Laboratório de Visão e Processamento de Imagens do IME

O Laboratório de Visão e Processamento de Imagens do IME possui um ambiente muito agradável. O relacionamento entre as pessoas do grupo é bastante cordial. Embora os projetos de cada um sejam muitas vezes distintos, existe um intercâmbio de informações comuns e disposição para o auxílio no uso da rede, facilitando a integração ao local. Ainda, os equipamentos do laboratório são bastante eficientes e suprem grande parte das necessidades dos que se beneficiam do local, além das máquinas apresentarem programas e ferramentas adequadas para a elaboração dos trabalhos.

As disciplinas do IME e o projeto

A formação oferecida pelo IME foi fundamental para os meus conhecimentos em computação, pois, quando entrei no BCC, eu era apenas uma usuária curiosa de computadores e jamais havia programado.O interesse por matemática e por aplicações de computação em efeitos especiais e medicina foram os fatores que me levaram a optar por um bacharelado em computação. Por isso, tudo o que eu sei hoje se deve ao BCC de uma forma ou outra.

Em relação à formação geral, as seguintes disciplinas foram muito importantes, pois permitiram o contato com algoritmos e conceitos fundamentais de computação, bem como a prática de programação: Princípios de Desenvolvimento de Algoritmos, Estruturas de Dados, Laboratórios de Programação I e II e Conceitos de Linguagens de Programação.

Quanto ao projeto, as seguintes disciplinas foram fundamentais ou auxiliares:

Conclusões finais

A minha iniciação científica foi um excelente meio de compreender a natureza da pesquisa e dos problemas ou fatores que a envolvem. Porém, ela também representou um bom instrumento para uso de conceitos matemáticos e computacionais que foram vistos ao longo da graduação. Além disso, a pesquisa representa uma aplicação de edição de vídeo, que é uma ferramenta usada também para criar efeitos especiais em produções cinematográficas. Por tudo isso, o projeto concretizou uma das idéias que me levaram a escolher o BCC e a colocar em prática muito do que vi ao longo dos quatro anos de curso.

Em relação à continuidade da pesquisa, serão implementadas as técnicas estudadas para a busca automática de marcadores para os objetos ao longo da seqüência, pois esse é um problema clássico mas que ainda comporta inovações.


Referências Bibliográficas

1
K.R. Castleman.
Digital Image Processing.
Prentice Hall, 1996.

2
R.M. Cesar Jr. e L.F. Costa.
Shape Analysis and Classification: Theory and Practice.
CRC Press, 2001.

3
R. Mech e M. Wollborn.
A noise robust method for segmentation of moving objects in video sequences.
Technical report, Institut für Theoretische Nachrichtentechnik und Informationsverarbeitung, Universität Hannover.

4
D. Hagyard M. Razaz e P. Atkin.
Analysis of watershed algorithms for greyscale images.
Technical report, University of Easy Anglia, England.

5
M. Wollborn e R. Mech.
Automatic segmentation of video sequences for video object generation.
Technical report, University of Hannover - Germany.

6
R.C. Gonzalez e R.E. Woods.
Processamento Digital de Imagens.
Edgar Blücher LTDA., 2000.

7
F.C. Flores.
Segmentação de seqüências de imagens por morfologia matemática.
Master's thesis, Instituto de Matemática e Estatística - Universidade de São Paulo, São Paulo, 2000.

8
R. Hirata Jr.
Segmentação de imagens por morfologia matemática.
Master's thesis, Instituto de Matemática e Estatística - Universidade de São Paulo, São Paulo, 1997.


Ana Beatriz Vicentim Graciano 2002-12-09