Cours Vtk - PowerPoint PPT Presentation

1 / 60
About This Presentation
Title:

Cours Vtk

Description:

Lecture, traitement et affichage de donn es sous la forme d'images ... Affichage des primitives graphiques l' cran. Les objets VTK sont organis s en trois ... – PowerPoint PPT presentation

Number of Views:2184
Avg rating:4.0/5.0
Slides: 61
Provided by: Marc357
Category:
Tags: affichage | cours | vtk

less

Transcript and Presenter's Notes

Title: Cours Vtk


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

2
Contenu
  • Quest-ce que cest ?
  • 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
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
  • 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
  • The VisualizationToolkit, 2nd edition
  • Schroeder, Martin, Lorenson. Prentice Hall.
  • VTK User's Guide
  • Schroeder, Martin. Kitware, Inc.
  • Page web
  • http//www.kitware.com /vtk.html
  • Software, FAQs, 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
Méthodes
Attributs
Objet
10
Exemple - Programmation procédurale
Structure de données
point2D p2D point3D p3D . . . p2D malloc
p3D malloc . . . printPoint2D(p2D) printP
oint3D(p3D)
typedef struct int x int y
point2D typedef struct int x int y
int z point3D void printPoint2D(point2D p)
printf("xd, yd",p-gtx, p-gty) void
printPoint3D(point3D p) printf("xd,
yd,zd",p-gtx, p-gty,p-gtz)
Variable
Champs
Fonction
Appel aux fonctions
11
Exemple - POO
point2D p2D point2D New point3D p3D
point3D New . . . . . . p2D -gt
print() p3D-gtprint()
Classe
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
Objets
Méthodes
Attributs
Appel aux méthodes
12
VTKUn système de Visualisation Orienté Objet
13
Exemple - Sphère
catch load vtktclsource vtkInt.tclsource
colors.tcl vtkSphereSource sphere sphere
SetRadius 5 sphere SetThetaResolution 36
sphere SetPhiResolution 18 vtkPolyDataMapper
isoMapper isoMapper SetInput sphere
GetOutput isoMapper ScalarVisibilityOn vtkAc
tor 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 500 500 vtkRenderWindowIn
teractor 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
Process B
Process C
entrée
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

? 1 entrée
aucune entrée
? 1 entrée
Source
Filter
Mapper
? 1 sortie
? 1 sortie
aucune sortie
21
Pipeline de visualisation
Source
Filter
objet data
objet data
Modèle graphique
Mapper
Source
Filter
Filter
objet data
objet data
objet data
22
Exemple
catch load vtktclsource vtkInt.tclsource
colors.tcl vtkSphereSource sphere sphere
SetRadius 5 sphere SetThetaResolution 36
sphere SetPhiResolution 18 vtkPolyDataMapper
isoMapper isoMapper SetInput sphere
GetOutput isoMapper ScalarVisibilityOn vtkAc
tor 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 500 500 vtkRenderWindowIn
teractor 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

Tétraèdre
Hexaèdre
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
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
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
  • 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 (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 0 255 0 255 34 85
  • monReader SetFilePrefix "000"
  • monReader SetFilePattern "sd.ima"
  • monReader SetDataScalarTypeToUnsignedShort
  • monReader Update

49
Écriture d'images
  • 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
  • vtkBMPWriter
  • vtkTIFFWriter

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

51
Traitement
  • vtkImageAnisotropicDiffusion2D/3D
  • Lissage par la méthode de diffusion anisotrope
  • vtkImageContinuousDilate3D (vtkImageContinuousErod
    e3D)
  • 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
  • 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
  • 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
  • Aucun problème de communication
  • Pour programmer
  • Inclure les fichier "headers" correspondants (.h)
  • Programmer en C

include "vtk.h" include "vtkImageReader.h" incl
ude "vtkImageData.h" include "vtkImageCache.h" i
nclude "vtkScalars.h" extern "C" include
"idvol.h"
Pour programmer en même temps avec libido (C)
57
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
  • 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

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
Write a Comment
User Comments (0)
About PowerShow.com