Tutorial 1 : Mesure de débit en rivière
Ce tutoriel présente l’analyse d’une vidéo de rivière faite à l’aide d’une caméra Canon Eos600D. L’objectif de ce tutoriel est une première prise en main, l’ensemble des fonctionnalités ou des méthodes de calcul ne sera donc pas abordé.
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 crampagna.
Il s’agit d’une séquence vidéo prise avec trépied, il n’y aura donc pas ici besoin de stabiliser la vidéo (voir tutoriel2).
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, il faut créer la transformation géométrique (Homographie). Dans le cas où des points repères sont possibles au niveau de la surface libre, une homographie 2D basée avec 4 points est suffisante.
Tout d’abord il faut repérer sur l’image la position des 4 repères. Il s’agit ici de 4 balles jaunes au centre de cercles rouges matérialisés sur l’image suivante.
Aller dans l’onglet Pre-processing.
Sélectionner Homography dans le menu déroulant
Cliquer sur le bouton 2D
Vous devez maintenant relever la position en pixel des repères. Pour cela double cliquez sur le repère, 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.
Entrer dans le tableau la position en pixel pour chaque point.
Entrer la position réelle obtenue par un relevé topographique. Ici le point 4 est pris comme référence.
Pour cette exemple, les valeurs sont données dans le tableau ci-après:
Vous pouvez sauver ces données en cliquant sur le bouton save. Le fichier pourra alors être directement chargé pour les futures analyses à l’aide du bouton Read. Il s’agit d’un fichier texte modifiable par un éditeur de texte.
Vous devez ensuite spécifier si vous désirez: * Faire la transformation pour chaque image avant détection. Chaque image subira alors la transformation de façon à avoir une image comme si vous l’aviez prise de façon verticale. Les pixels auront alors tous la même taille que vous spécifiez dans la case pixels per metre. Si vous entrez une valeur de 1 alors une rivière de 20 mètre de large sera décrite par 20 pixels. Il faut donc un nombre suffisament grand pour repérer les particules dans la nouvelle image. * Faire la transformation uniquement après le calcul des déplacements. La valeur pixel par metre donne alors uniquement la résolution de l’image de fond.
On choisit ici un traitement après analyse (After detection). Mettre 10 pixels par mètre.
Création du masque
On commence par créer un masque des zones sans eau 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 200
Entrez dans Frames,Max, la valeur 300
Laisser dans step la valeur 2, cela permet de considérer qu’une image sur deux pour réduire le temps de calcul.
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.
Laissez par défaut la méthode GoodFeatureToTrack
Modifez le paramètre Max corner à 200. C’est le nombre maximum de point d’intérêt (corner) repérés sur l’image.
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 KLT (https://github.com/groussea/opyflow)
Les paramètres ne sont pas accessibles, les valeurs par défaut sont adaptées dans la majorité des cas.
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.
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 15 pixels (Cell size)
Les options de filtrage n’ont de sens que sur l’analyse d’une série complète. Ici on a réduit la fenêtre temporelle pour vérifier le paramétrage.
Cliquer sur Compute
Attendre la disparition de la fenêtre
Visualisation des résultats
Aller dans Process>> Vizualisation.
Cocher ** Velocity Field**,**Velocity uncertainty** et ** Background image**.
Appuyer sur OK
Il apparait alors 2 fenêtres de résultats.
Sur la figure Velocity Field, pressez la touche CTRL et cliquez sur un point de berge.
Maintenez la touche CTRL et cliquez sur un point de la berge opposé. Vous avez créé un transect.
Réitérez l’opération pour un autre transect.
Cliquez sur le bouton droit de la souris pour finir la sélection. Il apparait alors 3 graphes des vitesses, 1 graphes par transects + la superposition des transects.
Les transects situés à l’aval présentes des valeurs nulles à cause de la non détection de particules à cet endroit. 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).
La distribution des mesures étant de l’ordre de grandeur d’une distribution turbulente en rivière, nous pouvons lancer analyse sur un temps plus long. Il est possible de chercher les méthodes et paramètrees optimums en réitérant cette opération en repartant de l’étape object detection.
Calcul complet
Allez dans l’onglet Image Processing.
Entrez dans Frames,Min, la valeur 200
Entrez dans Frames,Max, la valeur 1000
Laissez dans step la valeur 2
Allez dans Process>> Full processing.
Refaites une analyse des résultats.
Visualisez à nouveau les champs moyens. On pourra sélectionner le filtrage quantile (valeurs abérrantes). La valeur 90% signifie que l’on élimine les valeurs ayant une occurence supérieure à 0.9 ou inférieure à 0.1.
Visualisez à nouveau un transect.
On peut vérifier que les résultats obtenus sont très proches de ceux mesurés par le courantomètre (cercles) ou à partir de modèles hydrauliques (traits continus) sur la figure suivante.
Calcul du débit
Pour avoir une estimation du débit, nous utilisons la méthode sans MNT qui n’est pas disponible sur cette rivière. Par contre nous avons une estimation de 3 hauteurs d’eau sur un transect. Les positions des mesures sont sur la figure précedente. Pour les entrer, vous devez: * Fermez la fenêtre de visualisation existante et en recréer une nouvelle. * Maintenez la touche d du clavier et cliquez sur le point ayant les coordonnées voulues * Dans la console de commande , entrez la valeur mesurée * validez avec la touche Entrée * Refaites l’opération pour les 3 valeurs (1,5 puis 1 puis 0,3) * Tracez une section passant proche des mesures (en rouge sur la figure suivante) * Refaites l’opération pour 2 autres sections.
On s’aperçoit que pour les sections proches des mesures, une valeur de l’ordre de 9 m3/s est obtenue ce qui correspond à la valeur obtenue par ADCP. Lorsque l’on s’éloigne des mesures de hauteurs d’eau , le calcul se fait mais la valeur a peu de signification. Cela se voitsur la bathymétrie estimée qui apparait dans un nouveau graphe.