Marching Cubes Multiresolução Sandro Santos Andrade Thomas de Araujo Buck UFBa - IM - DCC {sandrosa, thomas}@dcc.ufba.br http://www.dcc.ufba.br/~{sandrosa, thomas} Lista das Figuras 1 Cubo coletando dados em dois slices vizinhos............. 3 2 256 casos de triangulação reduzidos para 15.............. 4 3 triângulos gerados com cubos em dois tamanhos (2 à esquerda e 3 à direita).................................. 5 4 Malhas poligonais obtidas com cubos de tamanhos 32, 16 e 8 (da esquerda para a direita). O número de triângulos gerados foi 296, 1196 e 6344 respectivamente....................... 6 5 Acima : Malhas poligonais obtidas com limiar igual a 100 e cubos de tamanhos 16, 12 e 8 (da esquerda para a direita). O número de triângulos gerados foi 2288, 4698 e 12798 respectivamente. Abaixo : Malhas poligonais obtidas com limiar igual a 50 e cubos de tamanhos 16, 12 e 8 (da esquerda para a direita). O número de triângulos gerados foi 1754, 3446 e 9286 respectivamente............. 7 Resumo Um dos métodos mais difundidos para extração de aproximações poligonais de iso-superfícies é o algoritmo Marching Cubes. Este algoritmo, entretanto, possui como desvantagem a alta quantidade de polígonos gerados. O algoritmo Marching Cubes Multiresolução aqui apresentado reduz consideravelmente este número através de um cubo de tamanho variável. A malha poligonal resultante oferece uma boa representação da superfície em estudo. Universidade Federal da Bahia - Instituto de Matemática - Departamento de Ciência da Computação - Av. Ademar de Barros s/n - Ondina - 40.170-110 Salvador BA
1 Introdução Desde a formalização, no início do século, das teorias matemáticas que possibilitam a reconstrução tomográfica de imagens e com a criação das primeiras máquinas de tomografia computadorizada em 1967, o uso de imagens como forma de aquisição de informações sobre o estado de saúde dos pacientes tem sido largamente utilizado. Atualmente, encontramos diversas modalidades de obtenção de dados na área médica, entre elas a ultrassonografia, tomografia computadorizada e a ressonância magnética. Além da indubitável qualidade das imagens geradas por tais equipamentos tem-se a vantagem de possuirem alto grau de conteúdo médico e de serem não invasivas, ou seja, não há penetração de instrumentos no corpo do paciente. Para um maior aproveitamento e interpretação desses dados utiliza-se visualizações por computador. Estas visualizações, como as realizadas com o algoritmo Ray Casting [4], geram imagens de ótima qualidade e de grande informação médica. No entanto, é um processo custoso e demorado devido à grande quantidade de dados gerados pelos exames. O objetivo aqui é reduzir estes dados sem comprometer o caráter médico envolvido. Como resultados dos exames realizados, os dados são armazenados sob a forma de volumes, ou seja, várias imagens 2D (slices) colocadas uma sobre a outra. Dessa forma, um volume de dados é uma grade 3D discreta e regular de vértices (voxels) que representam a densidade do volume em cada ponto. Entre os tipos de visualização de volumes destaca-se a visualização de isosuperfícies ou superfícies de contorno(superfície onde todos os seus pontos possuem a mesma densidade) [3]. Aproximações poligonais de iso-superfícies são largamente utilizadas devido a uma considerável redução dos dados e à existência de suporte em hardware para visualização rápida das imagens. Além disso, o uso de triângulos favorece o cálculo das normais (e, consequentemente, a avaliação da função de iluminação) pelo fato de todos os seus pontos serem coplanares. 2 Marching Cubes Um dos mais difundidos algoritmos para poligonalização de iso-superfícies a partir de volumes de dados é o Marching Cubes (MC) [7]. O algoritmo é baseado na localização da superfície a partir de um cubo que irá coletar em seus vértices os valores das densidades de dois slices vizinhos (figura 1). O algoritmo determina como a superfície intersecta o cubo e então o move (ou marcha ) para a próxima posição(linha, coluna ou slice). Para encontrar a intersecção com o cubo atribuimos um (1) aos vértices que coletaram um valor de densidade maior ou igual ao valor da iso-superfície e zero (0) àqueles que possuem densidade menor que o valor da iso-superfície. A superfície intersecta as arestas que possuem dois extremos diferentes (0 e 1). Dessa forma, temos 2 8 casos possíveis de atribuição de valores aos vértices. Porém,
Figura 1: Cubo coletando dados em dois slices vizinhos. através de rotações no cubo e simetrias em relação às atribuições de valores temos estes casos reduzidos para quinze, como ilustrados na figura 2. Para promover esta redução, um índice de oito bits(cada um contendo a atribuição 0 ou 1 de cada vértice) fornece o número da entrada em uma look-up table que indica qual o caso a ser tratado e as devidas rotações e simetrias a serem realizadas. Os valores de limiar são então interpolados linearmente ao longo das arestas intersectadas. 3 Trabalhos Correlatos Como apresentado na seção 2 o MC promove uma boa representação da superfície em estudo, porém dentre suas desvantagens destaca-se a alta quantidade de polígonos gerados e, consequentemente, um alto custo computacional. Em volumes médicos o número de triângulos pode chegar a 100.000. Além disso, o algoritmo não trata resultados ambígüos de triangulação, podendo assim ocasionar buracos e deformações na superfície. Para reduzir a quantidade de polígonos gerados, existem algoritmos [10] (executados após o MC) que realizam a eliminação de triângulos irrelevantes à superfície. Segundo seus autores, o número de triângulos pode ser reduzido em até 75%. Não é um processo muito inteligente pois estamos gastando UCP para gerar triângulos que serão posteriormente eliminados. Um outro algoritmo de poligonalização é o Splitting-Box [8]. O Splitting-Box promove uma redução considerável no número de polígonos, porém possui o incoveniente de gerar quadriláteros, além de triângulos.
Figura 2: 256 casos de triangulação reduzidos para 15. Uma variação do algoritmo MC é o Marching Tetrahedra (MT) [1]. No MT o cubo é subdividido em seis tetraedros, onde cada um é analisado separadamente. Como vantagem deste algoritmo tem-se a redução nos casos a serem analisados (de 15 para 3). Além disso é um algoritmo que não possui resultados ambígüos. Outros algoritmos como triangulação de Delaunay e o diagrama de Voronoi [2, 5] têm como vantagem o reduzido número de triângulos gerados, no entanto, são algoritmos mais complexos e necessitam de processamento de imagens. 4 O algoritmo proposto O objetivo básico do Marching Cubes Multiresolução (MCMR) é gerar malhas poligonais com uma quantidade reduzida de triângulos evitando assim o uso do algoritmo de dizimação [10]. A idéia é seguir a mesma abordagem do MC tradicional com a vantagem de termos um cubo de tamanho variável n. Ou seja, o cubo irá marchar de n-1 em n-1 linhas, colunas e níveis (slices). O algoritmo proposto recebe dois parâmetros: o limiar (valor da iso-superfície) e o tamanho n do cubo (quantos voxels estão contidos em uma aresta do cubo). Desta forma, aumentamos o deslocamento do cubo ao longo das linhas, colunas e níveis do volume, reduzindo assim o número de triângulos gerados. A figura 3 apresenta algumas iterações do algoritmo ilustrando o seu funciona-
mento. À esquerda (com o cubo de tamanho 2) temos oito iterações e, consequentemente, um número maior de triângulos. À direita (com o cubo de tamanho 3) temos uma iteração somente, desprezando o voxel entre os extremos das arestas e reduzindo assim o número de triângulos gerados. Figura 3: triângulos gerados com cubos em dois tamanhos (2 à esquerda e 3 à direita). O tratamento dos quinze casos é feito de modo semelhante ao algoritmo tradicional (cálculo do índice e utilização de look-up tables, interpolações etc). Com esta abordagem, temos um sistema multiresolução de geometrias, que não afeta consideravelmente a forma da iso-superfície. Contamos apenas com malhas mais detalhadas e malhas menos detalhadas. 5 Implementação Seguindo o paradigma de orientação à objetos, foram implementadas as seguintes classes: List: Utilizada para gerenciamento e armazenamento de vértices e triângulos. TriangMesh: Utilizada para gerenciamento de malhas de triângulos. Composta de duas listas: lista de vértices e lista de triângulos. Vis: Classe responsável pela visualização de malhas poligonais. FastVol8: Responsável pelo gerenciamento e armazenamento de volumes de dados. MarchingCubesMR: Responsável pela extração multiresolução da geometria de iso-superfícies. Promove métodos tais como: setar volume, setar tamanho do cubo e setar limiar.
Em particular, a classe List foi implementada com o uso de templates [11] (recurso da linguagem C++ que favorece a reusabilidade do código). Desta forma, temos listas de várias entidades (vértices, triângulos etc) instanciadas a partir da mesma classe List. Não há necessidade da implementacão de uma classe para cada tipo de lista, visto que as operações a serem realizadas (inclusões, alterações) são as mesmas, diferindo apenas no conteúdo de cada lista. As malhas de triângulos geradas pelo algoritmo são exportadas sob um formato adequado para posterior renderização. Para extração das superfícies usou-se o seguinte código C++ : #include <stdlib.h> #include <CG/MarchingCubesMR.h> #define ARG_PROGRAM 0 #define ARG_INPUT_DENFILE 1 #define ARG_INPUT_THRESHOLD 2 #define ARG_INPUT_CUBESIZE 3 #define ARG_OUTPUT_TRIANGFILE 4 #define TOTAL_ARGS 5 void main (int argc, char**argv) { MarchingCubesMR mc; mc.setdenfile (argv[arg_input_denfile]); mc.setthreshold (atoi(argv[arg_input_threshold])); mc.setcubesize (atoi(argv[arg_input_cubesize])); mc.maketriangmesh (); mc.save (argv[arg_output_triangfile]); } Posteriormente, para alguns programas interativos de renderização e modelagem geométrica, usar-se-á OpenGL ou sua implementação em software Mesa. 6 Resultados Para verificar os efeitos da multiresolução foi criado um volume artificial contendo um simples cubo. Após a extração de várias superfícies em resoluções diferentes, obtivemos os resultados mostrados na figura 4. Exames de tomografia computadorizada e ressonância magnética geralmente são muito sensíveis a ruídos, dificultando assim uma análise correta dos dados. Para amenizar esses ruídos utiliza-se algoritmos de filtragem [6, 9]. Dois filtros foram implementados: o filtro da média e o filtro da mediana. O conjunto de imagens na figura 5 ilustra as malhas de triângulos obtidas a partir de um volume de tomografia computadorizada após filtragem. A partir de
Figura4: Malhaspoligonaisobtidascomcubosdetamanhos32, 16e8(daesquerda para a direita). O número de triângulos gerados foi 296, 1196 e 6344 respectivamente. Tamanho do cubo Quantidade de triângulos Tempo 64 20 80 32 278 01 01 16 2228 06 20 8 12798 02 58 54 Tabela 1: Tempo de extração de malhas poligonais em diferentes resoluções. uma variação do limiar obtivemos o crânio e o rosto do paciente e a partir de uma variação no tamanho do cubo obtivemos diferentes resoluções da malha. 7 Análise dos Resultados Vimos anteriormente que o número de triângulos extraídos de volumes médicos pode facilmente chegar a 100.000. Fazendo uma análise a nível de renderização, suponha-se uma imagem 256x256. Ao admitir que cada triângulo ocupe um pixel teríamos um máximo de 65535 triângulos por imagem. Desta forma, temos que 100.000 é um número relativamente alto para a renderização de pequenas imagens (pois um pixel conteria mais de um triângulo). Eventualmente, o Marching Cubes Multiresolução seria uma alternativa para a solução deste problema. As tabelas 1 e 2 quantificam o custo computacional para a extração e renderização das superfícies da figura 5. Uma outra aplicação do MCMR é a produção de animações. Como observado na tabela 2 o tempo de renderização de malhas muito densas impede a construção de animações satisfatórias (mínimo de 30 quadros por segundo). Desta forma, segundo uma técnica conhecida como refinamento progressivo anima-se o objeto de
Figura 5: Acima : Malhas poligonais obtidas com limiar igual a 100 e cubos de tamanhos 16, 12 e 8 (da esquerda para a direita). O número de triângulos gerados foi 2288, 4698 e 12798 respectivamente. Abaixo : Malhas poligonais obtidas com limiar igual a 50 e cubos de tamanhos 16, 12 e 8 (da esquerda para a direita). O número de triângulos gerados foi 1754, 3446 e 9286 respectivamente. interesse em malhas menos densas e, escolhida a posição para obter mais detalhes, interrompe-se a animação e inicia-se o refinamento, renderizando as malhas mais densas. Teríamos então uma hierarquia de malhas poligonais. Como desvantagem, tem-se que o MCMR continua sendo um algoritmo com resultados ambígüos. Para o futuro, implementar-se-á o Marching Tetrahedra Multiresolução, eliminando assim o problema da ambigüidade. Foi notado ainda que o MCMR despreza todos os voxels contidos nas arestas (a menos dos extremos) do cubo durante a análise dos casos. Realizar-se-á testes para estudar a alternativa de encolher o volume ao invés de aumentarmos o tamanho do cubo. 8 Conclusões Devido à necessidade médica de resultados em tempo real, algoritmos de poligonalização de superfícies implícitas estão sendo cada vez mais utilizados, pois o
Tamanho do cubo Quantidade de triângulos Tempo 64 20 61 32 278 91 16 2228 03 60 8 12798 01 05 27 Tabela 2: Tempo de renderização das malhas citadas na tabela 1. suporte em hardware existente promove visualizações satisfatórias a nível de tempo e qualidade. O alto custo computacional e a grande quantidade de dados gerados pelos exames médicos foram os principais fatores de motivação à construção do MCMR. Nesta contribuição foram discutidos a idéia, implementação e resultados do algoritmo proposto. Também foram analisados vantagens, desvantagens e trabalhos futuros, ratificando assim a crescente importância da computação visual na medicina. Agradecimentos Os autores gostariam de agradecer ao CNPq e à PRPPG/UFBa pela concessão de bolsas de Recém-Doutor e Kit-Doutor, sem as quais este trabalho não teria sido possível e aos demais membros do GICoV (Grupo de Interesse em Computaç~ao Visual): Eduardo Prates de Oliveira, Fábio André Silva Reis, Maurício de Azevedo Gomes e Mitre Costa Dourado. Bibliografia [1] Bernardo Piquet Carneiro, Cláudio T. Silva e Arie E. Kaufman. Tetra-cubes: An algorithm to generate 3d isosurfaces based upon tetrahedra. Anais do IX SIBGRAPI, pages 205 210, October 1996. [2] Luiz Henrique de Figueiredo e Paulo César Pinto Carvalho. Introdução à Geometria Computacional. Instituto de Matemática Pura e Aplicada (IMPA), Rio de Janeiro RJ, Maio 1991. 18 o Colóquio Brasileiro de Matemática. [3] Jonas de Miranda Gomes e Luiz Velho. Implicit Objects in Computer Graphics. Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq) Instituto de Matemática Pura e Aplicada (IMPA), Rio de Janeiro RJ, 1992. Monografias de Matemática N o 53. [4] Eduardo Prates de Oliveira. Implementação paralela de um algoritmo de visualização volumétrica. Technical report, Universidade Federal da Bahia, Instituto de Matemática, Departamento de Ciência da Computação, 1997.
[5] Pedro J. de Resende e Jorge Stolfi. Fundamentos de Geometria Computacional. IX Escola de Computação, Recife PE, 24 31 Julho 1994. [6] Nelson D. A. Mascarenhas e Flávio R. D. Velasco. Processamento Digital de Imagens. IV Escola Brasileiro Argentina de Informática (EBAI), Termas de Rio Hondo, Argentina, Janeiro 1989. [7] William E. Lorensen e Harvey E. Cline. Marching Cubes: a high resolution 3d surface construction algorithm. Computer Graphics, 21(4):163 169, July 1987. [8] Heinrich Müller e Michael Stark. Adaptive generation of surfaces in volume data. The Visual Computer, 9(4):182 199, January 1993. [9] Rafael C. Gonzalez e Paul Wintz. Digital Image Processing. Addison Wesley, 1987. [10] William J. Schroeder, Jonathan A. Zarge e William E. Lorensen. Decimation of triangle meshes. Computer Graphics, 26(2):65 70, July 1992. [11] Mark Allan Weiss. Algorithms, Data Structures and Problems Solving With C++. Addison-Wesley Publishing Company, July 1996. Part I, Chapter 3.