RECONSTRUÇÃO E GERAÇÃO DE MALHAS BIDIMENSIONAIS NÃO ESTRUTURADAS UTILIZANDO A TRIANGULAÇÃO DE DELAUNAY Leide Daiane Caires Aluna do Programa de Pós-Graduação em Engenharia Mecânica Unesp Bauru Prof. Dr. Edson Antonio Capello Sousa Orientador Depto de Engenharia Mecânica Unesp Bauru RESUMO Dentro da biomêcanica existem várias frentes de pesquisa e estudo, sendo este, voltado para a obtenção de modelos computacionais, mais precisamente regiões ósseas, para posterior análise por elementos finitos. O método dos elementos finitos proporciona o estudo da biomecânica baseada na avaliação numérica de modelos matemáticos. Como a obtenção destes modelos não é tarefa fácil de realizar, uma vez que as formas normalmente são complexas, uma solução então é construí-los a partir de seções transversais, com a ajuda de um programa computacional. Assim, o presente projeto destina-se a obtenção desses modelos computacionais aplicados à estruturas biomecânicas, através do desenvolvimento de um software de reconstituição de modelos 2D, onde tem como propósito a solução destes e outros problemas, como a Triangulação de Delaunay 2D com restrição, a fim de construir uma topologia a partir de pontos não estruturados de uma imagem. O mesmo está sendo desenvolvido como um programa computacional multi-plataforma, orientado a objetos, desenvolvido em C++, com o uso do Visualization Toolkit (VTK) uma biblioteca livremente disponível, de código-fonte aberto, para computação gráfica, processamento de imagens e visualização e do framework QT para a construção da interface gráfica, a partir de imagens planas (fatias), normalmente imagens médicas digitais, obtidas normalmente por tomografia computadorizada ou ressonância magnética, no formato DICOM (Digital Imaging Communications in Medicine), afim de gerar malhas de superfície através da triangulação de Delaunay 2D com restrição, permitindo posterior exportação para formatos compatíveis com softwares de análise por elementos finitos, como o Ansys Multiphysics. O software em desenvolvimento será incrementado no software biomeshcreate, que resolve diversos tópicos relacionados a problemas biomecânicos, mas que trata do problema com malhas 3D. PALAVRAS-CHAVE: Delaunay, Bidimensionais, Engenharia Mecânica. 1 INTRODUÇÃO Existem vários métodos de geração de malhas não-estruturadas, e o método mais popular se baseia em triangularizações de Delaunay. Na triangularização de Delaunay, cada triângulo determina um círculo cujo interior não contém nenhum ponto a não ser os três pontos que determinam o triângulo, ou seja, baseia-se em um único critério: círculos vazios. Ela é usada com freqüência para construir malhas para o método dos elementos finitos, as
quais, para serem precisas e com boa qualidade, devem ser refinadas por algoritmos que obedecem à regra do círculo-circundante. Essa propriedade torna este tipo de triangulação adequada para a solução de problemas em domínios de geometria complexa pelo método de elementos finitos. Apesar da flexibilidade da propriedade citada, a utilização da triangulação de Delaunay apresenta algumas dificuldades. Em uma aplicação de elementos finitos, a nuvem de pontos inicial não é aleatória mas sim definida a partir de pontos gerados em segmentos de reta e curvas (problemas bidimensionais) e em superfícies (problemas tridimensionais), as quais definem a geometria do problema. Além disso, como a geração da malha baseia-se na distribuição de pontos, ignorando as linhas que interligam esses pontos, durante o processo de subdivisão do domínio pode ocorrer a perda dos contornos que definem a geometria. Muitos problemas requerem um adensamento maior de elementos em determinadas regiões no interior do domínio. A triangulação de Delaunay tem grande importância para a geração de malhas, pois a maioria dos polígonos que descreve objetos do mundo real tem formato irregular e regiões pertencentes a diferentes domínios de interesse. Nesse contexto, a triangulação de Delaunay, conceitualmente, pode ser vista como uma estratégia de decompor um domínio em triângulos, respeitando suas características geométricas, como um passo inicial do processo de discretização. Desse modo, a triangulação de Delaunay funciona como uma espécie de gabarito para delimitar o espaço de ocupação, o qual, posteriormente, será decomposto até que sejam atendidos todos os critérios de qualidade referentes à área e medida angular para cada triângulo [MOURA, 06]. Segundo [CAPELLO SOUSA,04], devido a algumas limitações desse algoritmo tal como a dificuldade em reconhecer superfícies côncavas e delimitar figuras espaciais, esse método foi sofrendo algumas modificações, passando a ser conhecido simplesmente como Algoritmo de Triangulação de Delaunay Modificado. Modificações conforme [SCHROEDER,04], por exemplo, adapta-o à geração de contornos, tetraedrização de malhas não estruturadas, geração de malhas volumétricas e assim por diante. Pode-se dizer que a triangulação de Delaunay no plano encontra segmentos de reta que conectam um conjunto de pontos, os segmentos particionam o conjunto de pontos em triângulos, nenhum desses segmentos pode cruzar com nenhum outro e cada ponto é vértice de pelo menos um triângulo. Uma ótima triangulação é uma partição do domínio em triângulos ou tetraedros que estão de acordo com alguns critérios de medida de tamanho, área ou número de triângulos. Segundo [MAGALHÃES,00], dado um conjunto de pontos distribuídos aleatoriamente em um plano (nuvem inicial), um número virtualmente ilimitado de malhas de triângulos pode ser gerado. O matemático Delaunay (1934) provou que, nestas condições, existe uma única triangulação que maximiza a soma dos menores ângulos de cada triângulo da malha. Em outros termos, dada uma nuvem de pontos, a triangulação de Delaunay é a que resulta em um conjunto de triângulos o mais próximo possível de triângulos equiláteros. As propriedades da triangulação de Delaunay estão ligadas à construção de Dirichlet (também conhecida como diagrama de Voronoi), a qual considera a forma geométrica dual da triangulação de Delaunay. A construção de Dirichlet é a região do espaço onde cada divisão representa o espaço fechado para um ponto p i (estas divisões são células de Voronoi). Uma triangulação de Delaunay pode ser feita a partir da construção de Dirichlet pela criação de arestas entre células de Voronoi que compartilham n-1 contornos comuns. Os vértices da construção de Dirichlet estão localizados nos circuncentros dos círculos mostrados na triangulação de Delaunay [SCHROEDER; MARTIN; LORENSEN,2006]. Dentre os algoritmos que implementaram restrições e refinamentos em duas
dimensões para resolver problemas relacionados à concavidade e geometria irregular foram encontrados os de Chew (1993), Ruppert (1995), uns dos mais usados na literatura, que cita todos os passos necessários para sua implementação. O CDT (constrained Delaunay triangulation) ou triangulação de Delaunay com restrição desenvolvida por Anglada (1997), resolve problemas de concavidade, possíveis buracos encontrados na superfície. Podemos também observar a aplicação orientada a objeto, implementada no CDT, desenvolvida por Magalhães, Passaro e Abe (2000). Através de modificações no algoritmo de Triangulação de Delaunay é possível, por exemplo, obter a malha de elementos a ser utilizada pelo MEF. No Método dos Elementos Finitos (MEF) [ZIENKIEWICZ,89], o domínio de estudo é subdividido em pequenos subdomínios, denominados elementos finitos, e as equações diferenciais que representam o fenômeno físico em estudo são supostas válidas em cada um dos elementos. As variáveis de estado, ou seja, as incógnitas do problema são calculadas em um conjunto de pontos denominados pontos nodais. Os pontos vértices dos elementos finitos fazem parte desse conjunto de pontos. No interior dos elementos finitos as variáveis de estado são obtidas por meio de interpolações dos valores calculados nos pontos nodais. As dimensões geométricas desses elementos e/ou o tipo de interpolação devem ser escolhidos visando à obtenção de soluções acuradas para o problema físico, uma vez que a precisão do método está diretamente relacionada com a qualidade da subdivisão do domínio em elementos finitos e com os polinômios de interpolação. A biblioteca que será utilizada para o desenvolvimento do software em questão chama-se VTK. O VTK (Visualization ToolKit) [VTK] é um sistema de software gratuito de código fonte aberto, orientado por objectos, para gráficos 3D, visualização e processamento de imagem. Apesar de implementado em C++, o VTK integra um sistema de interfaces adequadas de forma a suportar desenvolvimento em linguagens C++, Tcl, Python e Java, permitindo assim aplicações complexas, rápida aplicação de protótipos e programação simples. O VTK fornece uma variedade de representação de dados incluindo conjuntos de pontos, polígonos, imagens, volumes e grelhas rectilíneas, estruturadas e não estruturadas. Contém leitores/importadores e escritores/exportadores para troca de dados com outras aplicações. Estão disponíveis centenas de filtros de processamento de dados, desde a convolução de imagem até à triangulação de Delaunay. O modelo de renderização do VTK suporta representações 2D, poligonais, volumétricas e de textura que podem ser combinadas. Além de dezenas de algoritmos de imagem diretamente para permitir ao usuário misturar imagens 2D/3D, algortmos de imagem e dados. A junção destas tecnologias revela-se capaz de originar programas de visualização adequados e extremamente eficazes, sem descurar todos os aspectos inerentes a uma boa interação homem/máquina. Esta biblioteca é implementada em linguagem C++, seguindo o conceito de programação orientada a objetos (POO). Isto representa uma grande vantagem, pois permite a expansão da estrutura de classes. A disponibilização do código fonte também torna possível a implementação de novas funcionalidades na biblioteca. O modelo de visualização do VTK é baseado no paradigma de fluxo de dados adotado por muitos sistemas comerciais. Neste paradigma, os módulos são mantidos conectados dentro do programa. Os módulos executam algoritmos de operação nos dados como um fluxo através do programa. A execução da visualização do programa é controlada em resposta à demanda para os dados (demand-driven) ou em resposta à entrada do usuário (event-driven). O interessante deste modelo é que ele é flexível, e pode ser rapidamente adaptado para diferentes tipos de dados ou novas implementações no algoritmo.
O modelo de visualização consiste de dois tipos básicos de objetos: objetos de processos e objetos de dados. Os objetos de processos são os módulos, ou partes do algoritmo de visualização do programa. Objetos de dados, também referenciados como conjuntos de dados (datasets), representam e habilitam operações no fluxo de dados através do programa. Estes objetos constituem um modelo extensível e serão tratados com maiores detalhes no desenvolvimento do projeto [SCHROEDER,96], um dos principais criadores de VTK, traz a seguir uma descrição rápida dos sete objetos básicos por trás da cena, mas estes sete são os mais frequentemente usados de extrema importância para o desenvolvimento futuro. a) vtkrenderwindow gerencia a janela no dispositivo de exibição; um ou mais renderizadores desenham dentro de uma instância do vtkrenderwindow; b) vtkrenderer coordena o processo de renderização envolvendo luzes, câmeras e atores; c) vtklight constitui uma fonte de luz para iluminar a cena; d) vtkcamera define a posição de visão, ponto focal e outras propriedades de visualização de cena; e) vtkactor representa um objeto renderizado na cena, incluindo suas propriedades e posição no sistema de coordenadas. (Nota: vtkactor é uma subclasse de vtkprop.vtkprop, por sua vez, é uma forma mais geral de representar um ator, que inclui anotações e classes de desenhos 2D); f) vtkproperty define as propriedades relacionadas à aparência de um ator, incluindo cor, transparência e propriedades de iluminação tais como reflexão especular e difusão. Também representam propriedades como superfície sólida ou linhas; g) vtkmapper é a representação geométrica para um ator. Mais do que um ator pode referir-se ao mesmo mapper. 2 OBJETIVOS O objetivo final deste projeto é a elaboração de um software de caráter científico, capaz de fazer a reconstituição de modelos bidimensionais, geração de malhas 2D não estruturadas, a partir de tomografias computadorizadas e/ou ressonância magnética, utilizando a Triangulaçao de Delaunay com restrição. Este interesse em entender e explorar o processo de reconstrução de imagens e reconstrução de imagens está diretamente à solução numérica de problemas científicos e de engenharia, como simulações de análise estrutural, devido a sua eficiência, que depende em grande parte da obtenção de um modelo geométrico fiel a estrutura que será analisada. Por isso o software a ser desenvolvido, será capaz de gerar modelos bidimensionais reconstituídos, que serão exportados para programas de análise estrutural, como o Ansys, que é um programa adotado para realização de simulações desta natureza. Espera-se que ao final do processo, o software para tratamento de imagens a ser desenvolvido, seja capaz de: Ler e interpretar imagens obtidas a partir de tomografias computadorizadas e/ou ressonância magnética em formato DICOM (formato das imagens médicas); Remontar o volume a partir das imagens lidas; Gerar a malha de superfície; Exportar para o formato STL - o mesmo formato utilizado por softwares de análise estrutural.
O projeto em desenvolvimento encontra-se em fase evolutiva, podendo sofrer algumas modificações no futuro, pretende-se realizar a implementação do software na plataforma Microsoft Windows, utilizando o ambiente de desenvolvimento do Microsoft Visual Studio 2005 Express Edition. Será criado então, um programa orientado a objetos de análise e visualização de imagens bidimensionais e geração de modelos estruturais. Em sistemas orientado a objetos, um objeto é definido como um conjunto de dados que representam a estrutura de uma entidade concreta ou abstrata e um conjunto de procedimentos que acessam esses dados e respondem sobre o comportamento da entidade em relação a eventos externos. O emprego da Programação Orientada a Objetos (POO) em sistemas dessa natureza é adequado não somente porque a POO permite modelar problemas do mundo real tão próximo quanto possível da visão que temos desse mundo, ou porque podese escrever programas que são mais facilmente compreendidos e estendidos, mas também porque observa-se uma identidade dos conceitos de modelos e objetos. Neste sistema, as propriedades da POO encapsulamento, herança e polimorfismo serão diretamente empregadas na especificação dos modelos estruturais. Além disso, um programa orientado a objetos é baseado em um modelo de computação definido em termos de objetos que se comunicam através do mecanismo de troca de mensagens. O tipo de um objeto, ou seja, sua estrutura e comportamento, é encapsulado em uma descrição de classe de objetos. Dizemos que objetos com estrutura e comportamentos comuns pertencem à mesma classe de objetos. Os objetos deste sistema serão organizados segundo esta hierarquia de classes. O objetivo dessa arquitetura é garantir que todo o código que se refere à camada visual, como por exemplo, a manipulação de formulários, controles visuais e os demais objetos que compõem a interface gráfica do usuário possam ser escritos em uma linguagem mais acessível como o C#, deixando para as camadas intermediárias, escritas em C++, que requerem maior cuidado com o gerenciamento de memória e manipulação de ponteiros, apenas as tarefas de carregamento, análise e tratamento dos objetos constituídos por imagens, cuja instância irá trafegar entre os demais níveis. REFERÊNCIAS BIBLIOGRÁFICAS CAPELLO SOUSA, E. A., Identificação de Imagens Aplicada a Modelagem de Estruturas Ósseas em Bio-Engenharias. Bauru: Faculdade de Engenharia e Tecnologia, Universidade Estadual Paulista. Janeiro, 2004. MAGALHÃES, G. M., PASSARO, A., ABE, N. M., Geração de Malha de Delaunay Orientada a Objetos, Anais do Worcomp 2000 Workshop de Computação, São José dos Campos, SP, 17-18/10/2000. MOURA, A. L. Uma Proposta para a Triangulação De Delaunay 2D e Localização Planar de Pontos em Ocaml, 2006, 42-43 f. Tese (Doutorado em Ciências) Departamento de Engenharia Elétrica, Universidade Federal de Uberlândia, Brasil. SCHROEDER, W. J., GEVECI, B., MALATERRE, M., Compatible Triangulations of Spatial Decompositions, 15th IEEE Visualization 2004, 2004. SCHROEDER, W. J., MARTIN, K. M., LORENSEN W. E., The design and iimplementation of an object-oriented toolkit for 3D graphics and vsualization, In Proceedings of Visualization 96, 1996.
VTK - The Visualization Toolkit, disponível em: http://www.vtk.org ZIENKIEWICZ, O. C. and TAYLOR, R. L., The Finite element method. vol.1, 4th edition, MacGraw-Hill Book, 1989.