modélisation avec vtk - odyssee-merveille.com · introductionisosurfacerendu volumique vtk...

25
Modélisation avec VTK Odyssée Merveille et Hugues Talbot 8 octobre 2014

Upload: phamhuong

Post on 02-Nov-2018

236 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Modélisation avec VTK

Odyssée Merveille et Hugues Talbot

8 octobre 2014

Page 2: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

Sommaire

1 Introduction

2 Isosurface

3 Rendu Volumique

Modélisation avec VTK 2 / 25

Page 3: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

1 Introduction

2 Isosurface

3 Rendu Volumique

Modélisation avec VTK 3 / 25

Page 4: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

VTK

VTK (Visualisation Toolkit) est une librairie open-source créée parKitware permettant la visualisation de données 2D/3D. Elle est écrite enC++ mais s’interface aisément avec Tck/Tk, Java et Python.

Modélisation avec VTK 4 / 25

Page 5: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

Première Scène avec Vtk1 impor t v tk

3 c y l i n d e r = vtk . v t k C y l i n d e r S o u r c e ( ) #Source

5 mapper = vtk . vtkPolyDataMapper ( ) # Mappermapper . S e t I n p u t ( c y l i n d e r . GetOutput ( ) )

7 a c t o r = vtk . v tkAc to r ( ) # Actora c t o r . SetMapper ( mapper )

9r en = vtk . v t k R e n d e r e r ( ) # Rendere r

11 r en . AddActor ( a c t o r )renWin = vtk . vtkRenderWindow ( ) # RendererWindow

13 renWin . AddRenderer ( r en )

15 i r e n = vtk . v tkRende rWindowIn te rac to r ( ) # I n t e r a c t o ri r e n . SetRenderWindow ( renWin )

17i r e n . I n i t i a l i z e ( )

19 renWin . Render ( )i r e n . S t a r t ( )

21 d e l renWin , i r e n

Modélisation avec VTK 5 / 25

Page 6: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

Première Scène avec Vtk

Exemple d’options :# C y l i n d e r

2 c y l i n d e r . Se tCen te r ( i n t , i n t , i n t )c y l i n d e r . Se tRad iu s ( f l o a t )

4 c y l i n d e r . Se tHe igh t ( f l o a t )c y l i n d e r . S e t R e s o l u t i o n ( i n t )

6# Actor

8 a c t o r . Ge tPrope r ty ( ) . S e t C o l o r ( i n t , i n t , i n t ) # RGB v a l u e s

Modélisation avec VTK 6 / 25

Page 7: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

Première Scène avec Vtk

Au lieu d’utiliser un interactor, on peut créer une animationautomatique :

1 f o r i i n range (90) :t ime . s l e e p ( 0 . 0 3 )

3 renWin . Render ( )r en . GetAct iveCamera ( ) . E l e v a t i o n (1 )

Modélisation avec VTK 7 / 25

Page 8: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

1 Introduction

2 Isosurface

3 Rendu Volumique

Modélisation avec VTK 8 / 25

Page 9: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

Principe

IsosurfaceAnalogue en 3D d’une courbe de niveau en 2D.C’est l’ensemble des points de l’image dont le niveau de gris est constant.

Modélisation avec VTK 9 / 25

Page 10: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

Marching Cubes

IntérêtPermet de construire une surface triangulée à partir d’un champ scalairediscret.

Isosurface à 100 :

Modélisation avec VTK 10 / 25

Page 11: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

Exemple d’isosurface

Modélisation avec VTK 11 / 25

Page 12: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

Code VTK

1 impor t v tk

3 #−−−−−−−−−−−−−−− L e c t u r e des images −−−−−−−−−−−−−−−−−−−−−−−−r e a d e r=vtk . v t k S t r u c t u r e d P o i n t s R e a d e r ( )

5 r e a d e r . SetF i leName ( " chemin_vers_donnees /mummy. 1 2 8 . v tk " )

7 # −−−−−−−−−−−−−− C r e a t i o n de l ’ i s o s u r f a c e −−−−−−−−−−−−−−−−−−contour_bone=vtk . v t k C o n t o u r F i l t e r ( )

9 contour_bone . S e t I n p u t ( r e a d e r . GetOutput ( ) )contour_bone . SetNumberOfContours (1 )

11 contour_bone . SetVa lue (0 ,110)

13 # −−−−−−−−−−−−−−− Look Up Table −−−−−−−−−−−−−−−−−−−−−−−−−−−−l u t_bone=vtk . vtkLookupTable ( )

15 l u t_bone . SetNumberOfColors (256)lut_bone . SetTableRange (0 ,255)

17 l u t_bone . SetHueRange ( 0 . 0 , 0 . 5 ) # Te in t e de l a c o u l e u rlut_bone . Se tSa tu ra t i onRange ( 0 . 5 , 1 ) # I n t e n s i t e de l a c o u l e u r

19 l u t_bone . SetValueRange ( 0 . 5 , 1 . 0 ) # B r i l l a n c e de l a c o u l e u rlut_bone . SetAlphaRange ( 1 , 1 ) # Transpa rence

Modélisation avec VTK 12 / 25

Page 13: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

Code VTK

# −−−−−−−−−−−−−−−− C r e a t i o n du Mapper e t Acteur −−−−−−−−−−−−2 mapper_bone=vtk . vtkPolyDataMapper ( )

mapper_bone . S e t I n p u t ( contour_bone . GetOutput ( ) )4 mapper_bone . SetLookupTable ( lut_bone )

6 actor_bone=vtk . v tkAc to r ( )actor_bone . SetMapper ( mapper_bone )

8# −−−−−−−−−−− C r e a t i o n du Rende re r e t RenderWindow −−−−−−−−−

10 r en=vtk . v t k R e n d e r e r ( )r en . AddActor ( actor_bone )

12 r en . SetBackground ( 1 , 1 , 1 )renWin=vtk . vtkRenderWindow ( )

14 renWin . AddRenderer ( r en )renWin . S e t S i z e (512 ,512)

16# −−−−−−−−−−−−−−− Rendere r i n t e r a c t i f −−−−−−−−−−−−−−−−−−−−−

18 i r e n=vtk . v tkRende rWindowIn te rac to r ( )i r e n . SetRenderWindow ( renWin )

20i r e n . S t a r t ( )

Modélisation avec VTK 13 / 25

Page 14: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

1 Introduction

2 Isosurface

3 Rendu Volumique

Modélisation avec VTK 14 / 25

Page 15: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

Principe

Contrairement au rendu surfacique qui visualise une partie du volume, lerendu volumique permet d’afficher le contenu d’une image dense en 3dimensions.

Modélisation avec VTK 15 / 25

Page 16: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

Rendu volumique par Lancer de Rayons simplifié

Problèmes :Définir un niveau de gris associé à chaque rayon r : V(r)Représenter visuellement le pixel p associé à chaque rayon r(Couleur, Opacité)

Modélisation avec VTK 16 / 25

Page 17: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

Rendu volumique par Lancer de Rayons

A chaque rayon r est associé le niveaude gris V(r).

Exemples de fonctions V(r) :Maximum Intensity Projection (MIP) :

V (r) = maxp

I(s) s ∈ r

Composite :

V (r) =∫

s∈rI(s)ds

Modélisation avec VTK 17 / 25

Page 18: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

Fonctions de transfert

Association d’une couleur C(p) et d’une opacité O(p) à chaque niveau degris V(r) afin de représenter p sur l’image 2D.

Fonctions de transfertFonction de transfert d’opacité :

O(p) = Ftop(V (r))

Fonction de transfert de couleur :

C(p) = Ftc(V (r))

Modélisation avec VTK 18 / 25

Page 19: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

Exemple de fonctions de transfert

Fonction de transfert d’opacité : Fonction de transfert de couleur :

Modélisation avec VTK 19 / 25

Page 20: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

Exemple de rendus

Rendu par MIP : Rendu Composite :

Modélisation avec VTK 20 / 25

Page 21: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

Code VTK

impor t v tk2

# −−−−−−−−−−−−−−− L e c t u r e de l ’ image −−−−−−−−−−−−−−−−−−−4 r e a d e r=vtk . v t k S t r u c t u r e d P o i n t s R e a d e r ( )

r e a d e r . SetF i leName ( " chemin_vers_donnees /mummy. 1 2 8 . v tk " )6

# −−−−−−−−−−−−−−− Type de rendu −−−−−−−−−−−−−−−−−−−−−−−−8 MIPFunction=vtk . vtkVolumeRayCastMIPFunct ion ( )

10 # −−−−−−−−−−−−−−− Mapper −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−volumeMapper=vtk . vtkVolumeRayCastMapper ( )

12 volumeMapper . S e t I n p u t ( r e a d e r . GetOutput ( ) )volumeMapper . SetVolumeRayCastFunct ion ( MIPFunction )

14# −−−−−−−−−−−−−−− Acteur −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

16 volume=vtk . vtkVolume ( )volume . SetMapper ( volumeMapper )

Modélisation avec VTK 21 / 25

Page 22: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

Code VTK

1 # −−−−−−−−−−−−−−− Fonc t i on de t r a n s f e r t d ’ o p a c i t e dug r a d i e n t −−−−−−

g r a d i e n t T r a n s f e r F u n c t i o n=vtk . v t k P i e c e w i s e F u n c t i o n ( )3 g r a d i e n t T r a n s f e r F u n c t i o n . AddPoint ( 0 , 0 )

g r a d i e n t T r a n s f e r F u n c t i o n . AddPoint (20 ,1 )5 g r a d i e n t T r a n s f e r F u n c t i o n . AddPoint (255 ,1 )

7 # −−−−−−−−−−−−−−− Fonc t i on de t r a n s f e r t d ’ o p a c i t e −−−−−−o p a c i t y T r a n s f e r F u n c t i o n=vtk . v t k P i e c e w i s e F u n c t i o n ( )

9 o p a c i t y T r a n s f e r F u n c t i o n . AddPoint ( 0 , 0 )o p a c i t y T r a n s f e r F u n c t i o n . AddPoint (255 ,1 )

11# −−−−−−−−−−−−−−− Fonc t i on de t r a n s f e r t de c o u l e u r −−−−−

13 c o l o r T r a n s f e r F u n c t i o n=vtk . v t k C o l o r T r a n s f e r F u n c t i o n ( )c o l o r T r a n s f e r F u n c t i o n . AddRGBPoint ( 7 5 . 0 , 1 , 0 , 0 )

15 c o l o r T r a n s f e r F u n c t i o n . AddRGBPoint ( 2 5 5 . 0 , 0 , 0 , 1 )

Modélisation avec VTK 22 / 25

Page 23: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

Code VTK

vo lumePrope r ty=vtk . v tkVo lumeProper ty ( )2 vo lumePrope r ty . S e t S c a l a r O p a c i t y ( o p a c i t y T r a n s f e r F u n c t i o n )

vo lumePrope r ty . S e t C o l o r ( c o l o r T r a n s f e r F u n c t i o n )4 vo lumePrope r ty . S e t G r a d i e n t O p a c i t y ( g r a d i e n t T r a n s f e r F u n c t i o n )

volume . S e t P r o p e r t y ( vo lumePrope r ty )6

8 # −−−−−−−−−−−−−−− Rendere r e t Rende re r Window −−−−−−−−−−r en=vtk . v t k R e n d e r e r ( )

10 r en . AddViewProp ( volume )ren . SetBackground ( 1 , 1 , 1 )

12renWin=vtk . vtkRenderWindow ( )

14 renWin . AddRenderer ( r en )renWin . S e t S i z e (512 ,512)

Modélisation avec VTK 23 / 25

Page 24: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

Ajout de l’opacité du gradient

Modélisation avec VTK 24 / 25

Page 25: Modélisation avec VTK - odyssee-merveille.com · IntroductionIsosurfaceRendu Volumique VTK VTK(VisualisationToolkit)estunelibrairieopen-sourcecrééepar Kitwarepermettantlavisualisationdedonnées2D/3D.Elleestécriteen

Introduction Isosurface Rendu Volumique

Code VTK

1 impor t v tk

3 # −−−−−−−−−−−−−−− L e c t u r e de l ’ image −−−−−−−−−−−−−−−−−−−r e a d e r=vtk . v t k S t r u c t u r e d P o i n t s R e a d e r ( )

5 r e a d e r . SetF i leName ( " chemin_vers_donnees /mummy. 1 2 8 . v tk " )

7 # −−−−−−−−−−−−−−− Type de rendu −−−−−−−−−−−−−−−−−−−−−−−−MIPFunction=vtk . vtkVolumeRayCastMIPFunct ion ( )

9# −−−−−−−−−−−−−−− Mapper −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

11 volumeMapper=vtk . vtkVolumeRayCastMapper ( )volumeMapper . S e t I n p u t ( r e a d e r . GetOutput ( ) )

13 volumeMapper . SetVolumeRayCastFunct ion ( MIPFunction )

15 # −−−−−−−−−−−−−−− Acteur −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−volume=vtk . vtkVolume ( )

17 volume . SetMapper ( volumeMapper )

Modélisation avec VTK 25 / 25