IDEAs: comment rendre interactive grande série d'images en utilisant le rendu de volume directement basé sur le GPU

StackOverflow https://stackoverflow.com/questions/4255737

Question

Je cherche idée est comment convertir 30 + gb, 2000+ série d'images TIFF de couleur dans un ensemble de données peut être visualisé en temps réel (taux de trame interactifs) en utilisant le rendu de volume à base de GPU (en utilisant OpenCL / OpenGL / GLSL ). Je veux utiliser une approche de visualisation directe des volumes au lieu de montage de surface (à savoir raycasting au lieu de cubes en marche).

Le problème est double, d'abord je dois convertir mes images dans un ensemble de données 3D. La première chose qui est venu dans mon esprit est de voir toutes les images en 2D textures et les empiler simplement pour créer une texture 3D.

Le deuxième problème est le taux de trame interactifs. Pour cela, je vais probablement besoin d'une sorte de sous-échantillonnage en combinaison avec « Les détails sur la demande » chargement des haute résolution du jeu de données lors d'un zoom ou quelque chose.

Une première approche de point sage je l'ai trouvé est:

  1. polygonisation des données de volume complet à travers la couche par couche de traitement et la génération d'une texture d'image correspondant;
  2. la réalisation de toutes les transformations essentielles grâce à des opérations de traitement de sommet;
  3. diviser les tranches polygonales en fragments plus petits, où les coordonnées de profondeur et de texture correspondantes sont enregistrées;
  4. dans le traitement fragment, le déploiement de la technique de programmation de vertex shaders pour améliorer le rendu des fragments.

Mais je n'ai pas d'idées concrètes sur la façon de commencer la mise en œuvre de cette approche.

J'aimerais voir quelques nouvelles idées ou des idées sur la façon de commencer à appliquer l'approche ci-dessus.

Était-ce utile?

La solution

Si quelqu'un a des idées nouvelles dans ce domaine, ils vont probablement essayer de développer et de les publier. Il est un domaine de la recherche en cours.

Dans votre « approche point sage », il semble que vous avez décrit la méthode de base de rendu de volume à base de tranches. Cela peut donner de bons résultats, mais beaucoup de gens sont passer à une méthode de raycasting matériel. Il y a un exemple dans le kit de développement CUDA si vous êtes intéressé.

Une bonne méthode pour le rendu de volume hiérarchique par Crassin a été détaillé et al. dans leur document intitulé Gigavoxels . Il utilise une approche basée octree, qui seulement des briques de charges nécessaires à la mémoire quand ils sont nécessaires.

Un très bon livre d'introduction dans ce domaine est Volume en temps réel graphique .

Autres conseils

Je l'ai fait un peu de rendu de volume, bien que mon code généré en utilisant un isosurface marching cubes et affiché que. Cependant, dans mon auto-éducation modeste du volume du rendu, je n'ai rencontré un court document intéressant: rendu de volume sur Matériel informatique commun . Il est livré avec par exemple source aussi. Je ne ai jamais eu le temps de le vérifier sur, mais il semblait prometteur. Il est-il DirectX cependant, pas OpenGL. Peut-être qu'il peut vous donner quelques idées et un endroit pour commencer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top