Tutorial 4 : Homography 3D, calcul de débit
Ce tutoriel présente l’analyse d’une vidéo réalisée au drone sur un canal d’amenée de forme trapézoidale. la prise de vue est faite de façon non verticale pour éviter les reflets. Des traceurs spécifiques sont injectés depuis l’amont. Des repères au sol au niveau de la surface libre sont installés.
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 canal.
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 utiliser la position des repères. Pour ce tutoriel sur l’homographie 3D nous supposerons que tous les points ont une côte de 1m. L’homographie 2D est vue dans le tutoriel 1.
Vous devez maintenant relever la position en pixel des repères (6 points blancs). 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. On peut faire un copier/coller des points dans la fenêtre de dialogue.
Lorsque les 6 points sont relevés, on créé un fichier texte ayant comme colonne la position du repère en X (sur image), en Y (sur l’image), en X (dans la réalité), en Y (dans la réalité), en Z (dans la réalité). Les lignes correspondent à chaque point.
Il faut ensuite sauver le fichier et le nommer par exemple “projection_3D”. Notons que s’il s’appelle “projection.txt” il sera automatiquement lu à l’ouverture de la vidéo.
Allez dans l’onglet Pre-processing.
Sélectionnez Homography dans le menu déroulant
Cliquez sur le bouton 3D
Appuyez sur Read et sélectionnez le fichier de projection créé (projection_3D)
ATTENTION : les 6 points ne sont pas affichés mais ils seront tous pris en compte pour le calcul de l’homographie 3D. On commence par une analyse avec projection après détection (voir tutoriel 1). La résolution en Pixels par mètre correspond à la résolution après projection, elle ne sert ici que pour la visualisation des résultats.
Sélectionnez 3D
Sélectionnez After detection
Mettre 10 comme valeur du nombre de pixel par mètre.
Vous pouvez choisir de lire directement le fichier “projection_canal.txt” fourni avec les données des tutoriaux.
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 200
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.
Il se peut que le système soit fortement surcontraint et que l’algorithme ne converge pas. Dans ce cas reduisez le nombre de point, un fichier exemple est fourni avec 5 points. Le problème peut être attribué au fait que la caméra n’est pas calibrée. Avec une matrice intrinsèque connue seuls 4 points sont nécessaires.
Détection d’objet
La prise de vidéo a été effectuée alors qu’un vent important s’opposer à l’écoulement. Par conséquent, il est plus opportun de choisir un méthode qui ne risquent de détecter des sturctures de surface dues au vent. On chosit la méthode par seuillage
Allez dans l’onglet Objet detection.
Choisir la méthode Threshold
Modifez le paramètre Size min =2 et Size max à 6. Cela permet d’identifier les objets ayant une taille entre 2 et 6 pixels.
Modifez le paramètre Intensity min =0.5 et Intenisty max à 1.
Cliquer sur Objet Detection pour lancer la détection des objets.
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.
Analyse des déplacements
Aller dans Process>> Analysis
Choisissez une taille de cellule d’analyse de 4 mètres(Cell size)
Afin de pouvoir estimer rapidement un débit, nous allons entrer un modèle numérique de la bathymétrie. * Cochez la cas import DEM* * Entrez dans la case à côté la cote de l’eau, ici 4,4m.
Dans un premier temps, nous n’utilisons pas les fonctions de filtrage.
Cliquer sur Compute
Une fenêtre de dialogue apparait. * Sélectionnez le fichier contenant le modèle numérique de terrain. * Fermez la fenêtre de visualisation du MNT. ATTENTION, il ne s’agit que d’une visualisation du MNT, les données tulisées peuvent être plus précises que celles visualisées.
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. On remarque les résultats ont été projetés (et calculés) selon l’homographie donnée.
On peut refaire l’opération pour 3 sections. Les débits calculés pour chaque section apparaissent alors dasn la fenêtre de dialogue.