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.
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.
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.
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.
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.
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.
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.
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.
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
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
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
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
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
Double cliquez sur new Mesh qui a été créé
Aller dasn l’onglet Meta data
Remplacer le nom par Vx
Appuyer sur OK
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
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
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.
Le fichier selafin est créé pour le visualiser, il faut d’abord le fermer est le réouvrir. La variable VELOCITYUV est ainsi visualisable.
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
On peut maintenant calculer des débits par exemple avec Fudaa prepro. On retrouve bien le débit expérimental de 10 l/s.