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

Cours Vtk Marcela Hernández Hoyos CREATIS Janvier 2000.

Présentations similaires


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

1 Cours Vtk Marcela Hernández Hoyos CREATIS Janvier 2000

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

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

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

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

6 Syntaxe utilisée dans ces notes Z Pour les méthodes (fonctions) Description d'une méthode Pseudo-syntaxe de la méthode code Tcl/Tk Z 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 Variables Attributs Méthodes Objet Programmation procedurale POO Classe

10 Exemple - Programmation procédurale typedef struct { int x; int y; } point2D; typedef struct { int x; int y; 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) } point2D *p2D; point3D *p3D;. p2D = malloc … p3D = malloc …. printPoint2D(p2D); printPoint3D(p3D); Structure de données Fonction Variable Champs Appel aux fonctions

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

12 VTK Un système de Visualisation Orienté Objet

13 Exemple - Sphère 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 vtkRenderWindow renWin renWin AddRenderer ren1 renWin SetSize vtkRenderWindowInteractor iren iren SetRenderWindow renWin iren Initialize Source Mapper Actor Renderer Render Window

14 Exemple - Volume

15 Z Lecture, traitement et affichage de données sous la forme d'images Z 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 Z 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 Vtk - Système de Visualisation

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

17 Modèle de Visualisation

18 Modèle de visualisation Z Objectif Transformer les données en primitives graphiques Construire la représentation géométriques des objets à afficher Z 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 Z 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 dataset Adataset B Process B Process C sortie entrée

20 Objets Process Objet Process SourceFilterMapper 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 SourceFilterMapper aucune entrée 1 sortie 1 entrée 1 sortie 1 entrée aucune sortie

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

22 Exemple 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 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 Z 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) objet data ou dataset

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

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

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

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

28 Type des attributs associés aux points et aux cells d'un dataset vtkScalars Valeur simple Scalaire s vtkVectors Magnitude et direction (3D) Vecteur (u,v,w) vtkNormals Direction (3D) Normal (n x,n y,n z ) |n| = 1 vtkTCoords Correspondance entre un indice et une carte de textures Coordonnée de texture s t 2D: (u,v) 3D: (u,v,w) vtkTensors Matrice n x n Tenseur a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 Tableau de données vtkFieldData Tableau de tableaux Chaque tableau peut être de différent type Tableau 0Tableau 1Tableau n-1...

29 Modèle Graphique

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

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

32 Render Window Z Gère la(s) fenêtre(s) dans laquelle on va afficher les images ou les objets graphiques Z Fonctionnalité par défaut d'une fenêtre windows Z Indépendante des dispositifs graphiques Z 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) Renderer

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

34 Renderer Z Coordonne la(s) source(s) de lumière, la camera et les actors pour générer l'image d'une scène Z 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 Actor : ce que l'on voit Camera : détermine comment projeter une géométrie 3D sur une image 2D Light : représente et manipule l'éclairage de la scène (en 3D)

35 Classe vtkRenderer Z 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) x y z x y MondeVue

36 Classe vtkLight Z 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 Z 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 () Direction de projection Point focal Position Plan frontal de clipping Plan arrière de clipping

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

39 Classe vtkActor Z Méthodes 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 *) Z 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 Z Détermine l'apparence de la surface d'un actor Z Classe VTK : vtkProperty Z 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 Z Chargé du rendu (rendering) Z 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 Z Tout actor doit avoir un mapper associé pour pouvoir être affiché à l'écran Z Classes VTK : vtkMapper, vtkPolyDataMapper, vtkDataSetMapper

42 Classe vtkPolyDataMapper Z 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 TranslationChangement d'échelle Rotation Translation (tx,ty,tz)Chgt d'échelle (sx,sy,sz) TR x cossin cos Rotation autour de x Z Garde une pile de matrices de transformation Z Une seule matrice courante de transformation Z Fournit de méthodes pour effectuer les opérations de translation, changement d'échelle et rotation

44 Classe vtkTransform Z 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 Z Objectif Traitement d'images Z 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) Z Classes spécialisées pour : Lecture Ecriture Affichage Traitement

47 Lecture d'images (2D et 3D) Z 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) Z vtkBMPReader Images BMP Z 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 Z vtkImageWriter 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 Z vtkBMPWriter Z vtkTIFFWriter

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

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

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

53 Traitement Z vtkImageSobel2D/3D Opérateur de sobel Z vtkImageThreshold Seuillage Z vtkVolumeRayCastIsosurfaceFunction Rendu surfacique d'un volume Z 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++ Z VTK est une librairie de classes C++ Aucun problème de communication Z 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 VTK et Tcl/Tk Z En Tcl Charger la librairie (load vtktcl) Z 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 Tcl/Tk Librairie de classes C++ (compilée) Composant de communication avec des langages interpretés : Tcl/Tk, Java, Python VTK

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

59 Interface graphique du logiciel Z Normalement Les "Render Window" sont des fenêtres indépendantes Le logiciel aura une fenêtre séparée pour chaque render window Z 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 DLL C++ avec VTK Logiciel Tcl/Tk VT K 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)


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

Présentations similaires


Annonces Google