Visualização Científica
Pode-se definir Visualização Científica como sendo a disciplina que estuda e desenvolve métodos, técnicas e equipamentos para visualizar dados científicos, que por sua vez são informações obtidas por medições, observações ou simulações de experimentos científicos.
A Visualização Científica constitui-se basicamente num conjunto de ferramentas e metodologias fundamentais para [Nielson90]:
descoberta e entendimento: simulações de alto desempenho e instrumentação avançada atuais têm gerado grandes volumes de dados nas mais diversas áreas. Motivada pela falta de conhecimento do conteúdo dos dados, a exploração não direcionada deles pode revelar relacionamentos e testar hipóteses. A análise destes dados é impossível sem o uso de ferramentas adequadas de visualização.
comunicação e ensino: redes metropolitanas e corporativas têm possibilitado compartilhamento e disseminação do conhecimento à longa distância. Para entender, descobrir, comunicar e ensinar fenômenos, engenheiros e professores podem usar recursos de visualização interativos capazes de ilustrar o relacionamento de elementos das bases de dados.
suporte à decisão: recursos visuais de análise de dados mais poderosos, baseados na simulação e caracterização de processos, são fundamentais para a diminuição do tempo de análise e decisão em projetos. Estes recursos são fundamentais num contexto internacional onde a agilidade de projeto e execução são fatores determinantes na competividade industrial.
Devido ao uso mais eficiente do tempo e recursos do cientista, sistemas de visualização podem reduzir custos na busca pelo conhecimento científico e consequentemente uma análise pode ser completada em menos tempo. Assim, visualização científica pode aumentar a produtividade científica.
Visualização Volumétrica
Os conceitos e ferramentas de visualização científica possuem grande interação com outras disciplinas. Fatores humanos (percepção e psicológicos) oferecem um base científica para entender o desempenho visual humano, suas habilidades e limitações. Especialistas em computação gráfica providenciam algoritmos e ferramentas para transformar valores de dados numéricos em pinturas. Artistas e projetistas gráficos oferecem seus conhecimentos de estética e outras exigências de projeto para aumentar a interpretabilidade de representações visuais. Cientistas definem suas necessidades para explorar dados científicos e assim determinam as questões para exploração visual.
Visualização Volumétrica (volume visualization) é um termo geral que descreve, um conjunto de algoritmos e técnicas que permitem efetuar a representação, manipulação e lapidação (rendering) de dados volumétricos [AVILA92].
Como o ambiente do ser humano é n-dimensional, não é surpresa que esforços computacionais para modelar fenômenos naturais produzam dados n-dimensionais. Neste sentido pode-se definir Visualização Volumétrica como sendo um subconjunto da Visualização Científica a qual estuda dados n-dimensionais dispostos no espaço.
De acordo com [Kaufman91]: "Visualização Volumétrica é um método para extrair informações de dados volumétricos, através do uso de computação gráfica interativa e imageamento, e está relacionada com representação, manipulação e renderização desses dados".
Entretanto, atualmente a quantidade dos dados gerados sempre excedem a capacidade de processamento e armazenamento de sistemas convencionais. Assim, supercomputadores, multiprocessadores e multicomputadores são opções para visualização desses dados. Além disso, a demanda por processamento é normalmente orientada para visualização interativa e de tempo-real, o que requer equipamentos específicicos, não-convencionais e custosos.
Em computação gráfica, renderizar é o processo no qual uma descrição abstrata de uma cena é convertida em uma imagem. Renderização Volumétrica é uma medotologia poderosa de visualização de grandes dados escalares e vetoriais amostrados em três ou mais dimensões. Esta técnica inclue o conjunto de algoritmos, técnicas e metodologias relacionadas diretamente com o processo de síntese de imagens de dados organizados em forma de volume.
As duas principais técnicas usadas em visualização volumétrica são renderização volumétrica por isosuperfície e direta. A diferença-chave entre estas técnicas consiste no tipo do elemento central utilizado na renderização. Enquanto renderização por isosuperfície desenha superfícies geométricas, a renderização direta desenha o resultado de uma função aplicada sobre todos os valores vistos no raio de luz que atravessa a base de dados.
Renderização Volumétrica Direta
Na renderização direta, raios são traçados entre o espaço do objeto e o observador. O volume é amostrado em intervalos regulares ao longo do raio, onde os valores das amostras são compostos até que a opacidade torna-se unitária ou os raios saiam do espaço do objeto. A cor composta pelas amostras ao longo de cada raio traçado é a cor final de cada píxel da tela.
Os métodos de renderização volumétrica direta podem ser divididos em duas categorias de mapeamento: forward (espaço do objeto) e backward (espaço da imagem). Mapeamento forward projeta vóxeis individuais no plano da imagem. Mapeamento backward lança raios do plano da imagem até o dado volumétrico.
Vóxel é a unidade básica de um dado volumétrico. Pode-se considerar o vóxel como uma amostra no espaço tridimensional de um determinado volume de dados. Desta forma o vóxel é caracterizado por uma posição espacial e corresponde a uma ou mais grandezas numéricas associadas a ele que representem propriedades próprias do experimento. Dentre os diferentes tipos de dados ou grandezas que um vóxel pode representar pode-se citar: densidade, pressão, temperatura, carga eletrostática, tensão e campo eletromagnético.
Volume consiste em um conjunto de vóxeis. A manifestação mais comum de volumes são os cartesianos homogêneos, ou seja, volumes organizados em grades cartesianas regulares onde todos os vóxeis representam valores de uma mesma grandeza.
Célula vóxel é um conjunto de vóxeis adjacentes conectados segundo uma topologia arbitrária definindo um espaço fechado. A forma mais comum de célula vóxel é um cubo, onde cada um dos oito vértices é definido por um vóxel. Alguns algoritmos na literatura utilizam outros tipos de célula vóxel como tetraedros e pentaedros.
Dado é um termo utilizado de maneira geral para referenciar áxeis, píxeis e vóxeis. Áxel é um elemento genérico de um vetor unidimensional. Píxel é um elemento genérico de uma imagem bidimensional. E Vóxel é um elemento genérico de um volume tridimensional.
A visualização volumétrica faz uso extensivo de técnicas de interpolação numérica. Normalmente a função de interpolação é tridimensional, entretanto, dado o alto custo computacional, técnicas recentes de apresentação volumétrica interativa têm feito de técnicas de interpolação 2D. As técnicas de interpolação mais usadas são: vizinho próximo, tri-linear, tri-cúbica, splines volumétricas e método de Shepard. Interpolações de maior ordem podem ser utilizadas com a desvantagem de serem mais custosas em termos computacionais.
Na computação gráfica convencional, a normal da superfície é necessária para sombrear um píxel de um polígono que é renderizado. Esta normal é usada nos modelos de sombreamento de Gouraud e Phong, junto com outros parâmetros, para deixar a cena o mais realista possível. Na visualização volumétrica não existe normal da superfície disponível, já que não se sabe onde uma superfície está numa base de dados volumétrica. Assim a normal da superfície é substituída pelo gradiente no modelo de iluminação, sendo utilizado nas etapas de sombreamento e classificação do processo de renderização volumétrica.
O gradiente pode ser entendido como a medida que expressa a diferença nos valores dos vóxeis na vizinhança de um vóxel. Esta informação é muito importante em visualização volumétrica pois representa o comportamento da estrutura da base de dados. Por exemplo, dois metais diferentes em uma engrenagem irão provavelmente ter diferentes valores numa amostragem feita por Tomografia Computadorizada. Assim o gradiente irá significar a fronteira entre os metais e sua direção informará a orientação desta fronteira.
O gradiente é portanto um vetor n-dimensional e sua magnitude é o seu tamanho. Se a magnitude do gradiente é zero, significa que não existe mudança nos valores dos vóxeis na vizinhança. Pelo exemplo apresentado acima, a vizinhança é formada pelo mesmo material. Na Equação 3?1 estão apresentados matematicamente um gradiente tridimensional e sua magnitude.
Gradientes volumétricos possuem uma importância muito grande, na maioria dos algoritmos encontrados na literatura. Os gradientes são necessários principalmente para filtragem, segmentação, classificação e apresentação dos vóxeis.
Várias aproximações foram propostas na literatura e a escolha de um método de aproximação do gradiente deve levar em conta vários aspectos (desejáveis ou não) como: complexidade computacional, vizinhança, sensibilidade a ruído e precisão. Dentre as técnicas de estimativa de gradiente mais conhecidas destacam-se: diferenças centrais, diferenças parciais, método de Sobel e estimativa por função interpoladora.
Tonalização volumétrica refere-se à aplicação de modelos de iluminação aos objetos no interior de um volume. A transmissão de luz pelo interior do volume pode ser modelada como um problema de transporte de radiação. Por questões de desempenho e limitações nos atuais modelos de iluminação volumétrica, normalmente são utilizados modelos de iluminação de espalhamento simples (single scattering) onde é considerada apenas a propagação do raio de luz da fonte até o observador, e os efeitos de iluminação entre vóxeis percorridos.
Classificação volumétrica é uma etapa muito importante no processo de lapidação volumétrica. O termo lapidação não tem uma definição formal e precisa, mas de forma geral, relaciona-se com o processo de seleção de vóxeis visíveis e a respectiva atribuição de parâmetros ópticos (material), como índices de reflexão e absorção de luz, opacidade, cor e textura.
Os métodos de classificação podem ser globais ou locais. Métodos globais de classificação são aqueles aplicados a todos os vóxeis. Métodos locais de classificação são aqueles aplicados a porções ou regiões do volume, sendo necessário o uso de algoritmos de segmentação, como uma etapa preliminar para a delimitação do volume local a ser classificado.
Após as etapas de classificação e tonalização os vóxeis estão com opacidade e cor atribuídos. Composição volumétrica é responsável por processar as contribuições de cor e opacidade das amostragens de um raio na cor do píxel final da imagem. Finalmente a informação das cores é armazenada em um buffer de frames para projeção.
Raycasting
O algoritmo raycasting percorre um caminho orientado pelos píxeis da imagem até a base de dados. Para cada píxel, um raio é lançado em direção aos dados onde pontos amostrados em sua extensão determinam cor e opacidade, atribuídos pela fase de classificação. Em raycasting considera-se apenas a luz ambiente, a qual não considera pontos de luz, ou seja, não se considera luz difusa nem luz especular do modelo de iluminação. Também não são consideradas reflexões múltiplas. Assim a cor e a opacidade dos vóxeis amostrados são aplicadas diretamente na composição da imagem final.
A fase de composição é a mais importante no algoritmo raycasting. Ela pode ser feita de formas diferentes e é dependente das características da aplicação. Algumas implementações conhecidas podem ser citadas: primeiro valor, média das amostras, máxima intensidade e acumulativa.
Estas implementações pode ser facilmente entendidas considerando os valores dos vóxeis amostrados ao longo do raio. A Figura ? abaixo considera este caminho e apresenta os valores dos píxeis para implementação. O primeiro valor considera o valor do primeiro vóxel encontrado numa dada faixa de valores. A média das amostras é calculada pelo caminho completo do raio. A máxima intensidade corresponde ao maior valor encontrado no caminho. E finalmente, a implementação acumulativa considera a opacidade atribuída a cada vóxel e termina quando a cor do píxel torna-se totalmente opaca (opacidade igual à um) ou o raio atravessa a base de dados.
A implementação acumulativa do raycasting é a mais importante delas, pois expressa melhor as características internas da base de dados. Além disso, valores de opacidades podem ser atribuídos interativamente na fase de classificação dos vóxeis para melhorar o experimento. Nesta implementação, o término recente do cálculo do raio é um poderoso método de aceleração do raycasting, o qual consiste em finalizar a cor do píxel quando a opacidade acumulada alcançou valor unitário.
A composição pode ser feita de duas formas conforme o mapeamento do método de renderização, backward ou forward. Composição backward permite interromper antecipadamente o procedimento se um limiar foi alcançado. Já a composição forward pode simplificar o processo, mas não permite interromper o processo com antecedência.
Shear-Warp
Algoritmos de raycasting gastam uma quantidade significante de tempo processando cargas de reamostragem durante a interpolação dos vóxeis. Se a incidência de raios forem perpendiculares às fatias do volume, as cargas de reamostragens serão idênticas através das fatias. Esta é a premissa básica dos algoritmos shear-warp. Quando vistos numa orientação diferente da perpendicular às fatias do volume, estas podem ser "cortadas" de tal maneira que os raios podem ser assumidos como sendo perpendiculares às fatias.
Cada fatia pode agora ser reamostrada usando cargas que são invariantes através da fatia. As fatias podem ser compostas na ordem de frente-para-trás para produzir uma imagem intermediária. Esta imagem intermediária deve ser "empenada" para gerar a imagem final, o que requer uma segunda fase de reamostragem. Para cada píxel da imagem final, os quatros vizinhos mais próximos na imagem intermediária são localizados. O valor da cor do píxel na imagem final é determinada pela interpolação dos valores de cor desses vizinhos.
Considerando um plano de visão de píxeis e uma base de dados
de vóxeis, o algoritmo raytracing irá lançar raios através
do volume. Cada um desses raios atravessa fatias, o que requer um total de interpolações
e processamentos de cargas de reamostragem. Aqui, é o número de
cargas necessárias para serem computadas para cada interação
e pode ser quatro ou oito dependendo do número de planos de interpolação.
Para gerar uma imagem de píxeis de uma base de dados de vóxeis,
esta técnica requer interpolações e processamentos de cargas.
Isto mostra que a quantidade de operações do algoritmo shear-warp
é menor de que para o algoritmo raytracing. Apesar do algoritmo usar
um passo de reamostragem adicional na fase warp ao invés de uma simples
reamostragem nos algoritmos de raytracing, isto não produz uma deterioração
significante na qualidade de imagem [AMIN95].
Splatting
Esta técnica foi desenvolvida para melhorar a velocidade cálculo das técnicas de renderização volumétrica como raycasting, com a desvantagem de uma imagem de melhor qualidade Westover (1990). Ela difere do raycasting no método de projeção, pois splatting projeta vóxeis sobre um plano de visão 2D. Como cada vóxel é projetado sobre o plano da imagem, a "energia" do vóxel é espalhada sobre a imagem usando um núcleo de reconstrução centrado no ponto de projeção do vóxel. O núcleo de reconstrução é chamado splat, uma analogia com a marca deixada por uma bola de neve atirada contra um muro.
A técnica splatting tem sido usada para renderizar volumes diretamente de vários tipos de base de dados. O algoritmo básico projeta cada vóxel para a tela e compõe ele numa imagem acumulativa Swan et al. (1997). Splatting é um algoritmo object-order pois a imagem resultante é construída vóxel por vóxel, ao contrário de raycasting.
Conceitualmente o splat é considerado um núcleo de reconstrução 3D simétrico esfericamente centrado no vóxel. Mas como o splat é reconstruído em um raster de imagem 2D, ele pode ser implementado como um núcleo de reconstrução 2D, chamado de função footprint. A integração é usualmente pré-computada e a função footprint é representada como uma tabela de consulta amostrada em 2D.
Sobre certas condições (espaçamento do gride volumétrico
regular, projeção de visão ortográfica, núcleo
de splat simétrico radialmente) a tabela de footprint pode ser computada
uma única vez para todos os vóxeis. Sobre condições
diferentes, a função footprint varia e deve ser computada novamente
para cada vista (onde existe um núcleo não-simétrico) e
possivelmente para cada vóxel (onde existe uma projeção
perspectiva). Além disso, uma importante vantagem do splatting é
que somente os vóxeis relevantes para a imagem devem ser projetados e
rasterizados.
Bibliografia
[AMIN95] AMIN, M.B.; GRAMA, A.; SINGH V. Fast volume rendering using an efficient, scalable parallel formulation of the shear-warp algorithm. In: 1995 PARALLEL RENDERING SYMPOSIUM. Proceedings. Outubro 1995, p.7-14.[AVILA92] AVILA R.S., SOLIERAJSKI L.M. e KAUFMAN A.E. "Towards a Comprehensive Volume Visualization System". Visualization92 Conference Proceedings, Boston, Out 1992, pp. 13-20.
[BARTZ99] BARTZ D.; SCHNEIDER B. e SILVA C. "Rendering and Visualization in Parallel Environments". SIGGRAPH99 Course Notes, 1999.
[COX97] COX M. e ELLSWORTH D. "Managing Big Data for Scientific Visualization". SIGGRAPH97 Course Notes, Los Angeles, Ago 1997.
[KAUFMAN91] KAUFMAN A.E. "Introduction to Volume Visualization".In Volume Visualization, A.E. Kaufman (Ed.), IEEE Computer Society Press, 1991.
[KENWRIGHT99] KENWRIGHT D. "Visualization Algorithms For Gigabyte Datasets". SIGGRAPH99 Course Notes, Los Angeles, Ago 1999.
[NIELSON90] NIELSON G., SHRIVER B. e ROSENBLUM L.J. "Visualization in Scientific Computing". IEEE Computing Society Press Tutorial, 1990.
[ROSENBLUM94] ROSENBLUM L.J. et al. "Scientific Visualization Advances and Challenges". Academic Press in Association with IEEE Computing Society Press, 1994.
[SCHROEDER96] SCHROEDER W., MARTIN K. e LORENSEN B. "The Visualization Toolkit And Object Oriented Approach to 3D Graphics". Prentice Hall, 1996.
[WHITTAKER92] WHITTAKER I. "Volume Rendering". Tutorial, Abr 1992.
[ZUFFO93] ZUFFO, M.K. "Um microcomputador para aplicações gráficas". Tese de Mestrado em Engenharia Eletrônica, Escola Politécnica da USP, São Paulo, 1993.