Marching Cubes Multiresolu¸
c˜
ao
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¸c˜ao reduzidos para 15. . . 4 3 triˆangulos gerados com cubos em dois tamanhos (2 `a esquerda e 3 `a
direita). . . 5 4 Malhas poligonais obtidas com cubos de tamanhos 32, 16 e 8 (da
esquerda para a direita). O n´umero de triˆangulos 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´umero de triˆangulos 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´umero de triˆangulos gerados foi 1754, 3446 e 9286 respectivamente. . . 7
Resumo
Um dos m´etodos mais difundidos para extra¸c˜ao de aproxima¸c˜oes poligonais de iso-superf´ıcies ´e o algoritmo Marching Cubes. Este algoritmo, entretanto, possui como desvantagem a alta quantidade de pol´ıgonos gerados. O al-goritmo Marching Cubes Multiresolu¸c˜ao aqui apresentado reduz considera-velmente este n´umero atrav´es de um cubo de tamanho vari´avel. A malha poligonal resultante oferece uma boa representa¸c˜ao da superf´ıcie em estudo.
∗Universidade Federal da Bahia - Instituto de Matem´atica - Departamento de Ciˆencia da Computa¸c˜ao - Av. Ademar de Barros s/n - Ondina - 40.170-110 Salvador BA
1
Introdu¸
c˜
ao
Desde a formaliza¸c˜ao, no in´ıcio do s´eculo, das teorias matem´aticas que possibilitam a reconstru¸c˜ao tomogr´afica de imagens e com a cria¸c˜ao das primeiras m´aquinas de tomografia computadorizada em 1967, o uso de imagens como forma de aquisi¸c˜ao de informa¸c˜oes sobre o estado de sa´ude dos pacientes tem sido largamente uti-lizado. Atualmente, encontramos diversas modalidades de obten¸c˜ao de dados na ´area m´edica, entre elas a ultrassonografia, tomografia computadorizada e a res-sonˆancia magn´etica. Al´em da indubit´avel qualidade das imagens geradas por tais equipamentos tem-se a vantagem de possuirem alto grau de conte´udo m´edico e de serem n˜ao invasivas, ou seja, n˜ao h´a penetra¸c˜ao de instrumentos no corpo do paciente. Para um maior aproveitamento e interpreta¸c˜ao desses dados utiliza-se visualiza¸c˜oes por computador.
Estas visualiza¸c˜oes, como as realizadas com o algoritmo Ray Casting [4] , geram imagens de ´otima qualidade e de grande informa¸c˜ao m´edica. No entanto, ´e um processo custoso e demorado devido `a grande quantidade de dados gerados pelos exames. O objetivo aqui ´e reduzir estes dados sem comprometer o car´ater m´edico envolvido.
Como resultados dos exames realizados, os dados s˜ao armazenados sob a forma de volumes, ou seja, v´arias imagens 2D (slices) colocadas uma sobre a outra. Dessa forma, um volume de dados ´e uma grade 3D discreta e regular de v´ertices (voxels) que representam a densidade do volume em cada ponto.
Entre os tipos de visualiza¸c˜ao de volumes destaca-se a visualiza¸c˜ao de iso-superf´ıcies ou iso-superf´ıcies de contorno (superf´ıcie onde todos os seus pontos possuem a mesma densidade) [3]. Aproxima¸c˜oes poligonais de iso-superf´ıcies s˜ao largamente utilizadas devido a uma consider´avel redu¸c˜ao dos dados e `a existˆencia de suporte em hardware para visualiza¸c˜ao r´apida das imagens. Al´em disso, o uso de triˆangulos favorece o c´alculo das normais (e, consequentemente, a avalia¸c˜ao da fun¸c˜ao de ilumina¸c˜ao) pelo fato de todos os seus pontos serem coplanares.
2
Marching Cubes
Um dos mais difundidos algoritmos para poligonaliza¸c˜ao de iso-superf´ıcies a partir de volumes de dados ´e o Marching Cubes (MC) [7]. O algoritmo ´e baseado na localiza¸c˜ao da superf´ıcie a partir de um cubo que ir´a coletar em seus v´ertices os valores das densidades de dois slices vizinhos (figura 1). O algoritmo determina como a superf´ıcie intersecta o cubo e ent˜ao o move (ou ”marcha”) para a pr´oxima posi¸c˜ao (linha, coluna ou slice). Para encontrar a intersec¸c˜ao com o cubo atribuimos um (1) aos v´ertices que coletaram um valor de densidade maior ou igual ao valor da iso-superf´ıcie e zero (0) `aqueles que possuem densidade menor que o valor da iso-superf´ıcie.
Figura 1: Cubo coletando dados em dois slices vizinhos.
atrav´es de rota¸c˜oes no cubo e simetrias em rela¸c˜ao `as atribui¸c˜oes de valores temos estes casos reduzidos para quinze, como ilustrados na figura 2.
Para promover esta redu¸c˜ao, um ´ındice de oito bits (cada um contendo a atribui¸c˜ao 0 ou 1 de cada v´ertice) fornece o n´umero da entrada em uma look-up table que in-dica qual o caso a ser tratado e as devidas rota¸c˜oes e simetrias a serem realizadas. Os valores de limiar s˜ao ent˜ao interpolados linearmente ao longo das arestas inter-sectadas.
3
Trabalhos Correlatos
Como apresentado na se¸c˜ao 2 o MC promove uma boa representa¸c˜ao da superf´ıcie em estudo, por´em dentre suas desvantagens destaca-se a alta quantidade de pol´ıgonos gerados e, consequentemente, um alto custo computacional. Em volumes m´edicos o n´umero de triˆangulos pode chegar a 100.000. Al´em disso, o algoritmo n˜ao trata re-sultados amb´ıg¨uos de triangula¸c˜ao, podendo assim ocasionar buracos e deforma¸c˜oes na superf´ıcie.
Para reduzir a quantidade de pol´ıgonos gerados, existem algoritmos [10] (execu-tados ap´os o MC) que realizam a elimina¸c˜ao de triˆangulos irrelevantes `a superf´ıcie. Segundo seus autores, o n´umero de triˆangulos pode ser reduzido em at´e 75%. N˜ao ´e um processo muito inteligente pois estamos gastando UCP para gerar triˆangulos que ser˜ao posteriormente eliminados.
Um outro algoritmo de poligonaliza¸c˜ao ´e o Splitting-Box [8]. O Splitting-Box promove uma redu¸c˜ao consider´avel no n´umero de pol´ıgonos, por´em possui o in-coveniente de gerar quadril´ateros, al´em de triˆangulos.
Figura 2: 256 casos de triangula¸c˜ao reduzidos para 15.
Uma varia¸c˜ao do algoritmo MC ´e o Marching Tetrahedra (MT) [1]. No MT o cubo ´e subdividido em seis tetraedros, onde cada um ´e analisado separadamente. Como vantagem deste algoritmo tem-se a redu¸c˜ao nos casos a serem analisados (de 15 para 3). Al´em disso ´e um algoritmo que n˜ao possui resultados amb´ıg¨uos.
Outros algoritmos como triangula¸c˜ao de Delaunay e o diagrama de Voronoi [2, 5] tˆem como vantagem o reduzido n´umero de triˆangulos gerados, no entanto, s˜ao algoritmos mais complexos e necessitam de processamento de imagens.
4
O algoritmo proposto
O objetivo b´asico do Marching Cubes Multiresolu¸c˜ao (MCMR) ´e gerar malhas po-ligonais com uma quantidade reduzida de triˆangulos evitando assim o uso do algo-ritmo de dizima¸c˜ao [10]. A id´eia ´e seguir a mesma abordagem do MC tradicional com a vantagem de termos um cubo de tamanho vari´avel n. Ou seja, o cubo ir´a ”marchar”de n-1 em n-1 linhas, colunas e n´ıveis (slices).
O algoritmo proposto recebe dois parˆametros: o limiar (valor da iso-superf´ıcie) e o tamanho n do cubo (quantos voxels est˜ao 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´umero de triˆangulos gerados.
mento. `A esquerda (com o cubo de tamanho 2) temos oito itera¸c˜oes e, conse-quentemente, um n´umero maior de triˆangulos. `A direita (com o cubo de tamanho 3) temos uma itera¸c˜ao somente, desprezando o voxel entre os extremos das arestas e reduzindo assim o n´umero de triˆangulos gerados.
Figura 3: triˆangulos gerados com cubos em dois tamanhos (2 `a esquerda e 3 `a direita).
O tratamento dos quinze casos ´e feito de modo semelhante ao algoritmo tradi-cional (c´alculo do ´ındice e utiliza¸c˜ao de look-up tables, interpola¸c˜oes etc). Com esta abordagem, temos um sistema multiresolu¸c˜ao de geometrias, que n˜ao afeta consideravelmente a forma da iso-superf´ıcie. Contamos apenas com malhas mais detalhadas e malhas menos detalhadas.
5
Implementa¸
c˜
ao
Seguindo o paradigma de orienta¸c˜ao `a objetos, foram implementadas as seguintes classes:
List: Utilizada para gerenciamento e armazenamento de v´ertices e triˆangulos. TriangMesh: Utilizada para gerenciamento de malhas de triˆangulos. Composta de duas listas: lista de v´ertices e lista de triˆangulos.
Vis: Classe respons´avel pela visualiza¸c˜ao de malhas poligonais.
FastVol8: Respons´avel pelo gerenciamento e armazenamento de volumes de da-dos.
MarchingCubesMR: Respons´avel pela extra¸c˜ao multiresolu¸c˜ao da geometria de iso-superf´ıcies. Promove m´etodos 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´odigo). Desta forma, temos listas de v´arias entidades (v´ertices, triˆangulos etc) instanciadas a partir da mesma classe List. N˜ao h´a necessidade da implementac˜ao de uma classe para cada tipo de lista, visto que as opera¸c˜oes a serem realizadas (inclus˜oes, altera¸c˜oes) s˜ao as mesmas, diferindo apenas no conte´udo de cada lista.
As malhas de triˆangulos geradas pelo algoritmo s˜ao exportadas sob um formato adequado para posterior renderiza¸c˜ao. Para extra¸c˜ao das superf´ıcies usou-se o seguinte c´odigo 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¸c˜ao e modelagem geom´etrica, usar-se-´a OpenGL ou sua implementa¸c˜ao em software Mesa.
6
Resultados
Para verificar os efeitos da multiresolu¸c˜ao foi criado um volume artificial contendo um simples cubo. Ap´os a extra¸c˜ao de v´arias superf´ıcies em resolu¸c˜oes diferentes, obtivemos os resultados mostrados na figura 4.
Exames de tomografia computadorizada e ressonˆancia magn´etica geralmente s˜ao muito sens´ıveis a ru´ıdos, dificultando assim uma an´alise correta dos dados. Para amenizar esses ru´ıdos utiliza-se algoritmos de filtragem [6, 9]. Dois filtros foram implementados: o filtro da m´edia e o filtro da mediana.
Figura 4: Malhas poligonais obtidas com cubos de tamanhos 32, 16 e 8 (da esquerda para a direita). O n´umero de triˆangulos gerados foi 296, 1196 e 6344 respectiva-mente.
Tamanho do cubo Quantidade de triˆangulos Tempo
64 20 80
32 278 01”01
16 2228 06”20
8 12798 02’58”54
Tabela 1: Tempo de extra¸c˜ao de malhas poligonais em diferentes resolu¸c˜oes.
uma varia¸c˜ao do limiar obtivemos o crˆanio e o rosto do paciente e a partir de uma varia¸c˜ao no tamanho do cubo obtivemos diferentes resolu¸c˜oes da malha.
7
An´
alise dos Resultados
Vimos anteriormente que o n´umero de triˆangulos extra´ıdos de volumes m´edicos pode facilmente chegar a 100.000. Fazendo uma an´alise a n´ıvel de renderiza¸c˜ao, suponha-se uma imagem 256x256. Ao admitir que cada triˆangulo ocupe um pixel ter´ıamos um m´aximo de 65535 triˆangulos por imagem. Desta forma, temos que 100.000 ´e um n´umero relativamente alto para a renderiza¸c˜ao de pequenas imagens (pois um pixel conteria mais de um triˆangulo). Eventualmente, o Marching Cubes Multiresolu¸c˜aoseria uma alternativa para a solu¸c˜ao deste problema. As tabelas 1 e 2 quantificam o custo computacional para a extra¸c˜ao e renderiza¸c˜ao das superf´ıcies da figura 5.
Uma outra aplica¸c˜ao do MCMR ´e a produ¸c˜ao de anima¸c˜oes. Como observado na tabela 2 o tempo de renderiza¸c˜ao de malhas muito densas impede a constru¸c˜ao de anima¸c˜oes satisfat´orias (m´ınimo de 30 quadros por segundo). Desta forma, segundo uma t´ecnica 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´umero de triˆangulos 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´umero de triˆangulos gerados foi 1754, 3446 e 9286 respectivamente.
interesse em malhas menos densas e, escolhida a posi¸c˜ao para obter mais detalhes, interrompe-se a anima¸c˜ao e inicia-se o refinamento, renderizando as malhas mais densas. Ter´ıamos ent˜ao uma hierarquia de malhas poligonais.
Como desvantagem, tem-se que o MCMR continua sendo um algoritmo com resultados amb´ıg¨uos. Para o futuro, implementar-se-´a o Marching Tetrahedra Mul-tiresolu¸c˜ao, eliminando assim o problema da ambig¨uidade.
Foi notado ainda que o MCMR despreza todos os voxels contidos nas arestas (a menos dos extremos) do cubo durante a an´alise dos casos. Realizar-se-´a testes para estudar a alternativa de ”encolher” o volume ao inv´es de aumentarmos o tamanho do cubo.
8
Conclus˜
oes
poligo-Tamanho do cubo Quantidade de triˆangulos Tempo
64 20 61
32 278 91
16 2228 03”60
8 12798 01’05”27
Tabela 2: Tempo de renderiza¸c˜ao das malhas citadas na tabela 1.
suporte em hardware existente promove visualiza¸c˜oes satisfat´orias a n´ıvel de tempo e qualidade. O alto custo computacional e a grande quantidade de dados gerados pelos exames m´edicos foram os principais fatores de motiva¸c˜ao `a constru¸c˜ao do MCMR. Nesta contribui¸c˜ao foram discutidos a id´eia, implementa¸c˜ao e resultados do algoritmo proposto. Tamb´em foram analisados vantagens, desvantagens e tra-balhos futuros, ratificando assim a crescente importˆancia da computa¸c˜ao visual na medicina.
Agradecimentos
Os autores gostariam de agradecer ao CNPq e `a PRPPG/UFBa pela concess˜ao de bolsas de Rec´em-Doutor e Kit-Doutor, sem as quais este trabalho n˜ao teria sido poss´ıvel e aos demais membros do GICoV (Grupo de Interesse em Computa¸c~ao Visual): Eduardo Prates de Oliveira, F´abio Andr´e Silva Reis, Maur´ıcio de Azevedo Gomes e Mitre Costa Dourado.
Bibliografia
[1] Bernardo Piquet Carneiro, Cl´audio 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´esar Pinto Carvalho. Introdu¸c˜ao `a Geometria Computacional. Instituto de Matem´atica Pura e Aplicada (IMPA), Rio de Janeiro – RJ, Maio 1991. 18o Col´oquio Brasileiro de Matem´atica. [3] Jonas de Miranda Gomes e Luiz Velho. Implicit Objects in Computer
Graph-ics. Conselho Nacional de Desenvolvimento Cient´ıfico e Tecnol´ogico (CNPq) – Instituto de Matem´atica Pura e Aplicada (IMPA), Rio de Janeiro – RJ, 1992. Monografias de Matem´atica No 53.
[4] Eduardo Prates de Oliveira. Implementa¸c˜ao paralela de um algoritmo de visualiza¸c˜ao volum´etrica. Technical report, Universidade Federal da Bahia, Instituto de Matem´atica, Departamento de Ciˆencia da Computa¸c˜ao, 1997.
[5] Pedro J. de Resende e Jorge Stolfi. Fundamentos de Geometria Computacional. IX Escola de Computa¸c˜ao, Recife PE, 24 – 31 Julho 1994.
[6] Nelson D. A. Mascarenhas e Fl´avio R. D. Velasco. Processamento Digital de Imagens. IV Escola Brasileiro Argentina de Inform´atica (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¨uller 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.