Proposta de um Método Computacional para Automatização de Inserção de Transformações Topológicas em Imagens Digitais Julio César Ferreira da Silva, Bruno Julian Dias de Oliveira, Hildegard Barboza Paulino, Leandro Carlos de Souza, Tatiana Aires Tavares Abstract—This paper presents a set of algorithms to automate topological transformations in the generation of morphing between digital images. These use statistical, mathematical and computer methods that will be discussed throughout this report. Each is rated according to the results of visual and perceptual images obtained after the implementation of morphing between them. I. INTRODUÇÃO A área de processamento digital de imagens (PDI) é um excelente exemplo de interdisciplinaridade. As diversas técnicas originalmente desenvolvidas para tratamento de sinais unidimensionais foram, em primeiro lugar, adaptadas para tratamento de imagens obtidas de satélites e de naves espaciais [1]. Posteriormente, com o rápido avanço das opções de hardware e software, estas mesmas técnicas passaram a ser aplicadas em inúmeros domínios tais como medicina, ciência dos materiais, microscopia, artes etc. Uma dessas técnicas é a metamorfose de imagens que é simplesmente uma transformação que leva uma imagem em outra, através de imagens intermediárias, alterando, de forma gradual, tanto a sua forma quanto os valores de seus pixels; Estes tipos de transformação possuem diversas aplicações na realidade virtual, compressão de vídeo e especialmente na indústria de entretenimento [1][4]. Usualmente, definem-se vetores orientados em ambas as imagens que melhor qualifiquem a transformação proposta, os chamados vetores referência-alvo. Esses são correspondidos, gerando um conjunto de associações ou agrupamentos que podem ser vistos como um conjunto de transformações lineares que alteram o valor das coordenadas das imagens. [4]. Com isso, a figura abaixo mostra a marcação dos vetores em duas imagens Fig 1. Desenho manual dos vetores referência-alvo. O desenho de tais vetores é efetuado pela escolha, via manipulação de interface gráfica, das melhores regiões que caracterizam cada uma das imagens, bem como as melhores correspondências entre eles [4]. Esse desenho pode requerer um trabalho humano minucioso a fim de gerar vetores significativos, principalmente em imagens de difícil visualização ou que apresentem um alto grau de informação embutida [1] [4]. Por isso, este trabalho sugere a utilização de algoritmos que localizem vetores definidores de objetos em imagens. E, assim agrupá-los, por simetria de imagens, e definindo a transformação. II. OBJETIVOS O objetivo do projeto é preparar a melhor disposição dos pontos das bordas das imagens envolvidas e, com isso, agrupar um conjunto de vetores que melhor descrevam suas superfícies. Tudo para que o Morphing possa se processar da melhor maneira possível. O escopo deste projeto abrange: Conceitos de dependência e relação entre variáveis. Criação de soluções algorítmicas para “filtragem” de pontos da borda de uma imagem. Criação de soluções algorítmicas para encaixe das imagens. Desenvolvimento de interface gráfica para ilustrar a disposição final dos vetores agrupados. III. MATERIAIS E MÉTODOS Foram utilizados a linguagem Java através do ambiente de desenvolvimento integrado Netbeans 6.0 e o MatLab, software interativo de alta performance voltado para o cálculo numérico. Os passos seguidos para se automatizar a escolha dos vetores que definem o morphing estão ligados à retirada dos pontos da borda de cada objeto das imagens, escolha dos melhores pontos que representem os objetos e agrupamento entre os vetores escolhidos para cada imagem. A Figura 2 apresenta os passos a serem seguidos para esta automatização. Fig 4. Descrição pseudo-algoritmica da extração da borda, em MatLab. Fig 2. Fluxograma dos métodos utilizados. gerado pelo compilador mcc através de uma chamada por processo do sistema operacional. O mcc é um compilador que integra o MatLab e tem como função gerar uma biblioteca da função em C que chama a função escrita em MatLab. Com isso, a chamada por processo através do sistema desenvolvido em Java é feita na execução da instrução Runtime.getRuntime().exec(), que recebe como argumento o comando que se quer executar. Nesse caso, ela receberá o comando que chama a função que exporta a borda da imagem desejada. Através da função bwtraceboundary, que recebe como argumento a imagem binarizada obtida pelas etapas anteriores do método, tem-se a lista de pontos pertencentes à borda do objeto. Assim, com a função dlmwrite pode-se exportá-la para um arquivo tipo texto, que será acessado pelo sistema. B Cálculo de curvatura Fig3. Demonstração detalhada das etapas listadas na figura 2, aplicadas em duas imagens até a geração do morphing. A partir dos pontos da borda, torna-se necessário encontrar o conjunto de pontos mais adequados que melhor caracterizassem os objetos contidos nas imagens manipuladas. Para isso, utilizou-se o conceito de curvatura de um ponto que é dependente dos seus pontos vizinhos [2]. A curvatura pode ser calculada por: A Geração das bordas O objetivo final de todo o projeto era descrever um determinado conjunto de pontos de uma imagem que seriam levados no da outra. Entretanto, como saber que conjuntos de pontos seriam esses? Uma solução encontrada foi através da captura de suas bordas. Mas, como existem diversas técnicas e algoritmos para esse fim, preferiu-se utilizar uma combinação de funções já existentes no MatLab. Na figura 4 é descrito o pseudo-algoritmo que realiza a captura da borda. Como o sistema foi desenvolvido na linguagem de programação Java, era necessário estabelecer algum vínculo que garantisse o acesso, a partir do Java, à função que exportasse a borda da imagem. Isso foi resolvido com a chamada de um executável na linguagem de programação C, Onde l1 e l2 representam os tamanhos dos segmentos formados pelo ponto s e seus dois vizinhos mais próximos, normalizados em relação à distância equivalente ao deslocamento resultante, e θ o ângulo entre os segmentos formados com seus vizinhos. A Figura 6 mostra um exemplo de uma borda e os meios de se calcular a curvatura, onde t e u são os vizinhos mais próximos de s. D Ajuste de pontos Fig 5. Cálculo da curvatura na borda de uma imagem Com base na Figura 5, o cálculo dos parâmetros de curvatura são dados por: Como a gaussiana é aplicada a uma vizinhança e em muitos casos o desvio padrão é nulo, muitos pontos ficam praticamente colineares. Para resolver este problema verificase se a diferença entre um ponto e seu sucesso é menor que um determinado número de pixels e, deste modo, aplicar-se um método para ajustar estes pontos. Para isso, utiliza-se geometria euclidiana, através da distância entre um ponto e uma reta. A aplicação deste método supõe o cálculo da distância de um ponto qualquer e o segmento de reta definido por seus pontos vizinhos. A Figura 8 apresenta a disposição de três pontos e de como este algoritmo é aplicado. Fig7. Distância entre ponto e reta Onde é o fator de normalização das curvaturas. A escolha dos pontos adequados para a representação dos objetos irá depender dos valores das curvaturas que os descrevem. Entretanto, pontos muito próximos podem apresentar curvaturas altas, o que sugere um método de filtragem para eliminá-los. Agregado, encontra-se a dificuldade de se contornar os erros de aproximação das bordas que descrevem os objetos. C Suavização A borda capturada pode conter deformações e falhas que podem alterar completamente os cálculos que serão efetuados. Então, que essas regiões críticas sejam eliminadas, ou mesmo, suavizadas, a filtragem é realizada através de conceitos estatísticos por meio de uma curva normal ou gaussiana. Objetiva-se, com isso, eliminar os pontos que tiverem valores entre sua média e seu desvio padrão [3]. A figura 7 mostra como esta filtragem é realizada. Os parâmetros da reta PR, definida pela equação Y = a.X + b, podem ser calculados do seguinte modo: Onde y(r) é o valor y do ponto r, y(p) é o valor y do ponto p, x(r) é o valor x do ponto r e x(p) é o valor x do ponto p. A distância d de um ponto q a esta reta pode ser dada por: E Busca do melhor encaixe e agrupamento O agrupamento dos vetores da imagem será feito utilizando-se métodos que buscam um grau considerável de dependência entre um conjunto de pontos a serem agrupados. Para isso, foram abordadas conhecimentos da área estatística, tais como a covariância, correlação e somatório das distâncias mínimas. Isso fará com que os pontos que estiverem abaixo de um limiar estabelecido sejam eliminados. Garante-se, assim, a seleção de pontos que descrevam realmente a imagem, ou seja, pontos bastante significativos. Fig6. Curva normal ou Gaussiana indicando o intervalo de eliminação dos pontos da borda IV. REFERENCES RESULTADOS Para verificar a “qualidade” da borda exportada pala função do Matlab exportou-a em uma “subplot”. Assim, foi mais fácil saber se a função deveria ser confiável. Abaixo, está ilustrada o desenho que é feito a partir da borda de um quadrado. [1] [2] [3] [4] [5] [6] [7] Fig 8. Borda de um quadrado. Após executadas todas as etapas, os vetores referência-alvo escolhidos automaticamente e são desenhados nas imagens, como é ilustrado na figura abaixo. Fig 9. Desenho dos vetores referência-alvo. Fig 10. Morphing Automático. V. CONCLUSÃO Os métodos utilizados mostraram-se eficientes quanto ao ajuste de figuras de baixa complexidade. O algoritmo de extração de bordas foi bastante eficiente, fazendo com que os métodos apresentados fossem aplicados da melhor forma possível. A parte do algoritmo que mais influencia na combinação dos pontos é a que ajusta o arranjo destes pontos em ambas as imagens, visto que, um ponto inserido influencia muito na forma de como o conjunto de cada imagem será agrupado. Pelo que foi visto, testes devem ser realizados, bem como o aprimoramento dos algoritmos utilizados para que o melhor ajuste de pontos entre as imagens seja encontrado. Smith, Steven W.; Digital Signal Processing: A Practical Guide for Engineers and Scientists; Newnes, 2002. Kaup, André; Heuer, Jörg; Polygonal Shape Descriptors - An Efficient Solution for Image Retrieval and Object Localization. 2000 Mucha, Marcin; Sankowski, Piort; Maximum Matchings via Gaussian Elimination. GONZALEZ, Rafael C.; WOODS, Richard E.; Processamento de Imagens Digitais; 1º ed. Edgard Blücher, 2000. T. W. Anderson, An Introduction to Multivariate Statistical Analysis, 2nd ed. New York: Wiley, 1984. J. P. Hoffbeck and D. A. Landgrebe, “Covariance matrix estimation and classification with limited training data,” IEEE Trans. Pattern Anal. Machine Intell., vol. 18, pp. 763-767, July 1996. C. E. Thomaz, D. F. Gillies, and R. Q. Feitosa, “Using mixture covariance matrices to improve face and facial expression recognitions,” in Proc. 3rd Int. Conf. Audio- and Video-Based Biometric Person Authentication Halmstad, Sweden, vol. LNCS 2091, June 2001, pp. 71-77.