Tutorial 3 : Lecture image (laboratoire) et export telemac

Ce tutoriel présente l’analyse d’une séquence d’image acquise en laboratoire ainsi que la réalisation d’un fichier résultat au format selafin (Telemac, Fudaa) L’écoulement est un écoulement plan dans un canal de 25 cm de large avec une pente de 1% sur des fortes rugosités. Les détails expérimentaux sont dans Romdhane .H, Soualmia A., Cassan L. and Masbernat L. Evolution of flow velocities in a rectangular channel with homogeneous bed roughness. International Journal of Engineering Research, 6(3) :120–12, 2017

Ouverture du logiciel

Double cliquez sur l’icone Andromède. Une console python s’ouvre alors, puis l’interface graphique apparait.

_images/tuto_open_software.png
  • Aller dans File >> Import Vidéo.

  • Dasn le menu déroulant des types de fichier choisissez Images

  • Aller dans le répertoire contenant les images. Seules les images à traiter doivent y être (des fichiers non images peuvent être présents).

  • Sélectionner une image.

Le logiciel va renommer les images par ordre de lecture afin de pouvoir les lires avec la librairies openCV. Vous devez ensuite entrer le repertoir de stockage des nouvelles images ainsi que la racine de leur noms. Une nouvelle fenêtre apparait où vous devez entrer la fréquence d’acquistion des images, ici c’est 300 fps.

_images/tuto3_open.png

Création de l’homographie

Afin de pouvoir transformer les positions des particules en pixel sur l’image vers des positions réelles en mètre, nous allons determiner une longueur de référence Dans notre cas on sait que la distance entre 2 rugosités de fond est de 25 mm.

  • Aller dans l’onglet Pre-processing.

  • Sélectionner No Transformation dans le menu déroulant

Vous devez maintenant relever une distance réelle connue sur la vidéo. On choisit une distance entre 5 rugosités. Le segment choisi doit être le plus près possible de la surface, le plus long possible et au centre de l’image si possible.

Double cliquez sur une extrémité du segment, il apparait alors dans la fenètre de commande la position en pixel suivant X (largeur) et Y (hauteur). Vous pouvez améliorer la précision du repérage en zoomant avec la molette de la souris.

  • Pressez la touche shift

  • Double cliquez sur l’autre extrémité.

Il apparait alors une fenêtre de dialogue permettant d’entrer la distance réelle entre les 2 points. On peut noter que cette fenêtre permet de mesurer n’importe quelle distance en pixel sur l’image.

_images/tuto3_distance.png

La transformation des distances en pixels vers des distance en mètres se fera par un simple divison par le paramètre pixel par metre qui apparait sur l’interface. Il peut être ajuster manuellement dans l’onglet.

Création du masque

On commence par créer un masque des zones où l’analyse n’est pas demandée pour limiter le temps de calcul. On crée un polygone entourant la zone d’étude.

  • Aller dans l’onglet Image Processing.

  • cliquer sur draw mask

  • Faites un clic gauche pour définir points du contour.

  • Fermez la sélection avec un clic droit.

Les positions X et Y de la ROI s’ajustent automatiquement dans l’onglet. Vous pouvez sauver le masque sous forme d’une image binaire en allant sur File>>Write/export>>Mask. Lorsque le premier traitement sera effectué, le masque ne pourra plus bouger, il faudra fermer et réouvrir la vidéo pour le changer.

_images/tuto3_masque.png

Fenêtre temporelle d’analyse et image processing

A l’aide du curseur ou des boutons Previous et Next vous pouvez visualiser les différentes images de la vidéo. On peut repérer une fenêtre temporelle adéquate pour le traitement.

  • Entrez dans Frames,Min, la valeur 0

  • Entrez dans Frames,Max, la valeur 60

  • Laisser dans step la valeur 1, cela permet de considérer toutes les images.

  • Laisser Color conversion, grey, les images seront ainsi mises en niveaux de gris

  • Cliquer sur Image Process pour lancer l’analyse des images.

On peut se déplacer dans les images traitées et originales qui sont maintenant en mémoire vive de l’ordinateur. Vous pouvez visualiser de nouveau l’image initiale grâce au menu déroulant en bas Original.

Détection d’objet

  • Allez dans l’onglet Objet detection.

  • Choisissez la méthode Threshold

  • Modifez le paramètre Size min =2 et Size max à 10. Cela permet d’identifier les objets ayant une taille entre 2 et 10 pixel.

  • Modifez le paramètre Intensity min =0 et Intenisty max à 0.3. Cela permet d’identifier les objets sombres.

  • Cliquer sur Objet Detection pour lancer la détection des objets.

Il apparait alors sur chaque image des points rouges matérialisant les positions des objets détectés. Cette méthode est plus adaptée que les autres dans ce cas expérimental. La quasi totalité des particules est détectée.

_images/tuto3_object_detection.png

modèle de déplacement

  • Allez dans l’onglet Motion Model.

  • Choisissez la méthode tractrac (https://perso.univ-rennes1.fr/joris.heyman/trac.html)

  • L’écoulement étant rapide la distance maximale est fixée à 100

  • Cochez la case Motion Model avec 3 itérations comme paramètres. Ce modèle de propagation permet de vérifier sur plusieurs itérations la cohérence des trajectoires sur 3 pas de temps.

  • Ne pas Cochez la case Filtering dans ce premier exemple.

  • Cliquer sur Motion Model pour lancer le calcul.

Il apparait alors sur chaque image des lignes bleues matérialisant les déplacements des objets détectés.

_images/tuto3_deplacement.png

Visualisation des trajectoires

On peut estimer une première approximation des trajectoires en choisissant Trajectories dans le menu déroulant sous la visualisation. Pour visualiser l’évoultion des trajectoires, cliquez sur le bouton Next.

_images/tuto3_traj.png

Analyse des déplacements

La détermination des vitesses est finie, il faut maintenant analyser l’ensemble des déplacements trouvés.

  • Aller dans Process>> Analysis

  • Choisissez une taille de cellule d’analyse de 2 cm (Cell size)

Dans un premier temps, nous n’utilisons pas les fonctions de filtrage.

  • Cliquer sur Compute

  • Attendre la disparition de la fenêtre

Visualisation des résultats

  • Aller dans Process>> Vizualisation.

  • Cocher Velocity Field et Background image.

  • Appuyer sur OK

Il apparait alors 1 fenêtre de résultats.

_images/tuto3_result1.png

Nous allons maintenant finir l’analyse des résultats avec un autre logiciel. pour cela nous allons d’abord exporter les champs de vitesses.

  • Aller dans File> Write/export>> results.

  • Choisissez un dossier où sauver les résultats, par exemple celui des images

  • Appuyer sur OK

_images/tuto3_export.png

Création d’un fichier Selafin

Le format Selafin est commun en hydraulique puisqu’il est le fichier de sortie de la chaine Telmac-Mascaret ou du Fudaa-LSPIV. A partir des exports d’Andromede, nous allons voir comment créer un fichier à ce format ce qui permettra des calculs de débits, des comparaisons avec des modèles, des visualisations performanates.

Nous utilisons ici le logiciel BlueKenue qui est gratuit et utilisable sous windows. Il peut être télécharger à partir du lien: https://nrc.canada.ca/fr/recherche-developpement/produits-services/logiciels-applications/blue-kenuetm-logiciel-modelisateurs-hydrauliques

Importation des résultats

_images/tuto3_importASCII.png
  • Ouvrez le logiciel Bluekenue

  • Allez dans **File>>Import>>ARC Info grid (ASCII)

  • Sélectionnez la couche VelocityVx dans le dossier où vous avez exporter les résultats ANDROMEDE

  • Cliquez sur Ouvrir

  • Cliquez sur OK à la fin de l’importation

  • Renouvelez le processus pour la couche VelocityVx

  • Faites ensuite un glisser-déposer des couches apparues dans la colonne de gauche vers 2D View

_images/tuto3_viewlayer.png

Création du maillage

On va d’abord créer un contour du domaine. Pour cela : * Cliquez sur l’icone New Closed Line * Définissez le domaine en cliquant sur les extrémites de la grille * fermer la ligne en cliquant de nouveau sur l’icone New Closed Line * Donnez le nom de contour à la ligne

_images/tuto3_contour.png

Ensuite on va créer l’objet maillage: * Aller à File>>New>>T3 mesh generator Entrez la valeur de la maille égale à la résolution de la grille. Cette valeur est disponible dans le fichier *VelocityVx.asc en l’ouvrant comme un texte. * Cliquez sur OK * Faites glisser la couche contour dans outline * Double cliquez sur newT3mesh * Cliquez sur run

_images/tuto3_generator.png
  • Double cliquez sur new Mesh qui a été créé

  • Aller dasn l’onglet Meta data

  • Remplacer le nom par Vx

  • Appuyer sur OK

_images/tuto3_namemesh.png

On renouvelle ensuite l’opération pour la vitesse selon y.

Mappage des couches

Il faut maintenant donner au nouveau maillage les valeurs de vitesses.

  • Selectionner le maillage Vx

  • Aller dans Tool>>MapObject

  • Sélectionner la couche VelocityVx

  • Renouveler l’opération pour Vy

_images/tuto3_mappage.png

Création du fichier selafin

Ensuite on va créer l’objet selafin: * Aller à File>>New>>selafin Object * Faites glisser Vx dans NewSelafin * Faites un clic droit sur NewSelafin et selectionner add variable * Sélectionner Vx dans mesh * Sélectionner VELOCITY U dans name * Cochez la case Copy node Values from Source * Cliquez sur **OK

_images/tuto3_addvariable.png
  • Faites un clic droit sur Vx dans newSelafin

  • Cliquez sur remove

  • Renouvelez l’opération pur Vy

  • Sélectionner l’objet newSelafin

  • Aller à File/save copy as

  • Donner le nom result1 puis validez.

_images/tuto3_saveslf.png

Le fichier selafin est créé pour le visualiser, il faut d’abord le fermer est le réouvrir. La variable VELOCITYUV est ainsi visualisable.

_images/tuto3_resultslf.png

Ajout d’un MNT

Dans la version actuelle d’ANDROMEDE le calcul de débit n’est pas directement possible. La procédure précédente permet de faire un calcul de débit très proche de ce qui peyut être fait par Fudaa LSPIV. Il faut cependant rajouter une bathymétrie. Le logiciel BlueKenue permet d’ajouter des bathymétrie à différents formats (.shp, .xyz, etc..). Comme pour les vitesses, le principe est de mapper le maillage avec les données bathymétrique puis ajouetr la couche de fond comme détaillé ci-dessous.

Dans notre cas, on sait que le canal fait 25 cm de profondeur. * Aller sur File>>open * Sélectionner le fichier result1.slf * Faites un clic droit sur result1.slf et selectionner add variable * Sélectionner VelocityUV dans mesh * Sélectionner Bottom dans name * Ne Cochez PAS la case Copy node Values from Source * Donner la valeur 0 dans **default value * Faites un clic droit sur result1.slf et selectionner add variable * Sélectionner VelocityUV dans mesh * Sélectionner Bottom dans name * Ne Cochez PAS la case Copy node Values from Source * Donner la valeur 0.25 dans **default value * Validez * Sauvez le nouveau fichier

_images/tuto3_fond.png

On peut maintenant calculer des débits par exemple avec Fudaa prepro. On retrouve bien le débit expérimental de 10 l/s.

_images/tuto3_discharge.png