Transformation géométrique
Principe
Par définition, la mesure est censée être effectuée sur un plan représentant la surface libre. Ce plan peut ne pas être horizontal, ce qui limite l’approximation pour les structures traversantes notamment. L’objectif de l’étape de transformation géométrique est de transformer l’image pixelisée en une image où chaque pixel correspond à une taille identique dans la réalité. Cela revient à déformer l’image pour voir comment elle aurait été si on avait pris l’image verticalement (en fait de la normale à la surface libre). Cette transformation géométrique est l’inverse de la projection du monde réel en 3D sur le plan du capteur de la caméra. Cette projection peut être décrite mathématiquement par une homographie. Les propriétés relatives à ces homographies qui concernent directement la mesure sur le terrain seront données ci-dessous. Il est important de garder à l’esprit que cette étape est essentielle et que l’utilisation de la méthode sans transformation est en fait une homographie avec des hypothèses simplificatrices.
Enfin cette étape de transformation est relativement rapide grâce aux algorithmes développés dans openCV. Cependant, il est toujours plus rapide de transformer seulement un certain nombre de points plutôt que tous les pixels de toutes les images. C’est pourquoi nous pouvons choisir de faire la transformation sur toutes les images (option avant détection) ou sur les positions détectées sur l’image brute (après détection).
Dans ANDROMEDE, les transformations sont traitées en utilisant les fonctions photogrammétriques développées dans le projet FlowVeloTool :
(https://github.com/AnetteEltner/FlowVeloTool). Ces scripts utilisent des fonctions openCV spécifiques pour l’utilisation d’un modèle de sténopé. Les scripts liés à l’intégration des données des drones ont été développés pour le projet ANDROMEDE.
Sans transformation
L’utilisation de l’option Sans transformation est adaptée aux images verticales sans distorsion optique. Ce cas correspond aux images prises par drone, pour lesquelles les distorsions sont déjà censées avoir été corrigées.
Le principe de ce mode est de définir une résolution constante (distance réelle correspondant à 1 pixel) sur l’ensemble de l’image. Le paramètre de la transformation est l’inverse de la résolution, à savoir le nombre de pixels par mètre. Pour mesurer directement ce paramètre sur les images nous pouvons utiliser un outil spécifique d’ANDROMEDE (figure :ref:’fig-transf01’).
Pour ce faire, vous devez disposer sur l’image de deux points de référence (au niveau de la surface libre) dont la distance réelle entre eux est connue. Il peut s’agir d’un élément de génie civil ou d’une règle placée sur le sol au niveau de la surface libre.
Double-cliquez sur le premier repère, puis appuyez sur CTRL et cliquez sur le second repère. Vous pouvez utiliser la fonction zoom pour plus de précision.
Dans l’interface qui s’ouvre, la distance en pixels apparaît. Vous devez alors saisir la distance réelle en mètres entre les deux marqueurs.
Dans ce mode, il n’y a pas d’incertitudes associées à la partie transformation. Il faudra passer par une analyse par homographie pour préciser les incertitudes qui dépendent de la position du drone et de la caméra utilisée.
Homographie
Fichier de projection
La première étape de la transformation consiste à fournir la correspondance entre la position réelle des objets (en mètres) et leur position sur l’image (en pixels). Pour cela, nous devons connaître la position réelle des points de repère (notés GRP : ground reference point).
L’homographie 2D
Dans une homographie 2D, on suppose que les points réels sont sur le plan que l’on veut projeter. Ils doivent donc être le plus proche possible de la surface libre. De même, pour gagner en précision, ils doivent être le plus éloignés possible, idéalement aux 4 extrémités de la zone d’intérêt. Dans l’algorithme choisi, seuls 4 GCPs sont nécessaires et suffisants (figure :ref:’fig-transf02’). Si la direction des axes réels est opposée à la direction des pixels sur l’images (de gauche à droite et de haut en bas), il se peut qu’un effet mirroir apparaise sur l’image transformée. Dans ce cas il faut inverser 1 ou 2 axes en les multipliant les positions réelles par -1.
Homographie 3D
Le principe de l’homographie 3D est identique à celui de l’homographie 2D. Nous allons juste ajouter une donnée correspondant à la dimension verticale réelle des GRP. Dans le mode par défaut, le nombre minimum de GRP est de 4 mais une matrice intrinsèque de la caméra doit être saisie. Il s’agit d’un fichier texte contenant 1 ligne avec le paramètre (table ref{tab:camera}) :
Le fichier doit être nommé “interiorGeometry.txt” et être dans le répertoire de la vidéo. Cela permet de le charger automatiquement. S’il n’existe pas, les valeurs par défaut sont prises (taille des pixels =10 µm et distance focale = la moitié du capteur). Les coefficients de distorsion peuvent être obtenus par une calibration indépendante. Les valeurs de position de la caméra sont facultatives et peuvent être utilisées dans le mode de transformation suivant (Camera Position). Le calcul de la matrice de transformation est effectué par les scripts disponibles sur https://github.com/AnetteEltner/FlowVeloTool. Pendant l’étape de traitement de l’image, la position estimée de la caméra et l’incertitude associée apparaîtront dans la console.
Avant la détection
Toutes les images (de la zone d’intérêt) sont transformées. La résolution de l’image transformée est donnée par le paramètre pixel par mètre. Si l’on veut identifier des particules de quelques centimètres, l’ordre de grandeur de ce paramètre doit être de quelques dizaines (=1/0.01m). Cependant, nous devons faire attention à ne pas avoir trop de pixels dans l’image transformée pour des raisons de mémoire. Cela peut arriver si la déformation est trop importante. Dans ce cas, la méthode After detection est nécessaire. De plus, la méthode Avant détection n’est justifiée que lorsque nous voulons être très sélectifs sur la taille et/ou la forme des particules. Cependant, si on utilise un modèle de PIV, il peut être logique de transformer les images avan. On assure ainsi une cohérence concernant la vitesse moyenne en fonction de la résolution spatiale de la fénêtre d’analyse.
Après détection
La méthode Après détection a l’avantage de réduire le temps de calcul et l’espace mémoire nécessaire. Les détections sont effectuées sur l’image originale. Par conséquent, des particules identiques n’ont pas la même taille en fonction de leur position. Cependant, certains algorithmes de détection permettent d’utiliser une gamme de variations plutôt qu’une valeur fixe. La transformation des positions des particules est faite dans l’étape d’analyse. Cependant, si on utilise un modèle de PIV, il peut être logique de transformer les images avant pour avoir une cohérence concernant la vitesse moyenne en fonction de la résolution spatiale de la fénêtre d’analyse.
Caméra Position
Le mode caméra permet de connaître la transformation en utilisant les caractéristiques de la caméra et en particulier sa position. L’intérêt principal est de s’affranchir des points de référence au sol (GRPS). La position de la caméra est liée à l’utilisation du drone, c’est-à-dire que les angles sont définis par rapport à la position du capteur de la caméra par rapport à l’horizontale. Ces angles sont dans l’ordre : roll, pitch, yaw (Fig. :ref:’fig-transfaxis’). Par exemple, pour une vue verticale vue du dessus, les angles sont respectivement 0, -90, 0 degrés. La position de la caméra est donnée en mètres. La résolution de l’image dépend de la distance focale de l’objectif et de la position choisie. Pour modifier la position de la caméra, vous pouvez utiliser le fichier de paramètres comme décrit dans la description générale. Il faut également définir la cote de la surface libre qui doit être donné dans le même repère que la position de la caméra. Actuellement, les détections ne se font que sur les images brutes avec ce mode.
UAV
Ce mode permet de transformer les positions des pixels en positions du monde réel sans référence au sol, même lorsque la caméra est en mouvement. Il est donc possible de mesurer de plus grandes zones avec les mêmes particules. La détection se fait sur les images brutes de la même manière que le mode after détection des modes précédents. La transformation en coordonnées réelles se fait lors de la phase d’analyse.
Après avoir chargé la vidéo et choisi les modes de détection et de déplacement pertinents, il faut sélectionner le mode UAV dans le menu déroulant de l’onglet PreProcessing.
On lance alors un calcul complet (Full Processing). Le logiciel demande alors d’indiquer un fichier de vol du drone où sont localisées les positions de la caméra en fonction du temps. Les positions sont géoréférencées dans le système UTM en X et Y et la position verticale est donnée par rapport au point de décollage. Le logiciel est conçu pour lire automatiquement les plans de vol au format DJI. Il est également nécessaire de donner la position relative de la surface libre par rapport au point de décollage. Cette donnée doit être fournie dans le fichier de paramètres, elle est 0 par défaut et peut être modifiée à l’aide du fichier de paramètres.
La transformation se faisant directement en coordonnées réelles, aucune visualisation de la zone sous forme d’images n’est disponible pour le moment. La superposition des champs de vitesse avec une orthophoto nécessite l’utilisation de logiciels complémentaires (BlueKenue, Qgis, Google Earth).