math
Logiciel permettant de restaurer des images dégradées par un opérateur de convolution et un bruit (Gaussien ou de Poisson). La méthode se base sur la minimisation d'un critère convexe composé d'un terme d'attache aux données (norme l2 ou divergence de Kullback-Leibler), d'une indicatrice de convexe (permettant de contraindre la dynamique de l'image restaurée) et d'un terme de régularisation pouvant être :
- une norme l1 appliquée sur les coefficients d'une transformée en arbre dual (DTT),
- un terme de variation totale,
- une régularisation hybride composée d'une norme l1 et de TV.
L'algorithme utilisé est le PPXA (Parallel ProXimal Algorithm).
LISDQS (logiciel d’interpolation de données quantitatives et spatiales) est écrit en C++ et encapsulé en JAVA. Il a été conçu pour créer, rassembler, hiérarchiser toute l’information spatiale nécessaire à l’interpolation. Le logiciel gère l’ensemble des opérations :
- depuis l’importation des informations initiales (données résultant de l’observation et caractérisées par une localisation en X/Y et valeurs à analyser [format SHP], données géographiques en mode « raster » telles que le modèle numérique de terrain (MNT), l’occupation du sol issue de la télédétection, etc., au format GEO-TIFF ou ASCII-GRID,
- jusqu’à l’établissement des modèles destinés à la cartographie,
- en passant par la création du système d’information géographique sous-jacent (création et gestion des couches d’informations [variables explicatives] nécessaires aux calculs), à l’analyse statistique et géostatistique, et à l’interpolation elle-même.
Une attention toute particulière a été accordée à la création de variables explicatives originales. Outre le calcul des pentes, du rayonnement global, distance à tel ou tel objet et autres variables proposées sur la plupart des logiciels SIG, LISDQS propose des variables originales telles que, entre autres : (i) le calcul de la dimension fractale des formes topographiques ou d'occupation du sol, (ii) la profondeur des dépressions et des éminences topographiques tirées du réseau linéarisé des thalwegs et crêtes. En outre, chaque variable peut être calculée à l’intérieur de fenêtres dont le nombre et la taille sont paramétrables.
Les différentes phases de calcul et d’interpolation sont gérées automatiquement, avec un nombre aussi réduit que possible d’interventions de la part de l’utilisateur. Le logiciel est tout à la fois un SIG aux sens « programme » et une base de données. Il permet le traitement de plusieurs milliers de situations en un temps réduit.
Il propose deux méthodes d’analyse :
- la première est fondée sur les corrélations linéaires entre la variable expliquée (à interpoler) et les variables explicatives crées par LISDQS, ou importées. Les meilleurs estimateurs de la variable à interpoler sont identifiés, puis les variables significatives au seuil de 5% sont croisées dans le cadre de régressions multiples.
- la seconde analyse est basée sur la géostatistique.
L’opérateur choisit l’ordre dans lequel ces deux analyses s’enchaînent ; la seconde estimant les résidus obtenus à l’issue de la première étape. L’estimation en chaque point de grille résulte soit des données issues de tous les points d’observation (interpolation globale), soit des données issues des n postes les plus proches (interpolation locale). L’opérateur choisit l’une ou l’autre option. Les coefficients de la régression multiple et du krigeage sont considérés comme des opérateurs cartographiques qui permettent de restituer le champ continu de la variable à interpoler. L’opérateur a la possibilité de cartographier le résultat de l’une ou l’autre analyse, ou le modèle final résultant de la somme des estimations issues des deux étapes. Les résultats se présentent sous deux formes. Il s’agit d’abord de graphes et d’indices statistiques permettant de juger de la qualité des estimations. Il s’agit ensuite des modèles spatiaux qui peuvent être visualisés avec ou non segmentation en classes. L’export des cartes se fait au format PNG ou SVG ; l’export des modèles spatiaux se fait au format GEO-TIFF ou ASCII-GRID.
SWIG est un outil qui permet d'utiliser des programmes écrits en C/C++ depuis des langages, souvent interprétés, tels que Python, Perl, Ruby, Java.
L'interfaçage de deux langages demande au développeur la connaissance des adaptateurs (wrapper). Par exemple, si l'on veut interfacer un programme C en Python, il est nécessaire de bien connaître l'interface de programmation C (API) permettant de faire les connexions entre les deux langages.
SWIG permet de s'affranchir de ces connaissances en proposant au développeur un ensemble d'outils qui permet de réaliser directement l'adaptateur. Pour ce faire, il est juste nécessaire de décrire, via un fichier interface, les fonctions et les données à interfacer ainsi que la manière de le faire.
Prenons un exemple simple illustrant les fonctionnalités de base de SWIG. Nous avons un programme C (factorielle.c) qui calcule la factorielle
#include <stdio.h>
int factorielle(int n)
{
if (n > 1) return n * factorielle(n - 1);
else return 1;
}
auquel nous ajoutons un fichier interface factorielle.i comprenant les signatures des fonctions de l'adaptateur.
%module factorielle
%{
extern int factorielle(int);
%}
extern int factorielle(int);
Dans un terminal, nous utilisons la commande swig pour créer l'adaptateur factorielle_wrap.c, puis nous créons une librairie contenant le programme C original et cet adaptateur nouvellement créé.
Création d'un module Python
terminal$ swig -python factorielle.i
terminal$ gcc -fPIC -c factorielle.c factorielle_wrap.c -I/usr/include/python2.6
terminal$ ld -shared factorielle.o factorielle_wrap.o -o _factorielle.so
terminal$ python
Python 2.6.4 (r264:75706, Nov 2 2009, 14:44:17)
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import factorielle
>>> factorielle.factorielle(4)
24
Création d'un module Perl
terminal$ swig -perl factorielle.i
terminal$ gcc -fPIC -c factorielle.c factorielle_wrap.c `perl -MExtUtils::Embed -e ccopts`
terminal$ ld -G factorielle.o factorielle_wrap.o -o factorielle.so
terminal$ perl
use factorielle;
print factorielle::factorielle(4),"\n";
Ctrl + d
24
Cet exemple simple montre qu'il est possible de créer facilement et très rapidement des modules dans des langages de haut niveau sans connaissance préalable sur la manière d'interfacer du Python avec du C, du Perl avec du C, ...
Le fichier interface peut être beaucoup plus compliqué que ce que nous avons montré précédemment. SWIG gère l'interfaçage de structures, de classes,... Il est également fourni avec un ensemble de fichiers interfaces permettant par exemple d'utiliser la librairie STL. Vous pouvez également créer vos propres typemaps indiquant à SWIG comment passer d'un type de données C ou C++ à un type de données Perl, Python,... Ceci est par exemple utiliser dans numpy où vous pouvez grâce au fichier interface numpy.i faire le lien entre vos tableaux C et vos tableaux numpy dans Python.
Swig permet de rapidement prototyper des applications en servant de glue à différents codes afin de les présenter sous une interface et un langage commun.
SWIG est utilisé pour accélérer certaines parties de codes Python réalisés au sein du laboratoire.
Voici la liste des fonctionnalités principales :
- opérateurs arithmétiques
- conversions de types et formats
- morphologie mathématique
- connexité digitale
- topologie digitale (binaire)
- topologie digitale (niveaux de gris)
- topologie des ordres
- opérateurs géométriques
- primitives graphiques
- histogrammes
- traitement du signal
- opérateurs statistiques
- maillages 3D
- opérateurs interactifs
La bibliothèque compte actuellement 359 opérateurs.
Ce petit programme, écrit en C, permet de mailler par des triangles un domaine bidimensionnel (avec ou sans trous). La génération de base des triangles est effectuée par une triangulation de Delaunay à partir d'un nuage de points. Il est également possible de générer le diagramme de Voronoi, de contraindre le maillage à utiliser certaines arêtes ou certains points via un PSLG (Planar Straight Line Graph) et de faire du raffinement de maillage local.
Ce logiciel est très facile à compiler et à utiliser en ligne de commande. Deux commandes sont à la disposition des utilisateurs : "triangle" pour mailler et "showme" pour visualiser les maillages créés.
Efficace et très basique, il peut être utilisé pour des calculs 2D et il convient bien pour des étudiants n'ayant jamais utilisé de mailleurs auparavant.
Pour décrire le domaine à mailler, on donne en entrée un fichier .poly (ou éventuellement un fichier .node) contenant une description des contours du domaine et éventuellement des trous ou régions à labelliser de façon spécifique.
Après exécution de la commande triangle, on obtient les fichiers suivants :
- un fichier .poly complété,
- un fichier .node contenant les coordonnées, attributs et marqueurs de frontière de chaque sommet,
- un fichier .ele contenant les numéros des sommets et les attributs de chaque triangle,
- un fichier .area contenant l'aire de chaque triangle,
- un fichier .edge contenant les numéros des sommets et les marqueurs de frontière de chaque arête,
- un fichier .neigh contenant les numéros des 3 triangles voisins de chaque triangle.
Exemple : pour mailler un carré on écrit un fichier carre.poly contenant
4 2 0 1 #nb_sommets dimension=2 attributs marqueur_frontiere=0ou1
1 0 0
2 0 1
3 1 0
4 1 1
4 2 1 # nb_segments dimension=2 marqueur_frontiere=0ou1
1 1 2
2 2 4
3 4 3
4 3 1
0 # nb_trous
et on utilise la commande "triangle -qevnpa.001 carre.poly" pour obtenir un maillage constitué de triangles d'aire maximale 0.001...
- Génération de maillage triangulaire 2D
- Enseignement
C'est un logiciel très élémentaire, quelques lignes écrites en langage C, pas d'interopérabilité avec d'autres mailleurs, pas d'interface utilisateur,... C'est aussi ce qui peut faire sa force lorsque l'on cherche quelque chose de simple.
Olena est une plate-forme logicielle libre dédiée au traitement d'images générique et performant. Son composant principal est une bibliothèque C++ générique, Milena, fournissant de nombreuses structures de données pour le traitement d'images ainsi que des algorithmes, en particulier dans le domaine de la morphologie mathématique.
Images et structures
Milena peut être utilisée sur :
- des images s'appuyant sur des grilles régulières (1D, 2D, 3D, ...) ;
- des images s'appuyant sur des graphes (non orientés) ;
- des images s'appuyant sur des complexes (http://fr.wikipedia.org/wiki/Complexe_simplicial) ;
- tout sous-ensemble des types d'images précédents ;
- tout type d'image ci-dessus modifié par une transformation géométrique/topologique.
Des concepts comme l'adjacence et (resp.) les éléments structurants de la morphologie mathématique sont représentés par des objets voisinages et fenêtres (resp.). Milena fournit des voisinages et des fenêtres classiques (par ex., 4- et 8- connexité sur grille 2D régulière, sommets adjacents dans un graphe, etc.), mais les utilisateurs peuvent définir leurs propres objets, et les utiliser de façon transparente avec des algorithmes nouveaux ou déjà existants.
Valeurs
Milena prend en compte de nombreux types de valeurs et peut donc être employée avec pratiquement tout type d'entrées et sorties utilisées en pratique, ainsi que des types d'images innovants et originaux.
Les types de valeurs actuellement fournis sont :
- les valeurs booléennes (binaires) ;
- les entiers sur n bits (avec n fixé) ;
- les nombres à virgule flottante sur n bits (avec n fixé) ;
- les niveau de gris sur n bits (avec n fixé) ;
- les valeurs couleurs dans les systèmes RGB, HSI et HSL ;
- des types étiquettes (sans arithmétique) ;
- des n-uplets et des vecteurs de taille fixe contenant des valeurs parmi les types énumérés ci-avant.
Ces types de valeurs peuvent être utilisés sans contrainte avec n'importe quel type d'images et n'importe quel algorithme, sous réserve que cette combinaison soit valide. Un utilisateur peut fournir des définitions absentes afin de prendre en compte des cas non prévus. Par exemple, il est possible de définir le supremum d'un ensemble de valeurs RGB afin de calculer la dilatation morphologique d'une image couleur RGB.
Swilena & Python
Olena fournit un ensemble de ponts vers le langage Python via le module Swilena. Cette fonctionnalité donne accès à un sous-ensemble des fonctionnalités de Milena depuis un script Python ou directement depuis l'interprète Python (via le Swilena Python Shell). Ce noyau est amené à grossir dans les prochaine versions du projet.
Atlas est un logiciel de calcul formel sur la structure et les représentations (en dimension infinie) de groupes de Lie réels :
- donnée de racines (root datum) définissant un groupe réductif complexe connexe
- classe intérieure (inner class) de formes réelles
- formes réelles
- classes de conjugaison de sous-groupes de Cartan
- composantes connexes de groupes réels
- doubles classes K\G/B
- blocs de représentations
- polynômes de Kazhdan-Lusztig-Vogan
- W-graphes
I/O par fichiers texte
Développement du logiciel, recherche.
- éditeur graphique permettant de modifier le dessin par une interface utilisateur graphique
-
sauvegarde du dessin dans un format propre à jPicEdt (basé sur XML) enfoui dans un fichier dans l'un des formats suivants :
- LaTeX de base
- LaTeX avec le paquetage eepic
- LaTeX avec PSTricks
- LaTeX avec Tikz (en cours de développement)
- DXF (exportation très basique)
- extensible par scriptage en beanshell (proche du langage Java).
- prévisualisation du dessin en le compilant de façon isolée (sans l'inclure dans un document)
- extensible en créant ses librairies d'objets graphiques (fragments)
IPOL : Image Processing On Line : algorithmes de traitement d'images en ligne
IPOL est une revue en ligne de traitement d'images, visant à faciliter l'échange et la reproductibilité des travaux de recherche.
La publication des algorithmes, aussi précise et complète que possible, comprend :
- une page web (sous licence libre Creative Commons) contenant une description détaillée de l'algorithme publié, de sa bibliographie, ainsi que des exemples commentés et d'une analyse des limites de l'algorithme ;
- une implémentation en C ou C++, portable et documentée, sous licence libre GPL, BSD... ;
- une interface web de démonstration, où l'algorithme peut être testé sur des ensembles de données téléchargées par les utilisateurs ;
- une archive contenant l'historique des expériences en ligne ;
- un forum de discussion sur l'algorithme, avec les messages des rapporteurs.
L'objectif limité de IPOL est de rendre accessible à la communauté scientifique les algorithmes dans leur forme la plus détaillée.
Les auteurs IPOL ne sont pas nécessairement les inventeurs de l'algorithme qu'ils publient. Ils peuvent n'être que les auteurs d'une implémentation de l'algorithme particulier et de sa description précise. IPOL publie des algorithmes nouveaux comme des algorithmes classiques.
IPOL propose également aux laboratoires partenaires la mise en place d'ateliers de traitement d'image.
Officiellement lancé le 29 avril 2010, IPOL contient au 02 juin 2010 ces algorithmes, en ateliers ou proches de la publication :
- Finite Difference Schemes for MCM and AMSS : schémas aux différences finies pour les algorithmes Mean Curvature Motion et Affine Morphological Scale Space
- A Real Time Morphological Snakes Algorithm : approche morphologique d'un algorithme d'évolution snake par EDP
- Algebraic Lens Distortion Model Estimation : méthode algébrique d'estimation de la distortion d'une lentille optique
- Self-Similarity Driven Demosaicking : interpolation d'une mosaique CFA par les similarités locales dans une image
- Non-local Means Denoising : non-local means denoising.
- Simplest Color Balance : transformation affine du contraste avec saturation variable des extrema de l'histogramme
- Cartoon+Texture Image Decomposition : décomposition d'une image avec extraction des textures
- Micro-Texture Synthesis by Phase Randomization : génération de microtectures par phase de Fourier aléatoire
-
Image Curvature Microscope : calcul et visualisation de la courbure sous-pixellique d'une image
curvature map - LSD: a Line Segment Detector : detection de segments a contrario
- Affine SIFT (ASIFT) : comparaison d'images invariante par transformations affines
- Retinex Poisson Equation: a Model for Color Perception : implémentation de la thérie Retinex par une équation de Poisson
Pour en savoir plus : description du projet IPOL, contenu d'IPOL, procédure de soumission d'un algorithme, politique de copyright et licence, fils RSS/Atom
NS_ADI_MCSD résout les équations de Navier-Stokes 3D en formulation vitesse tourbillon par un Schéma ADI de Peaceman-Rachford pour le transport du tourbillon et une méthode multigrille avec une technique de décomposition de domaine de type complément de Schur dual pour la résolution de la grille grossière pour des raisons d'efficacité parallèle.
Le problème traité est celui de la cavité entrainée avec un aspect ratio de 3 pour 1 et un reynolds de 3200.