FLASH INFORMATIQUE FI



Octaviz, un système de visualisation pour Octave




Vittoria REZZONICO


Le numéro 7 du Flash informatique de 2006 apportait une riche introduction au logiciel Octave [1]. Dans le milieu du calcul scientifique, on rencontrait souvent une réticence à faire la transition de Matlab vers Octave à cause d’un certain manque d’outils de visualisation 3D. Dans Matlab, dès la version 5 de 1997, la visua lisation de surfaces triangulées a été introduite, et dès la version 6 de 2000, on y a ajouté la transparence. Ce manque, dans Octave, a été récemment comblé grâce à Octaviz [2]. Effectivement, Octave n’a pas d’outil de visualisation propre : il s’appuie sur des logiciels préexistants. Parmi les moteurs graphiques utilisés par Octave, on peut citer Gnuplot, OctPlot, epsTK, et maintenant Octaviz. Le fait de s’appuyer sur des logiciels externes est à la fois une force et une faiblesse. C’est une force parce que les graphiques ainsi produits par Octave seront standard, c’est-à-dire qu’on pourra les mettre par exemple à côté de graphiques créés par d’autres logiciels et on aura un ensemble consistant. La faiblesse réside dans le fait que l’on est toujours dépendant des autres, et que l’utilisateur peut se retrouver submergé par une multitude de choix. En outre, le nom des fonctions de génération de graphiques sous Octave varie selon le moteur graphique utilisé.

VTK : Visualization ToolKit

VTK (The Visualization ToolKit [3]) est un logiciel de visualisation et traitement d’images qui consiste en des classes C++ et plusieurs interfaces. Parmi ces interfaces, on peut citer Tcl/Tk, Java et Python. C’est un outil très puissant qui est à la base de nombreux logiciels de visualisation et traitement d’images, par exemple ParaView et ITK, un logiciel d’imagerie médicale.

Paraview

Paraview est un logiciel de visualisation de même niveau que EnSight ou AVS, basé sur VTK, open-source et multi-plate-forme, avec une interface utilisateur très intuitive. De plus, il permet de paralléliser les opérations de visualisation (sur des clusters par exemple). Pour plus d’informations, vous pouvez vous référer à l’article de Jean M. Favre [4].

Octaviz

Octaviz consiste en deux parties : des wrappers pour toutes les classes VTK, et des fonctions Octave qui cachent le fonctionnement interne de VTK et qui permettent de produire des graphiques très professionnels sans connaître la syntaxe de VTK. Dans cet article, je vais surtout parler des fonctions Octave.

Où trouver Octaviz

La façon la plus simple est d’avoir une distribution Linux qui fournit les paquetages octave, octave-forge et octaviz. Parmi ces distributions, on peut citer Ubuntu 7.04 et Debian 4.0, qui marient vtk5, octaviz 0.4.5 et octave2.1. De plus, Octaviz est disponible dans la distribution Fedora du projet Poseidon. Malheureusement, l’installation sous Windows et MacOsX s’avère plus compliquée.

Comparaison des différents moteurs graphiques

Octave utilise comme moteur graphique par défaut Gnuplot, qui est comparable en 2D au moteur graphique de Matlab comme style de rendu. En 3D, Gnuplot travaille essentiellement en mode wireframe avec possibilité de masquage des lignes cachées. Par contre, Octaviz est plutôt comparable aux outils de visualisation scientifique spécialisés en raison de son origine.
Dans cette section, on va voir en pratique la différence entre le rendu graphique avec Matlab, avec Octave/Gnuplot ou avec Octave/Octaviz.
Premièrement, on va écrire un code portable, c’est-à-dire exécutable avec Matlab ou Octave, avec ou sans Octaviz. Pour ce faire, il faut un peu sonder le système, ceci est montré à la figure 1.

Octave = exist('OCTAVE_VERSION');
Octaviz= exist('vtk_axis');
Matlab=~Octave;
if(Matlab)
        % code Matlab
else
        if (Octaviz)
                % code Octave/Octaviz
        else
                % code Octave/Gnuplot
        end;
end;

fig. 1 – Bout de code permettant la portabilité du script

Maintenant, nous allons analyser les cas d’utilisation graphiques les plus typiques. Commençons par un graphe 2-dimensionnel (fig. 2).

JPEG - 3.7 ko
fig. 2 - Graphique 2D
(b) Résultat de la commande Octave/Gnuplot plot
JPEG - 3.7 ko
fig. 2 - Graphique 2D
(a) Résultat de la commande Matlab plot
JPEG - 3 ko
Fig. 2 - Graphique 2 D
(c) Résultat de la commande Octave/Octaviz vtk_plot

Pour ce cas, on peut très bien se contenter de l’affichage Octave/Gnuplot.
Octaviz gagne beaucoup d’intérêt surtout lorsqu’il s’agit d’afficher des graphiques 3D compliqués. Déjà, la fonction plot3 présente dans Matlab et Octave/Gnuplot (voir fig. 3), est remplacée par deux fonctions Octave/Octaviz : vtk_plot3 pour afficher des points et vtk_line3 pour afficher des lignes.

JPEG - 5.5 ko
Fig. 3 – Lignes et points 3D
(a) Résultat de la commande Matlab plot3
JPEG - 4.5 ko
Fig. 3 – Lignes et points 3D
(b) Résultat de la commande Octave/Gnuplot plot3
JPEG - 5.5 ko
Fig. 3 – Lignes et points 3D
(c) Résultat des commandes Octave/ Octaviz vtk_plot3 et vtk_line3

De plus, ces deux fonctions sont paramétrables : on peut spécifier la taille des points et l’épaisseur des lignes. Points et lignes peuvent être semitransparents (voir fig. 4).

JPEG - 4.8 ko
Fig. 4 – Exemple de (mis)utilisation de la transparence

Maintenant on va tester les fonctions qui nous permettent d’afficher des surfaces. Octave/Gnuplot possède déjà de telles fonctions : mesh pour afficher une surface en mode wireframe, et surf pour afficher la surface. De plus, surfc permet d’afficher la surface plus les courbes de niveau. Octave/Octaviz possède aussi des fonctions similaires (voir fig. 5 et 6), mais elles sont, comme dans Matlab, beaucoup plus développées.

JPEG - 4.7 ko
Fig. 5 – Visualisation d’un maillage structuré
(a) Résultat de la commande Matlab mesh
JPEG - 4.9 ko
Fig. 5 – Visualisation d’un maillage structuré
(b) Résultat de la commande Octave/Gnuplot mesh
JPEG - 5.1 ko
Fig. 5 – Visualisation d’un maillage structuré
(c) Résultat de la commande Octave/Octaviz vtk_mesh

JPEG - 6 ko
Fig. 6 – Visualisation d’une surface structurée
(a) Résultat de la commande Matlab surfc
JPEG - 5 ko
Fig. 6 – Visualisation d’une surface structurée
(b) Résultat de la commande Octave/Gnuplot surfc
JPEG - 4.6 ko
Fig. 6 – Visualisation d’une surface structurée
(c) Résultat de la commande Octave/Octaviz vtk_surfc

Elles permettent, par exemple, de définir une transparence, comme pour vtk_plot3 et vtk_line3.
Jusqu’à ce point, on a réussi à reproduire ce qu’on pouvait déjà faire en Octave/Gnuplot mais en plus beau. Octaviz comble une des lacunes qui empêchait les personnes qui font du calcul scientifique de passer à Octave : la visualisation de maillages non structurés. Un maillage surfacique (voir fig. 7) non-structuré consiste en une liste d’indices de noeuds formant les triangles, et une liste de coordonnées correspondantes aux noeuds.

JPEG - 5.2 ko
Fig. 7 – Visualisation d’un maillage non-structuré
(a) Résultat de la commande Matlab trimesh
JPEG - 5.1 ko
Fig. 7 – Visualisation d’un maillage non-structuré
(b) Résultat de la commande Octave/Octaviz vtk_trimesh

De plus, on peut décider d’affecter une valeur à chaque noeud ou à chaque triangle. Avec Octave/Octaviz, on peut visualiser la surface (fig. 8) et ses valeurs aux noeuds, mais malheureusement pas les valeurs par triangle, ce qui est possible en Matlab.

JPEG - 6.2 ko
Fig. 8 – Visualisation d’une surface non-structurée
(a) Résultat de la commande Matlab trisurf
JPEG - 4.5 ko
Fig. 8 – Visualisation d’une surface non-structurée
(b) Résultat de la commande Octave/Octaviz vtk_trisurf

Au-delà des fonctions Octave : les wrappers VTK

Les wrappers VTK donnent à Octave toute la puissance de VTK. En pratique, avec Octaviz vous avez sous Octave ce que vous avez sous Python directement avec VTK, c’est-à-dire toutes les fonctionnalités de VTK. Dans la figure 9, Octaviz nous a permis d’afficher les lignes de courants correspondant au champ de vitesse, colorées selon la pression. De plus, on peut superposer la géométrie du domaine en transparence.

JPEG - 7.2 ko
Fig. 9 – Lignes de courant et géométrie transparente avec les wrappers VTK

Conclusion

Octaviz ajoute à Octave des fonctionnalités vitales : ses moteurs graphiques ont été auparavant critiqués par les habitués des logiciels tels que Matlab. Grâce à VTK, la partie visualisation d’Octave devient esthétiquement comparable à des logiciels de visualisation scientifique. Octaviz est un projet en plein développement, ce qui signifie qu’il y a encore beaucoup de travail pour le rendre utilisable par tout le monde. Actuellement les utilisateurs non-Linux se voient coupés de ce logiciel car sa mise en oeuvre sous Windows et MacOS n’est pas triviale. De plus, il n’est disponible qu’avec la version 2.1 d’Octave, version qui ne comprend pas de support pour les matrices creuses. Pour cela il faut la version 2.9, qui est déjà fournie par les distributions Linux, mais sans Octaviz. Si on veut le couple Octave2.9-Octaviz, il faut télécharger les sources d’Octaviz0.4.6 et les compiler, en attendant que quelqu’un mette à disposition un paquetage.

Références

  1. Jean-Daniel Bonjour, GNU Octave & Octave Forge. FI/7/06.
  2. Octaviz
  3. VTK
  4. Jean M. Favre, Large Data and Distributed Visualization with the Visualization Toolkit (VTK). EPFL Supercomputing review 14, 2004.
  5. Sources relatives à cet article .


Cherchez ...

- dans tous les Flash informatique
(entre 1986 et 2001: seulement sur les titres et auteurs)
- par mot-clé

Avertissement

Cette page est un article d'une publication de l'EPFL.
Le contenu et certains liens ne sont peut-être plus d'actualité.

Responsabilité

Les articles n'engagent que leurs auteurs, sauf ceux qui concernent de façon évidente des prestations officielles (sous la responsabilité du DIT ou d'autres entités). Toute reproduction, même partielle, n'est autorisée qu'avec l'accord de la rédaction et des auteurs.


Archives sur clé USB

Le Flash informatique ne paraîtra plus. Le dernier numéro est daté de décembre 2013.

Taguage des articles

Depuis 2010, pour aider le lecteur, les articles sont taggués:
  •   tout public
    que vous soyiez utilisateur occasionnel du PC familial, ou bien simplement propriétaire d'un iPhone, lisez l'article marqué tout public, vous y apprendrez plein de choses qui vous permettront de mieux appréhender ces technologies qui envahissent votre quotidien
  •   public averti
    l'article parle de concepts techniques, mais à la portée de toute personne intéressée par les dessous des nouvelles technologies
  •   expert
    le sujet abordé n'intéresse que peu de lecteurs, mais ceux-là seront ravis d'approfondir un thème, d'en savoir plus sur un nouveau langage.