Observatoire du Pic Champlain

De POLR
Sauter à la navigation Sauter à la recherche

Ce document est un support de référence pour la mise en place de l’observatoire du Pic Champlain (OPC), l’installation et l’entretien du système de prise de vue, son utilisation et le traitement des images produites par l’observatoire. L’OPC est un outil développé pour faire le suivi qualitatif et quantitatif du couvert de glace de mer dans la Baie du Ha ! Ha ! et le chenal du Bic durant la période hivernale. Ce système est couplé à une série d’instruments (ADCP et capteurs de pression immergés + campagne hivernale en canot à glace) afin d’obtenir le maximum de données sur les processus liés au couvert de glace, aux vagues et à leurs interactions dans la baie du Ha! Ha!.

Système de prise de vue

L’OPC est constitué d’un système commercial de prise de vue (time-lapse) de la compagnie Erdman Video System, monté sur le belvédère du Pic Champlain (parc du Bic). Il s’agit du modèle NanoPro Time Lapse équipé d’un appareil photo Canon EOS 5D et d’un objectif Rokinon XP 10mm f/3,5. Le système contient un appareil photo, un ordinateur de bord et un accès à distance 3G. L’ordinateur de bord permet la gestion du système, ses heures de fonctionnement, la fréquence et la qualité des prises de vue, l’envoi de photos sur un ftp, etc.

Le système est réglé en heure UTC, donc l’ensemble des heures mentionnées dans le reste du document sont en UTC.

Installation et entretien

L’installation du système doit être réalisé à l’automne, avant la fermeture du sentier du Pic Champlain aux véhicules. Le matériel nécessaire comporte :

  • système de caméra
  • boitier de batteries
  • 2 batteries ENERWATT AGM WP-110-12
  • poteau en aluminium
  • colliers en acier inoxydable
  • tire-fonds galvanisés 1/2 x 6 po (~10)


Avant d’installer la caméra sur le poteau d’aluminium, passer le câble d’alimentation de la caméra dans le tube d’aluminium, du haut vers le bas et le raccorder au boîtier de batteries. Fixer la caméra sur le poteau et vérifier les points suivants :

  • l'ordinateur de bord est sur "on"
  • la mise au point de l'appareil photo en manuel sur l'infini
  • la présence du dessicant
  • le branchement des clés USB

Une fois montée, orienter la caméra dans la direction désirée. Les batteries sont installées l’une sur l’autre et reliées ensemble en parallèle sur le afin d’augmenter la durée de prises de vue. Généralement, il est nécessaire de changer la paire de batteries tous les 10 à 15 jours. Dernièrement, un agent du parc faisait la rotation du jeu de batteries lors de l’inspection des installations du belvédère (environ 1 fois par semaine). Pour ce faire, un deuxième jeu de batteries et un chargeur sont laissés au garage du parc. Durant la première partie de l’hiver, les courtes journées permettent d’avoir une durée de vie plus longue. Toutefois, il est nécessaire d’ajuster régulièrement les période de prises de vue sur le système en les faisant coïncider avec les éphémérides, via l’accès réseau LogMeIn. Plus de détails sur les réglages et l’accès à distance du système sont disponibles dans les sections suivantes.

Sauvegarde des images

Les images sont enregistrées sur 1 des 2 clés USB situées à l’arrière du boîtier. Pour la récupération des images, retirer la clé et l'échanger contre une clé vide. On peut changer préalablement le disque d'archive via le réglage du système (dans VM95, setup --» option (ou F7) --» archive).

ATTENTION, vérifier que le disque d'archives est bien configuré après chaque changement de clés USB.

Les photos sont enregistrées d'après le code suivant :

- s1 (pour les images issues de la scene 1)
 - mmmddyya  (Nov0317t pour un répertoire créé le 03 novembre 2017, la lettre à la fin du nom correspond à l’heure de création du répertoire, de a à w pour 0 à 23h respectivement)
  - mddHHMMA.jpg (N031855T.jpg pour une image prise le 03 novembre à 18h55, la dernière lettre compte pour les secondes entre A et Z pour 0 à 59 secondes)

Pour les prises de vue en rafale, le système nomme les images prises par rafale avec une précision à +/- 1/100 de seconde. Les centièmes de secondes sont ajoutés au nom de fichier.


ATTENTION : lors de la copie d’images sur un autre support via un terminal linux, utiliser l’option -p pour la sauvegarde des métadonnées des images.


Avant de copier les images depuis la clé USB vers Mingan, il est nécessaire de modifier le nom de fichier pour en faciliter l'usage.

 exiftool -v0 '-filename<CreateDate' -d %Y%m%d_%H%M%S%%-c.%%le -r -ext jpg /media/run/ARCHIVE1/s1 

De plus, la commande suivante va réorganiser les images comme suit : ANNEE/JOUR/original/.jpg

 exiftool '-Directory<CreateDate' -d /run/media/ARCHIVE1/newfolder/%Y/%Y%m%d -r /run/media/ARCHIVE1/s1 

Création d'un vidéo 4K à partir de photos

Pour faire un vidéo en résolution 4K (3840x2160), on peut exécuter la commande suivante dans le dossier contenant tous les frames d'une même journée

ffmpeg -r 24 -pattern_type glob -i './*.jpg' -vf scale=3840:-1 -vcodec libx264 -crf 17 nom_du_video.MP4

Dans cet exemple,

  • -r 24 : Définit le nombre d'images par secondes (frame rate)
  • -pattern_type glob -i './*.jpg' : Permet de prendre automatiquement tous les fichiers ayant une extension .jpg dans le répertoire actuel
  • -vf scale=3840:-1 : Change la résolution des images pour que leur plus grande dimension soit de 3840 pixels. Permet donc d'obtenir une vidéo 4K.
  • -vcodec libx264 : Utilise le codec libx264 pour faire la compression du video. Ce codec est le plus communement utilisé, il est donc recommandé d'appliquer cette option.
  • -crf 17 : La valeur crf (Constant Rate Factor) contrôle le degré de compression et, donc, la qualité de la vidéo résultant. Plus cette valeur est basse, moins on perd d'information par la compression. Une valeur de 17 résultera en une compression si faible que l'oeil ne peut la déceler lors de l'écoute de la vidéo.

Chaque jour à 20h, un script nommé get_opc.sh est lancé sur le poste de travail canot afin d'aller chercher les images présentes sur le serveur FTP et en faire une vidéo 4K. Les images et la vidéo sont enregistrées sous le chemin suivant :

/archive/BICWIN/année/jour/OPC/ftp 

Comme on cherche à minimiser la taille des images enregistrées sur le FTP, la qualité de celles-ci est réduite et on supprime leur métadonnées (EXIF). Ainsi, la commande proposée pour renommer les fichiers selon leur date dans la section "Bonnes pratiques" de la page Photogrammétrie ne peut pas fonctionner avec ces images vu qu'elles ne possèdent pas de métadonnées. Le script get_opc.sh utilise donc le nom des fichiers (voir section Sauvegarde des images) pour déterminer la date à laquelle ils ont été créés pour ensuite créer un dossier pour placer les images. À titre d'exemple, le chemin vers les images prises le 15 février 2021 serait : /archive/BICWIN/2021/20210215/OPC/ftp. Après avoir mis les images du FTP dans le dossier correspondant à la date de prise de vue, le script get_opc.sh exécute la commande ffmpeg présentée plus haut afin de créer une vidéo 4K à partir des photos. Par contre, le nombre d'images par seconde est mis à 10 vu le petit nombre de photos et le nom du fichier prend la forme suivante: yyyymmdd_ftp.MP4.

Réglages

La documentation complète du système de prise de vue NanoPro Time Lapse est disponible en version électronique ici.

Plusieurs programmes sont sauvegardés sur le système. Ils peuvent être charger rapidement pour répondre aux différentes situations qui peuvent se présenter. Ci-dessous sont présentés les programmes enregistrés sur le bureau du système :

  • Programme général
Description Début Fin intervalle (min)
coupure de nuit 21h40 12h22 -1
prise de vue 2 min 12h26 21h38 2
informations système 12h53 20h54 60
prise de vue ftp 12h55 20h56 60
envoi image ftp 12h57 20h58 60
rafale 10 images* 13h07 21h10 60

* Les mouillages dans la baie du Ha!Ha!, composés par un AWAC et 3 capteurs de pression sont réglés comme suit :

  • l’AWAC enregistre pendant 17 minutes à chaque heure, en commençant à la deuxième minute de l’heure (XXh02 --» XXh20 )
  • les capteurs de pression RBR enregistrent pendant 8 minutes à chaque heure, en commençant à la cinquième minute de l’heure (XXh05 --» XXh14)

Afin d’avoir des images lors de ces enregistrements, une prise de vue en rafale (snap 1/2s, 10 images) peut être déclenchée à la septième minute de chaque heure (XXh07).

  • Programme tempête
Description Début Fin intervalle (min)
coupure de nuit 21h32 12h24 -1
informations système 12h25 21h30 60
prise de vue ftp 12h25 21h30 60
envoi image ftp 12h27 21h28 60
coupure tempête* 12h30 21h30 10

* Dans cette configuration, le système se met en marche entre 12h24 et 21h32. Le système reste allumé 10 minutes pour chaque heure entre 12h30 et 21h30. Le système est donc accessible à toutes les heures du jour entre la 30ème et la 40ème minute.

Accès à distance

Connexion à LogMeIn :

Identifiant : paulnicot@gmail.com

Mot de passe : rikicam2

Code d’accès de la caméra UQAR-061014R : toaptoap

Traitements des images

Le traitement des images pour la géorectification utilise principalement le module Matlab g_rect développé par Daniel Bourgault et al. Les informations concernant son utilisation sont disponibles ici. Les images prises par l’observatoire sont conservées en archive sur Mingan dans le répertoire suivant:

/share/archives/dumoda01/data/photogrammetry/opc

On y trouve un répertoire bin/ qui contient plusieurs outils de pré/post-traitements pour les images de l’OPC. Pour la géorectification des images, le traitement suit plusieurs étapes :

Correction de la distorsion

L’objectif Canon EF 17-40mm f/4 utilisé est généralement utilisé avec le plus grand angle de vue (17mm soit 92°) et présente une assez grande distorsion des images. Le logiciel ImageMagick permet de compenser la distorsion associée à chaque objectif. Les coefficients de distorsion sont disponible via la base de données lensfun pour un très grand nombre d’objectifs. Pour corriger la distorsion, utiliser la commande suivante :

 convert INFILE -distort barrel "A B C D" OUTFILE 

où A, B et C dépendent de la focale utilisée et D correspond à un facteur d’échelle de l’image (généralement 1). Les valeurs de A, B et C sont les suivantes:

<model>Canon EF 17-40mm f/4L USM</model>
       <mount>Canon EF</mount>
       <cropfactor>1.0</cropfactor>
       <calibration>
           <distortion model="ptlens" focal="17" a="0.020104" b="-0.047886" c="0" />
           <distortion model="ptlens" focal="19" a="0.016917" b="-0.039854" c="0" />
           <distortion model="ptlens" focal="20" a="0.015352" b="-0.035125" c="0" />
           <distortion model="ptlens" focal="22" a="0.01352" b="-0.027379" c="0" />
           <distortion model="ptlens" focal="24" a="0.012744" b="-0.024334" c="0" />
           <distortion model="ptlens" focal="26" a="0.012023" b="-0.02158" c="0" />
           <distortion model="ptlens" focal="28" a="0.008491" b="-0.013858" c="0" />
           <distortion model="ptlens" focal="32" a="0.007181" b="-0.008983" c="0" />
           <distortion model="ptlens" focal="35" a="0.006829" b="-0.007622" c="0" />
           <distortion model="ptlens" focal="37" a="0.006676" b="-0.007544" c="0" />
           <distortion model="ptlens" focal="40" a="0.00464" b="-0.003826" c="0" />
       </calibration>

Stabilisation des images

Cette étape n’est pas nécessaire si les images sont très stable entre le début et la fin de la période d’intérêt. Toutefois, il peut arriver que le système bouge entre des prises de vues, en particulier en période de fort vent. Il est alors nécessaire de stabiliser les images pour que la géorectification puisse être appliquée à l’ensemble des images sans modifier la grille. Pour cela, le paquet g_rect contient des outils qui permettent d’aligner la série d’images. Il faut commencer par choisir les régions d'intérêts (roi) dans l’image de référence choisie, qui sont immobiles au sein de la scène en lançant la fonction :

 g_roi(ref_img.jpg) 

Le script crée alors un fichier roi.mat. Ce fichier doit être copié dans le répertoire qui contient les images à stabiliser. La stabilisation peut alors être réalisée en utilisant la fonction :

 g_stabilise(img_ref_fname) 

La fonction crée un nouveau répertoire appelé “stable” où les images stabilisées sont enregistrées. Un suffixe ‘_stable’ est ajouté au nom de fichier de celles-ci tandis que les images originales sont conservées intactes.

Création de la grille de géorectification

La géorectification nécessite la création d’une grille de la taille des images utilisées (matrice de pixels). Dans cette grille, une position géographique est attribué à chaque pixel de l’image afin de pouvoir projeter l’image sur un plan. Pour ce faire, il faut créer un fichier de paramètres contenant les informations concernant l’image utilisée, la position de la caméra, les approximations d’angles de prises de vue ainsi que la positions de points de référence connus sur l’image. Un exemple de fichier de paramètres est disponible en annexe.

IMPORTANT : pour la géorectification sur un plan UTM, il faut utiliser le fichier en mode laboratoire avec “Field = false” en utilisant des coordonnées métriques.

Pour lancer la routine de création de la grille, taper :

 g_rect 

La script va itérer sur les valeurs des paramètres dans l’intervalle de mesure donné jusqu’à tomber sur les valeurs ayant la moins d’écart entre les points de référence géographique et la position théorique des pixels associé (RSM).

Si la grille réalisée présente une correspondance des points de référence élevée (RSM très grand), il est possible la paramérisation soit incorrecte. Il est nécessaire alors d'ajuster les valeurs dans le fichier de paramètres pour améliorer la projection. Notez que les points de références lointains vont énormément contribuer à l'augmentation du RSM, puisque l'erreur est d'autant plus grande que le point est éloigné.

Une fois la grille de géoréférencement satisfaisante (RMS faible), Placez la matrice .mat et le fichier texte associé (.dat) dans le répertoire Calib/ de l'année traitée.

Exemple de fichier de paramètres de géorectification (opc_georect.dat):

% I/O information
imgFname      =  '20170221_2219.jpg';
firstImgFname =  '20170221_2219.jpg';
lastImgFname  =  '20170221_2219.jpg';
outputFname   =  'opc_rect_20170221_UTM.mat';

% Field or lab case situation.
% Set field = true for field situation and field = false for lab situation.
field = false;

% Camera position
% lat/lon for field situation
% meter for lab situation
LON0 = 512256;
LAT0 = 5352944;                   

% Offset from center of the principal point (generally zero)
ic = 0;
jc = 0;

% Parameters
hfov =      91.0;     % Field of view of the camera
lambda =    10;       % Dip angle above vertical (e.g. straight down = 90, horizontal = 0)  
phi =       5.0;      % Tilt angle (generally close to 0).
H =         340;      % Camera altitude
theta =     -40;     % View angle clockwise from North (e.g. straight East = 90)

% Uncertainty in parameters. Set the uncertainty to 0.0 for fixed parameters.
dhfov =     10.0;
dlambda =   10.0;
dphi =      8;
dH =        20.0;
dtheta =    22;

% Order of the polynomial correction (0, 1 or 2)
polyOrder = 0;

% To save memory calculation can be done in single precision.
% For higher precision set the variable 'precision' to 'double';
precision = 'double';

% Ground Control Points (GCP).
% The data must come right after the gcpData = true
gcpData = true;
2445 1634  508110.1 5359241.0
2803 1605  507819.3 5362306.1
3972 1652  512304.4 5362263.8
4454 1965  512533.1 5355353.7
4162 2483  512416.8 5354021.1
 357 2382  511067.6 5353375.1
 437 2791  511474.5 5353241.0


Ci-dessous quelques points de repères utiles pour la création de la grille :

lieu position UTM 19N (x / y) position degré déc. (N / E)
Pointe Ouest Ile du Bic 508170 / 5359243 48.38630 / -68.88965
Pointe Sud-Est Grande Anse 511607 / 5361383 48.40550 / -68.84317
Pointe Est Ile du Bic 512056 / 5362275 48.41351 / -68.83707
Pointe Ouest Ile Bicquette 507810 / 5362289 48.41371 / 68.89445
Fourche à Louison Nord 512542 / 5355374 48.35142 / -68.83072
Fourche à Louison Sud 512605 / 5355276 48.35054 / -68.82987
Pointe Est Ilet au Flacon 511059 / 5353368 48.33340 / -68.85078

Géorectification des images

differentes zones de georectification et résolution maximale atteinte

Pour la géorectification d’une série d’images, la routine matlab r_interp_opc.m (ou r_interp_opc_UTM.m) permet le traitement d’un lot d’images. Le fichier de calibration doit être dans le répertoire de calibration Calib/ de l'année traitée. Il est possible de Il faut spécifier la date à traiter, la zone de géorectification et la résolution désirée (en mètre). Un README.txt est créé à la fin du traitement avec les coordonnées des limites de la géorectification, le nom du fichier de calibration, etc. Le script fonctionne selon l’interpolation de la valeur des pixels de l’image sur la grille projeté du plan. Cette grille est définie par la résolution choisie lors du traitement. La fonction Matlab triscatteredinterp.m se base sur la triangulation de delaunay pour interpoler les valeurs de pixels sur les cellules de la grille.

Informations complémentaires

Position de l’OPC :

  • lat/lon : 48.329562N -68.834642E
  • lat/lon : 48° 19.774'N -68° 50.078'E
  • UTM : 19U 512256m E 5352944m N
  • MTM : 6 205849m E 5355398m N


Position de l'AWAC :

  • lat/lon : 48.34650N -68.85183E
  • lat/lon : 48° 20.790'N 68° 51.110'W
  • UTM : 19U 510979m E 5354824m N
  • MTM : 6 204608m E 5357304m N

Contacts

Mise en place, réglages, utilisation :

  • Paul Nicot, auxiliaire de recherche UQAR-ISMER (paul_nicot@uqar.ca)
  • Dany Dumont, professeur-chercheur (dany_dumont@uqar.ca)

Parc du Bic :

  • Mélanie Sabourin, responsable conservation/éducation (418-732-8303, sabourin.melanie@sepaq.com)
  • Daniel Vézina, patrouilleur (418-725-8216)

Erdman video system :

  • Nicholas Malinguaggio (nick@video-monitoring.com)
  • Carlos Lorenzo (carlos@video-monitoring.com)