La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Marcela Hernández Hoyos CREATIS Janvier 2000

Présentations similaires


Présentation au sujet: "Marcela Hernández Hoyos CREATIS Janvier 2000"— Transcription de la présentation:

1 Marcela Hernández Hoyos CREATIS Janvier 2000
Cours Vtk Marcela Hernández Hoyos CREATIS Janvier 2000

2 Contenu Qu’est-ce que c’est ? Pourquoi VTK? Documentation Syntaxe
POO : Quelques concepts de base Modèles d'objets VTK Modèle de visualisation Modèle graphique Modèle de traitement Exemple d'une application Tcl/Tk & Vtk & C++

3 Qu'est-ce que c'est ? Visualization ToolKit Système Orienté Objet
Composant de communication avec des langages interpretés : Tcl/Tk, Java, Python Niveau d'application (C++,Tcl/Tk) VTK Librairie de classes C++ (compilée) Librairie graphique (openGL) Système Orienté Objet

4 Pour quoi VTK? Gratuit Code source C++ POO Extensible
Vous avez le contrôle POO Extensible Possibilité de création de nouvelles classes Plate-forme/librairie indépendante Algorithmes avancés et très utiles Conversion des données en images Nombreux utilisateurs + liste de discussion

5 Documentation Livres Page web Autres exemples
The VisualizationToolkit, 2nd edition Schroeder, Martin, Lorenson. Prentice Hall. VTK User's Guide Schroeder, Martin. Kitware, Inc. Page web /vtk.html Software, FAQ’s, listes de discussion, exemples, links, etc Autres exemples Répertoire d'installation VTK graphics/examplesTcl D. Fibroulet

6 Syntaxe utilisée dans ces notes
Pour les méthodes (fonctions) Description d'une méthode Pseudo-syntaxe de la méthode code Tcl/Tk Exemple Ajouter / Supprimer un renderer AddRenderer (vtkRenderer) RemoveRenderer (vtkRenderer) vtkRendererWindow myWindow vtkRenderer myRenderer myWindow AddRenderer myRenderer

7 POO ??? VTK Librairie de classes C++ (compilée) Système Orienté Objet

8 Programmation Orientée Objet
Concepts de base

9 POO : Quelques concepts de base
Structure de données Champs Fonctions Programmation procedurale Variables Classe POO Attributs Méthodes Objet

10 Exemple - Programmation procédurale
typedef struct { int x; int y; } point2D; int z; } point3D; void printPoint2D(point2D *p) { printf("x:%d, y:%d",p->x, p->y) } void printPoint3D(point3D *p) printf("x:%d, y:%d,z:%d",p->x, p->y,p->z) Structure de données point2D *p2D; point3D *p3D; . p2D = malloc … p3D = malloc … printPoint2D(p2D); printPoint3D(p3D); Variable Champs Fonction Appel aux fonctions

11 Exemple - POO class point2D Classe point2D *p2D = point2D :: New; {
public: void print(); point2D *New(); protected: int x; int y; } class point3D point3D *New(); int z; Classe point2D *p2D = point2D :: New; point3D *p3D = point3D :: New; . p2D -> print(); p3D->print(); Objets Méthodes Attributs Appel aux méthodes

12 VTK Un système de Visualisation Orienté Objet

13 Exemple - Sphère Source Mapper Actor Renderer Render Window
catch {load vtktcl};source vtkInt.tcl;source colors.tcl vtkSphereSource sphere sphere SetRadius 5 sphere SetThetaResolution 36 sphere SetPhiResolution 18 vtkPolyDataMapper isoMapper isoMapper SetInput [sphere GetOutput] isoMapper ScalarVisibilityOn vtkActor isoActor isoActor SetMapper isoMapper eval [isoActor GetProperty] SetColor $peacock vtkRenderer ren1 ren1 AddActor isoActor ren1 SetBackground 1 1 1 vtkRenderWindow renWin renWin AddRenderer ren1 renWin SetSize vtkRenderWindowInteractor iren iren SetRenderWindow renWin iren Initialize Source Mapper Actor Renderer Render Window

14 Exemple - Volume

15 Vtk - Système de Visualisation
Lecture, traitement et affichage de données sous la forme d'images Deux étapes Conversion de données en primitives graphiques Points, lignes, triangles, … Conversion de données graphiques en images Affichage des primitives graphiques à l'écran Les objets VTK sont organisés en trois modèles: Modèle de visualisation Étape 1 : Représentation géométrique des données Modèle graphique Étape 2 : Rendu de la représentation géométrique Modèle de traitement Traitement d'images

16 Vtk - Système de Visualisation
Modèle de Visualisation Données Source (Procedural) Création de nouvelles données Modèle graphique Modèle de Traitement Source (Reader) Mapper Lecture Transformation des données en primitives graphiques Filter Affichage Mapper (Writer) Écriture

17 Modèle de Visualisation

18 Modèle de visualisation
Objectif Transformer les données en primitives graphiques Construire la représentation géométriques des objets à afficher Basé sur un paradigme "pipeline" La transformation des données est décomposée en modules Chaque module réalise une opération précise sur les données (transformation) Les modules sont connectés entre eux pour former un réseau ou pipeline Les données circulent à l'intérieur du pipeline, en passant d'un module à l'autre

19 Modèle de visualisation
Deux types d'objets: Objets "data" Données qui circulent dans le pipeline Appelés datasets Objets "process" Modules ou composants algorithmiques du pipeline Process A entrée Process B Process C sortie dataset A dataset B

20 Objets Process Objet Process Source Filter Mapper Démarre le pipeline
Lecture de données externes (images) Génération de nouvelles données (graphiques) Traite les objets donnée Reçoit une ou plusieurs entrées Génère une ou plusieurs sorties Finit le pipeline Génère des primitives graphiques Communique le pipeline de visualisation avec le modèle graphique aucune entrée  1 entrée  1 entrée Source Filter Mapper  1 sortie  1 sortie aucune sortie

21 Pipeline de visualisation
Source Filter objet data objet data Mapper Modèle graphique Source Filter Filter objet data objet data objet data

22 Exemple Source Mapper Actor Renderer Render Window
catch {load vtktcl};source vtkInt.tcl;source colors.tcl vtkSphereSource sphere sphere SetRadius 5 sphere SetThetaResolution 36 sphere SetPhiResolution 18 vtkPolyDataMapper isoMapper isoMapper SetInput [sphere GetOutput] isoMapper ScalarVisibilityOn vtkActor isoActor isoActor SetMapper isoMapper eval [isoActor GetProperty] SetColor $peacock vtkRenderer ren1 ren1 AddActor isoActor ren1 SetBackground 1 1 1 vtkRenderWindow renWin renWin AddRenderer ren1 renWin SetSize vtkRenderWindowInteractor iren iren SetRenderWindow renWin iren Initialize Source Mapper Actor Renderer Render Window

23 Objets Data ou Datasets
objet data ou dataset Un dataset est composé de : Structure topologique (liste de cells) Détermine la forme de l'objet (triangle, sphère, maillage, etc.) Ne varie pas avec certaines transformations géométriques (translation, rotation et changement d'échelle) Un objet contient une ou plusieurs cells Structure géométrique (liste de points) Instanciation de la structure topologique Coordonnées des points qui conforment les cells Attributs Information complémentaire associée aux points ou aux cells (température en un point, masse d'une cell, etc)

24 Cells Atomes qui conforment un dataset
Une cell est une organisation topologique de points (coordonnées x,y,z) Définie par : Type Liste ordonnée de points 1 3 2 1 3 4 5 6 7 2 Tétraèdre Hexaèdre Maillage = liste de triangles Triangle = liste de points Objet Cell

25 Types de cells Vertex Polyvertex Line Polyline Triangle Triangle Strip
Quadrilateral Pixel Polygon Tetrahedron Hexahedron Voxel

26 Types de Datasets Points structurés Grille rectiligne
vtkStructuredPoints Images 2D et 3D vtkRectilinearGrid Maillage carré Grille structurée Données polygonales vtkStructuredGrid Maillage 2D vtkPolyData Points, lignes, polygones Grille non structurée vtkUnstructuredGrid Maillage 2D / 3D non structuré

27 Exemples de maillages Les cells peuvent avoir des différentes formes et tailles 2D : triangles, quadrilatéraux, ... 3D : tétraèdres, hexaèdres, pyramides, … Les maillages peuvent contenir un ou plusieurs type de cells

28 Type des attributs associés aux points et aux cells d'un dataset
Scalaire Vecteur Normal vtkScalars Valeur simple vtkVectors Magnitude et direction (3D) vtkNormals Direction (3D) s (u,v,w) (nx,ny,nz) |n| = 1 Coordonnée de texture Tenseur t vtkTCoords Correspondance entre un indice et une carte de textures a11 a12 a13 a21 a22 a23 a31 a32 a33 vtkTensors Matrice n x n 2D: (u,v) 3D: (u,v,w) s Tableau de données Tableau 0 Tableau 1 . . . Tableau n-1 vtkFieldData Tableau de tableaux Chaque tableau peut être de différent type

29 Modèle Graphique

30 Modèle graphique Objectif
Transformer des données graphiques en images et les afficher à l'écran Regroupe les caractéristiques d'un système graphique 3D (infographie) Les principales classes VTK du modèle graphique: Render Window Renderer Light Camera Actor Property Transform Mapper

31 Modèle graphique Render Window Renderer : Camera Light Actor :
Property Transform Mapper

32 Render Window Renderer Gère la(s) fenêtre(s) dans laquelle on va afficher les images ou les objets graphiques Fonctionnalité par défaut d'une fenêtre windows Indépendante des dispositifs graphiques Gère l'ensemble de renders contenus dans la fenêtre Plusieurs renderers peuvent dessiner dans une même fenêtre (render window) pour créer une scène (image finale)

33 Classe vtkRenderWindow
Méthodes Ajouter / Supprimer un renderer AddRenderer (vtkRenderer) RemoveRenderer (vtkRenderer) Configuration de l'écran FullScreenOn () FullScreenOff () BordersOn () BordersOff ()

34 Renderer Coordonne la(s) source(s) de lumière, la camera et les actors pour générer l'image d'une scène Une scène comporte : Au moins un actor, une camera et une source de lumière Si les objets camera et light ne sont pas définis, ils sont créés automatiquement par le renderer Light : représente et manipule l'éclairage de la scène (en 3D) Actor : ce que l'on voit Camera : détermine comment projeter une géométrie 3D sur une image 2D

35 Classe vtkRenderer Méthodes Ajouter/Supprimer des actors et des lights
AddActor (vtkActor) / RemoveActor (vtkActor) AddLight (vtkLight) / RemoveLight (vtkLight) Déterminer la camera à utiliser pour le rendu SetActiveCamera (vtkCamera) Créer l'image résultant du rendu Render Conversion de coordonnées ViewToWorld (float, float, float) / void WorldToView (float, float, float) y y Monde Vue x x z

36 Classe vtkLight Méthodes Fixer la couleur de la lumière
SetColor (float ,float ,float) / GetColor () Déterminer la position de la source SetPosition (float ,float ,float ) / GetPosition () Définir l'intensité (de 0 à 1) SetIntensity (float ) / GetIntensity () Allumer / Éteindre SwitchOn () SwitchOff ()

37 Classe vtkCamera Méthodes
Fixer la position de la camera en coordonnées monde SetPosition (float ,float ,float ) / GetPosition () Déterminer la position du point focal de la camera SetFocalPoint (float ,float ,float ) / GetFocalPoint () Calculer la distance entre la position de la camera et celle du point focal ComputeDistance () Plan arrière de clipping Direction de projection Point focal Position Plan frontal de clipping

38 Actor Objet dessiné par un renderer dans une scène
Un actor ne représente pas directement sa géométrie ni son apparence Celles-ci sont définies en termes de : Property Mapper Transform

39 Classe vtkActor Méthodes Généralement
Associer l'objet property qui détermine les propriétés d'apparence de l'actor SetProperty (vtkProperty) / GetProperty () Un objet property est crée par défaut Plusieurs actors peuvent partager le même objet property Associer l'objet mapper qui détermine la géométrie de l'actor SetMapper (vtkMapper) / GetMapper () Définir la matrice de transformations qui détermine l'échelle, la position et l'orientation de l'actor SetUserMatrix (vtkMatrix4x4 *) Généralement Il ne faut pas définir explicitement les propriétés ni les transformations. Des valeurs par défaut son déterminées lors de la création de l'actor

40 Property Détermine l'apparence de la surface d'un actor
Classe VTK : vtkProperty Méthodes Représentation de la géométrie de la surface SetRepresentationToPoints () SetRepresentationToWireframe () SetRepresentationToSurface () Déterminer la couleur de la surface SetColor (float ,float ,float ) Fixer l'opacité de la surface (0 transparent, 1.0 opaque) SetOpacity (float )

41 Mapper Chargé du rendu (rendering)
Lie le modèle de visualisation et le modèle graphique Détermine la géométrie de l'actor Combinaison de points (sommets), lignes, polygones, etc Définit la couleur des sommets Fait référence à une palette de couleurs Tout actor doit avoir un mapper associé pour pouvoir être affiché à l'écran Classes VTK : vtkMapper, vtkPolyDataMapper, vtkDataSetMapper

42 Classe vtkPolyDataMapper
Méthodes Spécifier les données d'entrée au mapper (données à afficher) SetInput (vtkPolyData) Associer la palette de couleurs SetLookupTable (vtkLookupTable) Créer une palette de couleurs par défaut CreateDefaultLookupTable () Déterminer si le rendu est fait de manière immédiate ou pas ImmediateModeRenderingOn () ImmediateModeRenderingOff ()

43 Transform Garde une pile de matrices de transformation
Une seule matrice courante de transformation Fournit de méthodes pour effectuer les opérations de translation, changement d'échelle et rotation Translation Changement d'échelle Rotation TR x = - é ê ù ú 1 cos sin q ë û Translation (tx,ty,tz) Chgt d'échelle (sx,sy,sz) Rotation q autour de x

44 Classe vtkTransform Méthodes Créer d'une matrice identité
Identity () Créer une matrice de rotation et la concaténer avec la matrice courante de transformation RotateX (float), RotateY (float ), RotateZ (float ) Changer d'échelle la matrice courante de transformation Scale (float ,float ,float ) Déplacer la matrice courante de transformation Translate (float ,float ,float ) Transposer la matrice courante de transformation Transpose () Invertir la matrice courante de transformation Inverse ()

45 Modèle de Traitement

46 Modèle de traitement Objectif
Traitement d'images Implémentation particulière du pipeline de visualisation pour le traitement de datasets de type "Points structurés" (vtkStructuredPoints) 2D Images Bitmaps 3D Volumes (piles de datasets 2D) Classes spécialisées pour : Lecture Ecriture Affichage Traitement

47 Lecture d'images (2D et 3D)
vtkImageReader Lecture de n'importe quel type d'image Il faut indiquer les dimensions et le type de l'image (pour sauter l'entête) Les volumes sont lus comme une séquence d'images Possibilité de lire un région d'intérêt (ROI/VOI) vtkBMPReader Images BMP vtkTIFFReader Images TIFF

48 Exemple de lecture vtkImageReader monReader
monReader SetDataByteOrderToLittleEndian monReader SetDataExtent monReader SetFilePrefix "000" monReader SetFilePattern "%s%d.ima" monReader SetDataScalarTypeToUnsignedShort monReader Update

49 Écriture d'images vtkImageWriter vtkBMPWriter vtkTIFFWriter
Ecriture de n'importe quel type d'image Le type de l'image à sauvegarder est le même que celui de l'image en entrée Les dimensions déterminent si les données doivent être sauvegardés en plusieurs fichiers vtkBMPWriter vtkTIFFWriter

50 Affichage d'images Mapper Actor Renderer vtkImageMapper
vtkDataSetMapper vtkPolyDataMapper vtkVolumeMapper Actor vtkActor vtkActor2D Renderer vtkRenderer

51 Traitement vtkImageAnisotropicDiffusion2D/3D
Lissage par la méthode de diffusion anisotrope vtkImageContinuousDilate3D (vtkImageContinuousErode3D) Opérations morphologiques de dilatation/érosion vtkImageCityBlockDistance Carte de distances 1,2 or 3D vtkImageFFT Transformée de Fourier vtkImageGaussianSmooth Filtrage gaussien

52 Traitement vtkImageGradient vtkImageMarchingCubes vtkImageMedian3D
Gradient de l'image vtkImageMarchingCubes Génération d'isosurfaces (rendu de surfaces) vtkImageMedian3D Filtrage médian vtkImageResample Re-échantillonnage d'une image avec interpolation linaire vtkImageSkeleton2D Squelettisation d'images 2D

53 Traitement vtkImageSobel2D/3D vtkImageThreshold
Opérateur de sobel vtkImageThreshold Seuillage vtkVolumeRayCastIsosurfaceFunction Rendu surfacique d'un volume vtkVolumeRayCastMIPFunction Création de l'image MIP (maximum intensity projection) d'un volume

54 Exemple d'une Application

55 Tcl/Tk & VTK & C++

56 Vtk & C++ VTK est une librairie de classes C++ Pour programmer :
Aucun problème de communication Pour programmer : Inclure les fichier "headers" correspondants (.h) Programmer en C++ #include "vtk.h" #include "vtkImageReader.h" #include "vtkImageData.h" #include "vtkImageCache.h" #include "vtkScalars.h" extern "C" { #include "idvol.h" } Pour programmer en même temps avec libido (C)

57 Librairie de classes C++
VTK et Tcl/Tk VTK Composant de communication avec des langages interpretés : Tcl/Tk, Java, Python Tcl/Tk Librairie de classes C++ (compilée) En Tcl Charger la librairie (load vtktcl) Pour chaque classe VTK Il existe une nouvelle commande Tcl pour créer les objets Une fois l'objet est crée, le nom de l'objet devient une commande pour appeler ses méthodes

58 Exemple Charger la librairie Commande Tcl vtkActor
load vtktcl vtkActor actorToto actorToto print actorToto SetDebug 1 puts [actorToto GetDebug] set property [actorToto GetProperty] $property Print $property SetColor 1 0 0 puts [$property GetColor] Charger la librairie Commande Tcl vtkActor Nouvelle commande actorToto Nouvelle commande $property

59 Interface graphique du logiciel
Normalement Les "Render Window" sont des fenêtres indépendantes Le logiciel aura une fenêtre séparée pour chaque render window Pour combiner les Render Window (de VTK) et les objets graphiques d'interface Tk dans une seule fenêtre Widget vtkTkRenderWidget C'est un widget Tk comme les autres Possède une méthode spéciale pour communiquer avec VTK vtkRenderer monRenderer vtkTkRenderWidget .maFenetre -width 300 -height 300 set RenWin [.maFenetre GetRenderWindow] $RenWin AddRenderer monRenderer

60 Communication avec DLLs
Logiciel Tcl/Tk DLL C++ avec VTK Création d'un objet VTK en Tcl/Tk et manipulation en C++ Récupérer le pointeur de l'objet (adresse) avec la méthode print Passer l'adresse à la fonction de la dll (avec le cast correspondant) VTK VTK


Télécharger ppt "Marcela Hernández Hoyos CREATIS Janvier 2000"

Présentations similaires


Annonces Google