Tutorial 2 : Courantologie à partir de drone
Ce tutoriel présente l’analyse d’une vidéo à l’aval d’un barrage. Il existe 2 écoulements principaux, 1 venant du deversement sur le barrage, un autre de la passe à poisson.
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.
Sélectionner une vidéo, par exemple ici dam1.
Il s’agit d’une séquence vidéo prise prise depuis un drone. On suppose que durant la séquence les mouvements du drone sont faibles, il n’y a donc pas de stabilisation préalable.
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 On suppose que la prise de vue est bien à la verticale (Nadir) et que les algorithmes du drone ont bien corrigé la distortion.
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 la section de sortie de la passe qui fait 2 mètres. 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 100
Entrez dans Frames,Max, la valeur 150
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 DoG
Modifez le paramètre peak neighbour et peak convolution size à 3. Cela permet d’identifier les objets ayant une taille autour de 3 pixels
Choisissez une méthode de détection sub-pixel par exemple Gaussian
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.
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)
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.
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 50 pixels (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.
Le champs de vitesse semble cohérent mais certains points présentent des abérrations à cause de la mauvaise qualité de la détection à cet endroit (peu de lumière et d’objets). Pour corriger cela nous pouvons utiliser le filtrage par trajectoire.
Aller dans Process>> Analysis
Choisissez une taille de cellule d’analyse de 50 pixels (Cell size)
Cochez le filtrage par trajectoire (Filter Trajectory) et choisissez de garder les trajectoires ayant plus de 5 détections
Cliquer sur Compute
Aller dans Process>> Vizualisation.
Cocher Velocity Field , Streamline et Background image.
On observe que le champs de vitesse a bien été filtré et modifié uniquement dans les parties avec mauvaises détections.
On peut également voir sur le graphe Trajectory les trajectoires gardées pour le calcul. ATTENTION, l’affichage de ce graphe est relativement long.
Sur la figure Velocity Field, pressez la touche CTRL et cliquez sur un point à gauche du jet de la passe à poisson.
Maintenez la touche CTRL et cliquez sur un point à droite du jet. Vous avez créé un transect.
Cliquez sur le bouton droit de la souris pour finir la sélection. Il apparait alors 2 graphes des vitesses, 1 graphes par transects + la superposition des transects.
Les zones grisés représentent l’écart type de la distributions des vitesses. Les zones en rouges représentent l’incertitudes liés à l’homographie (positions des repères et des pixels). Ici les 2 sont identiques car il n’y pas d’homographie.
La distribution des mesures est très dispersée bien que les valeurs moyennes soient cohérentes. On peut donc essayer une autre méthode de détection et de mouvement. La méthode par défaut recommandée une GoodFeatureToTrack et Opyflow. On obtient alors les résultats suivant:
La distribution est fortement resserrée autour de la valeur moyenne et doit correspondre aux fluctuations turbulentes. Dans ce cas, ce calcul ets donc plus pertinent. On teste également la combinaison Threshold et IMFT simple. On cherche des particules entre 2 et 10 pixels de côté et une intenisté supérieure à 0.55. On obtient les résultats suivant:
La valeur moyenne sont proches de la méthode précédente mais la distribution est plus grandes. Cela est normal car cette méthode est spécifique à des traceurs aux caractéristiques connues, ce qui n’est pas le cas dans cet exemple. Cependant les mauvaises détections peuvent être filtrées a posteriori.
Aller dans Process>> Analysis
Choisissez une taille de cellule d’analyse de 50 pixels (Cell size)
Cochez le filtrage des valeurs abérrantes (Filter quantile) et choisissez un croitère de 70%
Cliquer sur Compute
On fait ici l’étude sur 200 images pour que la définition des quantile soit significative. On obtient alors les résultats suivant: