Métadonnées EXIF

Métadonnées EXIF — Le standard pour les données d’inspection embarquées dans l’image

Définition et le standard EXIF

EXIF, acronyme de Exchangeable Image File Format, est le standard mondial de métadonnées pour intégrer des informations descriptives, techniques et géospatiales directement dans les fichiers d’image numérique. Développé à l’origine par la Japan Electronics and Information Technology Industries Association (JEITA) en 1995, le standard est maintenant maintenu conjointement par la JEITA et la Camera and Imaging Products Association (CIPA) sous la désignation CIPA DC-008. La version actuelle est EXIF 2.32 (publiée en 2019), EXIF 2.31 (2016) étant la base la plus largement implémentée. La spécification est publiée sous la référence CIPA DC-008-Translation-2019 et est disponible gratuitement sur le site web des normes CIPA.

Les données EXIF sont stockées dans les fichiers image en utilisant la structure de métadonnées TIFF (Tagged Image File Format), même lorsque l’image elle-même est compressée en JPEG. Dans un fichier JPEG, EXIF occupe le segment marqueur APP1 (dont le premier octet est 0xFFE1), positionné immédiatement après le marqueur SOI (Start of Image) et avant les données de compression JPEG. Dans les fichiers TIFF et DNG (Digital Negative), les données EXIF résident dans des répertoires IFD (Image File Directories) dédiés. Cette conception structurelle signifie que les métadonnées EXIF peuvent être lues sans décompresser les données de l’image — une fonctionnalité essentielle pour le traitement par lots efficace de grands ensembles d’images d’inspection qui peuvent se compter par milliers par levé.

Le standard définit plusieurs groupes IFD qui organisent les métadonnées par fonction : IFD0 (propriétés principales de l’image — dimensions, orientation, compression, logiciel, date/heure, Marque, Modèle), IFD1 (propriétés de la vignette), ExifIFD (paramètres de prise de vue — exposition, ouverture, ISO, focale, flash, balance des blancs, mode scène), GPS IFD (données de géolocalisation — latitude, longitude, altitude, horodatage, cap, vitesse), et Interoperability IFD (espace colorimétrique et règles d’interopérabilité). Chaque IFD peut contenir des centaines de définitions de tags individuels, chacune avec un identifiant hexadécimal unique, un type de données (BYTE, ASCII, SHORT, LONG, RATIONAL, etc.), un compteur, et la valeur ou le décalage vers la valeur.

Drone capturant des images d'inspection au-dessus d'une piste aéroportuaire avec caméra montée sur nacelle stabilisatrice pour des photos de levé avec tags EXIF

Pour l’inspection d’infrastructures et le levé par drone, EXIF est le vecteur principal pour transporter les métadonnées géospatiales et techniques du point de capture jusqu’au pipeline de traitement. Chaque image drone — qu’elle provienne d’un DJI Phantom, Mavic, Matrice, Autel EVO, Skydio X10, ou d’une charge utile caméra personnalisée — intègre des données EXIF qui enregistrent exactement où, quand, comment et à quelle altitude chaque photographie a été prise. Ces données sont le fondement du géoréférencement photo, de la reconstruction photogrammétrique, de la génération d’orthomosaïque et de l’analyse automatisée d’inspection tels qu’implémentés dans des plateformes comme TarmacView.

Le standard EXIF est l’un des trois schémas de métadonnées dominants en imagerie numérique, aux côtés d’IPTC (International Press Telecommunications Council — axé sur les métadonnées descriptives et de droits d’auteur pour la presse et l’édition) et de XMP (Extensible Metadata Platform — un cadre basé sur XML pour intégrer des espaces de noms de métadonnées personnalisés). EXIF est unique par sa précision et sa structure pour les données techniques de l’appareil photo et du GPS, tandis que XMP étend les capacités d’EXIF avec des tags spécifiques au fabricant — une distinction essentielle pour les workflows de photogrammétrie drone.

Tags GPS dans EXIF — Latitude, Longitude, Altitude et Horodatage

Le GPS IFD (Image File Directory) est sans doute la section la plus importante d’EXIF pour les applications d’inspection d’infrastructures. Identifié par le tag 0x8825 dans IFD0, le GPS IFD contient un ensemble structuré de sous-tags qui encodent la position géographique, l’altitude, le cap, la vitesse et l’horodatage de la capture de l’image. Le standard CIPA DC-008 définit ces tags dans la Section 9 (Tags GPS) avec des règles d’encodage rigoureuses qui garantissent l’interopérabilité entre appareils et plateformes logicielles.

GPSLatitude (tag 0x0002) et GPSLongitude (tag 0x0004) sont stockés sous forme de trois valeurs RATIONAL représentant les degrés, minutes et secondes — chacune encodée comme une paire numérateur/dénominateur 32 bits. Par exemple, la latitude 25° 45’ 30,5" N est stockée comme [25/1, 45/1, 305/10], ou sous forme rationnelle [25,000000, 45,000000, 30,500000]. Les tags compagnons GPSLatitudeRef (0x0001) et GPSLongitudeRef (0x0003) sont des caractères ASCII simples — « N » ou « S » et « E » ou « W » respectivement — spécifiant l’hémisphère. Le tag GPSMapDatum (0x0012) enregistre le système de référence géodésique ; pour pratiquement tous les drones grand public et prosumer, il s’agit de « WGS-84 » (World Geodetic System 1984).

GPSAltitude (tag 0x0006) est stocké comme une seule valeur RATIONAL représentant les mètres au-dessus ou en dessous de l’ellipsoïde WGS84. GPSAltitudeRef (0x0005) est une seule valeur BYTE — 0 pour au-dessus du niveau de la mer, 1 pour en dessous du niveau de la mer. La distinction critique que beaucoup d’utilisateurs mécomprennent est que l’altitude GPS n’est pas l’élévation au-dessus du niveau moyen de la mer (MSL) et n’est pas la hauteur au-dessus du niveau du sol (AGL). L’altitude GPS est la hauteur au-dessus de l’ellipsoïde de référence mathématique (WGS84), qui peut différer du niveau moyen local de la mer de 20 à 100 mètres selon la séparation géoïdale (aussi appelée ondulation du géoïde) à l’emplacement de capture. Par exemple, à Denver, Colorado (États-Unis), l’ellipsoïde WGS84 est environ 16 mètres en dessous du géoïde local (NAVD88), donc une lecture d’altitude GPS de 1 600 m correspond à une élévation MSL d’environ 1 584 m. Cette distinction est documentée dans les exigences de l’Annexe 14 de l’OACI pour le levé d’élévation des aérodromes et dans l’ISO 19111 pour les définitions de systèmes de référence par coordonnées.

Tag GPS EXIFID du tag (Hex)Type de donnéesDescription
GPSLatitudeRef0x0001ASCII(2)« N » ou « S » — hémisphère nord ou sud
GPSLatitude0x0002RATIONAL(3)Degrés, minutes, secondes comme valeurs rationnelles
GPSLongitudeRef0x0003ASCII(2)« E » ou « W » — hémisphère est ou ouest
GPSLongitude0x0004RATIONAL(3)Degrés, minutes, secondes comme valeurs rationnelles
GPSAltitudeRef0x0005BYTE0 = au-dessus du niveau de la mer, 1 = en dessous du niveau de la mer
GPSAltitude0x0006RATIONALHauteur en mètres au-dessus de l’ellipsoïde de référence WGS84
GPSTimeStamp0x0007RATIONAL(3)Heure UTC (heures, minutes, secondes) du fix GPS
GPSDateStamp0x001DASCII(11)Chaîne de date UTC : « YYYY:MM:DD »
GPSSpeedRef0x000CASCII(2)« K » pour km/h, « M » pour mph, « N » pour nœuds
GPSSpeed0x000DRATIONALVitesse au-dessus du sol dans l’unité spécifiée par GPSSpeedRef
GPSTrackRef0x000EASCII(2)« T » pour le nord vrai, « M » pour le nord magnétique
GPSTrack0x000FRATIONALDirection de déplacement en degrés dans le sens horaire depuis le nord
GPSImgDirectionRef0x0010ASCII(2)« T » ou « M » pour la référence de direction de l’image
GPSImgDirection0x0011RATIONALDirection pointée par l’appareil en degrés
GPSMapDatum0x0012ASCIIDatum géodésique — typiquement « WGS-84 »
GPSHPositioningError0x001FRATIONALDilution horizontale de la précision (HDOP) en mètres

GPSTimeStamp (0x0007) stocke l’heure UTC du fix GPS sous forme de trois valeurs RATIONAL (heures, minutes, secondes), tandis que GPSDateStamp (0x001D) stocke la date UTC sous forme d’une chaîne ASCII de 11 caractères au format « YYYY:MM:DD ». Ensemble, ils fournissent l’horodatage GPS — distinct du tag EXIF DateTimeOriginal (0x9003 dans ExifIFD), qui enregistre l’heure de l’horloge interne de l’appareil photo lorsque l’obturateur a été actionné. L’horodatage GPS provient des horloges atomiques des satellites et est bien plus fiable pour l’ordonnancement temporel précis des images d’inspection, en particulier lors de levés traversant les fuseaux horaires ou les transitions d’heure d’été.

Le tag GPSTrack (0x000F) enregistre la direction de déplacement au moment de la capture, mesurée en degrés dans le sens horaire depuis le nord vrai (ou le nord magnétique comme indiqué par GPSTrackRef). Le tag GPSImgDirection (0x0011) enregistre la direction pointée par l’appareil photo — ce qui est crucial pour l’inspection par drone où la nacelle stabilisatrice peut être orientée indépendamment du cap de l’aéronef. Pour les drones DJI effectuant des missions de cartographie nadir standard, GPSImgDirection est généralement égal au cap de l’aéronef, mais pour l’inspection oblique de piles de ponts, de façades de bâtiments ou de bordures de pistes, la direction de lacet de la nacelle fournit l’angle de visée de la caméra essentiel pour l’estimation d’orientation photogrammétrique.

GPSHPositioningError (0x001F) — ajouté dans EXIF 2.31 — signale l’erreur de positionnement horizontal estimée en mètres. Pour les drones équipés RTK, cette valeur peut être de 0,02-0,05 (2-5 cm), tandis que pour les récepteurs GPS/GLONASS standard, elle varie de 1,0 à 5,0 mètres. Ce tag permet un filtrage automatisé de la qualité lors de la sélection d’images pour le traitement photogrammétrique — les images dont GPSHPositioningError dépasse un seuil configurable peuvent être signalées ou exclues pour maintenir la précision de la reconstruction.

Tags d’orientation de la caméra — Roulis, Tangage, Lacet et l’Énigme de l’orientation EXIF

Le tag d’orientation EXIF (tag 0x0112, situé dans IFD0) est l’un des champs EXIF les plus fréquemment mal interprétés. Il stocke un seul entier SHORT (1 à 8) décrivant la rotation et le miroir des données de pixels de l’image par rapport aux axes de coordonnées naturels du capteur de l’appareil. Les huit valeurs définies dans le standard EXIF sont : 1 = normale (rotation 0°), 2 = miroir horizontal (retourné gauche-droite), 3 = rotation 180°, 4 = miroir vertical (retourné haut-bas), 5 = miroir horizontal et rotation 270° dans le sens horaire, 6 = rotation 90° dans le sens horaire, 7 = miroir horizontal et rotation 90° dans le sens horaire, 8 = rotation 270° dans le sens horaire. Ce tag permet aux appareils photo et smartphones d’indiquer comment l’image doit être affichée pour une visualisation correcte, sans faire pivoter physiquement les données de pixels — une optimisation de performance significative.

Pour l’imagerie d’inspection par drone, le tag d’orientation est presque toujours 1 (normale), car les caméras drones sont montées sur des nacelles stabilisatrices qui maintiennent le capteur dans une orientation fixe par rapport à l’horizon. Cependant, l’orientation de la caméra qui importe pour l’analyse géospatiale — les angles de roulis, tangage et lacet de l’axe optique de la caméra — n’est PAS stockée dans l’IFD EXIF standard. Ces données sont plutôt écrites par les fabricants de drones dans des espaces de noms XMP propriétaires qui étendent la structure EXIF.

Les drones DJI écrivent l’orientation de la caméra dans l’espace de noms XMP http://www.dji.com/drone-dji/1.0/ avec les tags GimbalPitchDegree, GimbalRollDegree et GimbalYawDegree. Ceux-ci représentent l’orientation de la nacelle par rapport à un système de coordonnées de niveau local : le tangage est positif lorsque la caméra s’incline vers le haut depuis le nadir (90° = horizon avant, -90° = horizon arrière), le roulis est la rotation autour de l’axe avant (positif = côté droit vers le bas), et le lacet est le cap compas de la caméra (0° = nord, positif dans le sens horaire). Pour les missions de cartographie nadir, le tangage de la nacelle est typiquement de -90° (directement vers le bas), le roulis de la nacelle est de 0°, et le lacet de la nacelle est égal au cap de l’aéronef.

DJI écrit également FlightPitchDegree, FlightRollDegree et FlightYawDegree — l’attitude du fuselage de l’aéronef lui-même, qui diffère de l’orientation de la nacelle lorsque celle-ci compense activement les mouvements de l’aéronef. Lors d’une mission de cartographie standard, le contrôleur de vol maintient la nacelle à l’angle commandé tandis que l’aéronef peut pencher vers l’avant pendant le vol en translation (typiquement 2-8° à des vitesses de cartographie de 5-15 m/s). Les logiciels de photogrammétrie tels que Pix4Dmapper, Agisoft Metashape et OpenDroneMap utilisent l’orientation de la nacelle (et non l’attitude de vol) comme estimation initiale de l’orientation de la caméra pour l’ajustement de faisceau, car la nacelle représente l’axe optique réel de la caméra.

Les drones Autel stockent l’orientation différemment. L’espace de noms XMP pour la télémétrie Autel inclut les tags <Camera:Pitch> et <Camera:Yaw>, mais le roulis n’est généralement pas enregistré. Les valeurs d’orientation d’Autel utilisent une convention de signe différente de DJI — un tangage positif signifie que la caméra est inclinée vers le bas (vers le nadir), ce qui est la convention opposée à DJI. Cette différence de convention de signe est une source connue d’erreurs de configuration lors du traitement d’ensembles de données drones de fabricants mixtes.

Les drones Skydio, en particulier la série X10, intègrent l’orientation de la caméra dans l’espace de noms XMP avec des tags CameraOrientation qui suivent la convention photogrammétrique (Omega, Phi, Kappa ou Lacet, Tangage, Roulis selon la version du firmware). Les métadonnées Skydio incluent également les paramètres intrinsèques de calibration de la caméra (focale, point principal, coefficients de distorsion de l’objectif) directement dans le fichier image — essentiel pour le traitement photogrammétrique sans étape de calibration séparée.

Pour les logiciels photogrammétriques qui n’ont pas de prise en charge native des tags XMP spécifiques aux fabricants, l’orientation initiale de la caméra est généralement estimée à partir de la seule trace GPS — en comparant les positions d’images séquentielles pour dériver la direction de déplacement et en supposant que la caméra est pointée vers le nadir (directement vers le bas). Cette hypothèse fonctionne correctement pour les missions de cartographie en grille standard mais échoue pour les vols d’inspection oblique où la caméra est intentionnellement pointée à 15-45° de la verticale. Dans ces cas, l’orientation de la nacelle provenant du XMP fournit la seule estimation initiale fiable, et son absence peut provoquer des échecs d’alignement photogrammétrique.

La convention de rotation omega, phi, kappa (ω, φ, κ) couramment utilisée en photogrammétrie diffère de la convention lacet, tangage, roulis utilisée en aviation et dans les métadonnées drones. Omega (ω) est la rotation autour de l’axe X (équivalent au roulis), phi (φ) est la rotation autour de l’axe Y (tangage), et kappa (κ) est la rotation autour de l’axe Z (lacet). La conversion entre les deux conventions nécessite une gestion minutieuse des signes et un mappage des axes de coordonnées — une tâche que les logiciels de photogrammétrie gèrent en interne mais que les ingénieurs devraient comprendre lors de la validation des métadonnées d’orientation de la caméra.

Outils d’extraction EXIF — exiftool, Python PIL, piexif et exifread

ExifTool — Le standard de l’industrie

ExifTool, créé et maintenu par Phil Harvey, est l’outil le plus complet et le plus utilisé pour lire, écrire et éditer les métadonnées EXIF sur tous les systèmes d’exploitation (Windows, macOS, Linux). Écrit en Perl et distribué sous forme d’exécutable autonome, ExifTool prend en charge plus de 11 000 noms de tags à travers EXIF, IPTC, XMP, ICC Profile et des centaines d’espaces de noms MakerNote spécifiques aux fabricants. L’outil est gratuit et open source sous la licence publique générale GNU (GPL) version 1 ou la licence artistique.

La structure de commande fondamentale pour lire les métadonnées est :

exiftool -NOMDUTAG -NOMDUTAG nomfichier

Pour extraire les coordonnées GPS d’une seule image drone au format décimal :

exiftool -GPSLatitude -GPSLongitude -GPSAltitude -n DJI_0042.JPG

Le drapeau -n affiche les valeurs numériques en degrés décimaux, mètres et secondes plutôt que les chaînes formatées degrés-minutes-secondes par défaut — essentiel pour une consommation programmatique. Sans -n, la latitude GPS s’affiche comme « 25 deg 45’ 30,50" » qui nécessite un analyse syntaxique.

Extraction par lots vers CSV pour un vol de levé complet :

exiftool -csv -GPSLatitude -GPSLongitude -GPSAltitude -GPSHPositioningError -DateTimeOriginal -RelativeAltitude -GimbalPitchDegree -GimbalYawDegree -n *.JPG > survey_metadata.csv

Cela produit un tableau structuré avec une ligne par image et des colonnes pour chaque tag demandé. Le drapeau -csv inclut une ligne d’en-tête, rendant la sortie directement importable dans les logiciels SIG, les tableurs ou les systèmes de bases de données.

Extraction de toute la télémétrie spécifique DJI :

exiftool -XMP-drone-dji:all DJI_0042.JPG

Cela filtre la sortie pour n’inclure que les tags dans l’espace de noms XMP DJI, montrant des champs comme AbsoluteAltitude, RelativeAltitude, GimbalPitchDegree, GimbalRollDegree, GimbalYawDegree, FlightPitchDegree, FlightYawDegree, FlightXSpeed, FlightYSpeed, FlightZSpeed, CalibratedFocalLength et CalibratedOpticalCenterX/Y.

Écrire des coordonnées GPS dans une image qui en est dépourvue :

exiftool -GPSLatitude=25.759167 -GPSLatitudeRef=N -GPSLongitude=-80.152778 -GPSLongitudeRef=W -GPSAltitude=12.5 -GPSAltitudeRef=0 image.jpg

C’est l’opération utilisée pour géoréférencer les images lorsque le GPS n’était pas disponible au moment de la capture — par exemple, lors de l’utilisation d’un fichier de trace GPX du contrôleur drone pour attribuer rétroactivement des positions à chaque photo sur la base d’horodatages synchronisés.

Terminal en ligne de commande ExifTool montrant la sortie d'extraction de métadonnées EXIF avec coordonnées GPS et données d'altitude

Python PIL (Pillow)

Le fork Pillow de la Python Imaging Library (PIL) fournit une capacité native de lecture EXIF via la méthode _getexif() de l’objet Image. Bien que le nom de la méthode soit marqué comme protégé (préfixe souligné), elle est largement utilisée et stable à travers les versions de Pillow 8.0 jusqu’à la version actuelle (10.x). La méthode retourne un dictionnaire faisant correspondre les ID numériques des tags EXIF à leurs valeurs :

from PIL import Image
from PIL.ExifTags import TAGS, GPSTAGS

img = Image.open('drone_photo.JPG')
exif_data = img._getexif()
if exif_data:
    for tag_id, value in exif_data.items():
        tag_name = TAGS.get(tag_id, tag_id)
        print(f"{tag_name}: {value}")

L’extraction des coordonnées GPS nécessite spécifiquement d’accéder au sous-IFD GPSInfo (ID de tag 34853, défini comme TAGS.get(34853) = « GPSInfo »), puis de traiter le sous-dictionnaire en utilisant GPSTAGS pour des noms de clés lisibles :

gps_info = exif_data.get(34853, {})
for k, v in gps_info.items():
    print(f"{GPSTAGS.get(k, k)}: {v}")

Pillow retourne les coordonnées GPS sous forme de tuples de valeurs rationnelles (numérateur, dénominateur), nécessitant une conversion en degrés décimaux pour une utilisation dans les applications de cartographie et de photogrammétrie. La formule de conversion : degrés_décimaux = degrés + minutes/60 + secondes/3600

Pillow fournit le module ExifTags avec des classes d’énumération (PIL.ExifTags.Base, PIL.ExifTags.GPS, PIL.ExifTags.IFD, etc.) qui offrent des constantes lisibles pour les ID de tags EXIF les plus couramment utilisés, réduisant le besoin de valeurs d’ID de tags codées en dur dans le code de production.

piexif

Piexif est une bibliothèque Python pure (aucune dépendance externe) spécialement conçue pour la lecture et l’écriture de métadonnées EXIF. Elle fournit une API plus propre que Pillow pour la manipulation EXIF et est particulièrement adaptée à l’écriture de tags GPS dans les images :

import piexif
from piexif import GPSIFD, TAGS

def to_deg(value):
    d, m, s = float(value[:2]), float(value[2:4]), float(value[4:])
    return [(d, 1), (m, 1), (int(s * 1000), 1000)]

# Lire EXIF
exif_dict = piexif.load('image.JPG')
gps = exif_dict.get('GPS', {})
lat = gps.get(GPSIFD.GPSLatitude)
lng = gps.get(GPSIFD.GPSLongitude)

# Écrire GPS dans l'image
exif_dict['GPS'][GPSIFD.GPSLatitude] = to_deg("2545.500")
exif_dict['GPS'][GPSIFD.GPSLatitudeRef] = 'N'
exif_bytes = piexif.dump(exif_dict)
piexif.insert(exif_bytes, 'image.JPG')

Piexif supporte également l’extraction de vignettes, la gestion des MakerNote et la suppression en masse des métadonnées (utile pour le traitement axé sur la confidentialité où les données GPS doivent être supprimées des images publiées).

exifread

Exifread (via le package PyPI exifread) est une bibliothèque Python spécialisée dans l’extraction EXIF avec prise en charge d’une gamme plus large de tags MakerNote spécifiques aux fabricants que Pillow. Contrairement au support limité des MakerNote de Pillow, exifread peut décoder les formats de métadonnées propriétaires Canon, Nikon, DJI et autres en champs structurés :

import exifread

with open('drone_photo.JPG', 'rb') as f:
    tags = exifread.process_file(f, details=True)
    for tag, value in tags.items():
        if 'GPS' in tag:
            print(f"{tag}: {value}")

Exifread retourne tous les tags (y compris GPS, EXIF, MakerNote et vignette) sous forme de dictionnaire plat avec des noms de clés entièrement qualifiés comme 'GPS GPSLatitude', 'EXIF DateTimeOriginal' et 'MakerNote Unknown'. Le paramètre details=True tente de décoder les données fabricant du MakerNote en champs structurés plutôt que de les laisser sous forme de tableaux d’octets bruts.

EXIF dans l’imagerie drone — DJI, Autel, Skydio, GoPro et Plateformes personnalisées

Drones DJI

DJI est le fabricant dominant sur le marché de l’inspection par drone, et son implémentation des métadonnées est la plus complète et la mieux documentée (bien que par rétro-ingénierie et effort communautaire plutôt que par publication officielle). DJI écrit les données EXIF ainsi qu’un ensemble étendu de tags d’espace de noms XMP sous l’URI http://www.dji.com/drone-dji/1.0/.

L’ensemble complet des tags XMP DJI dans le firmware actuel (à partir de 2022+ pour Mavic 3, Matrice 30/300/350, Phantom 4 RTK) inclut : GpsLatitude et GpsLongitude (degrés décimaux, huit décimales), AbsoluteAltitude (estimation MSL barométrique en mètres, virgule flottante), RelativeAltitude (hauteur au-dessus du point de décollage en mètres), GimbalPitchDegree, GimbalRollDegree, GimbalYawDegree (angles d’orientation de la nacelle), FlightPitchDegree, FlightRollDegree, FlightYawDegree (attitude de l’aéronef), FlightXSpeed, FlightYSpeed, FlightZSpeed (composantes de vitesse en m/s en coordonnées corps local), CalibratedFocalLength (en mm, tenant compte des variations de fabrication de l’objectif), CalibratedOpticalCenterX et CalibratedOpticalCenterY (décalage du point principal en pixels), LensDistortionParam (une série de coefficients de distorsion pour la correction de l’objectif en photogrammétrie), et SelfData (un bloc binaire sérialisé contenant des données de télémétrie supplémentaires — accéléromètre, gyroscope, magnétomètre et informations satellites).

Un problème critique spécifique à DJI est le phénomène de double enregistrement GPS. DJI écrit les coordonnées GPS dans les tags GPS EXIF standard ET dans l’espace de noms XMP drone-dji, mais les valeurs peuvent différer. Les tags GPS EXIF utilisent généralement la position rapportée par le récepteur GPS au moment de l’activation de l’obturateur. Les tags XMP GpsLatitude/GpsLongitude utilisent parfois une position lissée ou moyennée provenant du contrôleur de vol. Des différences de 0,5 à 2 mètres entre les deux sont courantes et constituent une source connue de confusion en photogrammétrie lorsque le logiciel utilise par défaut l’une ou l’autre source.

Pour les caméras thermiques DJI (Mavic 3T, Matrice 30T, Zenmuse H20T, Zenmuse XT2), les fichiers RJPEG (JPEG radiométrique) contiennent des données EXIF et XMP supplémentaires pour les paramètres thermiques — réglage d’émissivité, température réfléchie, température atmosphérique, distance de l’objet et humidité relative. Ces tags sont essentiels pour convertir les valeurs de pixels thermiques bruts en lectures de température calibrées et sont stockés dans le segment marqueur APP4 (pas APP1 où réside l’EXIF normal).

Drones Autel

Autel (propriété de Shenzhen Autel Intelligent Technology) utilise une structure de métadonnées différente. L’espace de noms XMP http://www.autel.com/autel/1.0/ contient des tags incluant GPSLatitude, GPSLongitude, Altitude (ASL — au-dessus du niveau de la mer), Pitch, Yaw et Roll (bien que le roulis soit enregistré de manière inconsistante selon les versions de firmware). L’altitude d’Autel est stockée par défaut comme ASL, ce qui signifie que la valeur représente l’élévation estimée au-dessus du niveau moyen de la mer plutôt que la hauteur au-dessus du niveau du sol. Pour les applications de cartographie, les utilisateurs doivent connaître l’élévation du sol au point de décollage pour dériver l’AGL.

Les images Autel manquent également des données étendues de calibration d’objectif que DJI fournit en XMP. Les tags CalibratedFocalLength, CalibratedOpticalCenter et LensDistortionParam sont absents, ce qui signifie que les logiciels de photogrammétrie doivent estimer les paramètres de calibration de la caméra pendant l’ajustement de faisceau — nécessitant davantage de points de contrôle au sol et potentiellement réduisant la précision pour les applications d’inspection de haute précision.

Drones Skydio

Skydio (acquis par Amazon en 2023) adopte une approche différente : les modèles X10 et les S2+ antérieurs privilégient les métadonnées de qualité levé. L’espace de noms XMP inclut les tags GPSXYAccuracy et GPSZAccuracy rapportant la précision horizontale et verticale estimée du fix GPS, permettant un contrôle qualité automatisé. Skydio expose également les données CameraIntrinsics incluant la focale (pixels), le point principal (cx, cy) et les paramètres de distorsion de l’objectif directement dans les métadonnées de l’image, réduisant le temps nécessaire à l’auto-calibration pendant le traitement photogrammétrique. Pour le modèle X10 RTK, les fichiers .MRK compagnons fournissent les observations GNSS en phase porteuse pour les corrections cinématiques post-traitement (PPK), contournant la précision limitée du GPS EXIF intégré.

GoPro et Plateformes caméra personnalisées

Les caméras GoPro sont fréquemment utilisées pour l’inspection à courte distance et l’inspection FPV de ponts. L’implémentation EXIF de GoPro est standard (métadonnées de la caméra plus GPS pour les modèles Hero), mais la précision GPS (typiquement 3-8 mètres) et la distorsion fisheye de l’objectif (sévère — la stabilisation HyperSmooth de GoPro recadre et déforme les images) rendent l’imagerie GoPro difficile pour la photogrammétrie sans calibration approfondie. GoPro stocke le GPS dans des tags EXIF standard uniquement (pas d’extensions XMP fabricant), limitant la télémétrie à la latitude, longitude, altitude et horodatage.

Les chargements utiles caméra personnalisés (Sony série α, Canon EOS combinés à des enregistreurs GNSS externes) reposent entièrement sur des tags EXIF standard pour les données GPS. Sans extensions XMP fabricant, le pipeline photogrammétrique doit estimer l’orientation de la caméra à partir de la seule mise en correspondance des caractéristiques d’image — réalisable pour de bonnes conditions de texture mais sujet à l’échec pour les surfaces à faible texture (enrobé neuf, béton uniforme) courantes dans l’inspection de chaussées.

Fiabilité et précision d’EXIF — Limitations et assurance qualité

La précision du GPS EXIF dépend du matériel du récepteur GNSS, de la disponibilité de la constellation satellite, des conditions atmosphériques et de l’environnement du signal au moment de la capture. Les drones grand public (séries DJI Mini, Mavic Air, Phantom 4 non-RTK) utilisent des récepteurs GPS/GLONASS monofréquence (L1) avec une précision horizontale de 2 à 5 mètres dans des conditions optimales et de 5 à 10 mètres ou plus dans les canyons urbains, près de structures réfléchissantes ou sous une couverture arborée dense. Cette précision est documentée par les spécifications DJI et confirmée par des tests indépendants publiés dans la littérature photogrammétrique.

Les drones équipés de RTK (Real-Time Kinematic) (DJI Phantom 4 RTK, Mavic 3 RTK, Matrice 350 RTK) atteignent une précision horizontale de 2 à 5 cm en recevant les corrections de phase porteuse d’une station de base via liaison radio (typiquement 900 MHz ou 4G LTE). Le tag GPSHPositioningError dans EXIF signale l’erreur horizontale estimée — pour les captures en mode RTK, cette valeur doit être inférieure à 0,05 m (5 cm). Les workflows PPK (Post-Processed Kinematic) collectent les observations GNSS brutes à bord et appliquent les corrections après le vol, atteignant une précision similaire sans nécessiter de liaison de données en temps réel.

La précision de l’altitude est significativement moins bonne que la précision horizontale pour tous les drones non-RTK. Le GPSAltitude EXIF se réfère à l’ellipsoïde WGS84, et la précision verticale du GPS autonome est typiquement 1,5 à 2 fois pire que la précision horizontale (3-15 mètres contre 2-5 mètres). L’altitude barométrique de DJI (AbsoluteAltitude dans XMP) est plus stable à court terme mais dérive avec les changements de pression météorologique. Des études comparant l’altitude barométrique à des points de contrôle au sol levés rapportent des erreurs absolues de 5 à 30 mètres selon les conditions atmosphériques le jour du levé.

Facteur de précisionGPS grand public (non-RTK)RTK/PPKVertical (non-RTK)Vertical (RTK/PPK)
Horizontal (RMS)2-5 m0,02-0,05 m3-15 m0,05-0,10 m
Tag EXIF typiqueGPSLatitude/LongitudeGPSLatitude/LongitudeGPSAltitudeGPSAltitude
GPSHPositioningError1,0-5,0 m0,02-0,05 mN/AN/A
Effet multitrajetsSignificatifCorrigé par RTKSignificatifModéré
Exemples de dronesMavic Air, Mini, Phantom 4P4 RTK, M3 RTK, M350Tous non-RTKP4 RTK, M350 RTK

L’usurpation GPS et les interférences de signal sont des préoccupations croissantes pour les opérations d’inspection par drone dans des environnements sensibles ou contestés. Les attaques par usurpation injectent de faux signaux GPS qui amènent le drone à enregistrer des coordonnées incorrectes dans les métadonnées EXIF sans que le pilote ne s’en rende compte. Des recherches de l’Université du Luxembourg et du programme de détection et d’atténuation des UAS de la FAA ont démontré que les tags GPS EXIF standard ne fournissent aucune authentification cryptographique — les coordonnées enregistrées sont celles que le récepteur calcule à partir des signaux satellites reçus. Pour les environnements aéroportuaires de haute sécurité, la vérification du GPS EXIF par rapport à des sources indépendantes (corrections de station de base, points de contrôle au sol) est essentielle.

La fiabilité des horodatages est généralement élevée car le temps GPS (enregistré dans GPSTimeStamp et GPSDateStamp) provient des horloges atomiques de la constellation satellite, précises à la nanoseconde près. Cependant, le tag EXIF DateTimeOriginal utilise l’horloge système interne du drone, qui peut dériver de 1 à 10 secondes par heure de vol, en particulier dans des conditions froides où les oscillateurs à quartz changent de fréquence. Pour les workflows d’inspection nécessitant une corrélation temporelle précise entre les images et les données de capteurs externes, l’horodatage GPS doit être préféré à l’horodatage de l’horloge de la caméra.

EXIF dans les workflows TarmacView Analyze et Survey

TarmacView ingère les métadonnées EXIF des images d’inspection par drone comme source de données principale pour géolocaliser les dégradations de chaussée, ordonner chronologiquement les photos d’inspection et initialiser la reconstruction photogrammétrique. Le pipeline de traitement lit le GPS IFD (tags 0x0001-0x001F) pour extraire la latitude, la longitude, l’altitude et l’horodatage GPS pour chaque image d’un levé d’inspection.

Le géoréférencement photo dans TarmacView mappe chaque image d’inspection à son emplacement de capture sur une carte interactive de chaussée. Les coordonnées géographiques provenant de GPSLatitude et GPSLongitude EXIF placent une icône photo à la position précise où se trouvait le drone lorsque l’obturateur s’est déclenché. Pour l’inspection de chaussée, cela permet aux inspecteurs de cliquer sur n’importe quel emplacement de l’orthomosaïque et de récupérer instantanément toutes les photos qui couvrent cette zone, filtrées par date, vol et type d’inspection.

Le calcul du GSD basé sur l’altitude utilise le GPSAltitude (ou RelativeAltitude du XMP DJI) combiné à la focale calibrée de la caméra et aux dimensions du capteur pour calculer la distance d’échantillonnage au sol — la dimension réelle représentée par chaque pixel. Le GSD est le paramètre critique pour la mesure précise de la largeur des fissures : un GSD de 1 mm/pixel permet la détection fiable de fissures de 0,3-3 mm de large, tandis qu’un GSD de 3 mm/pixel ne peut pas résoudre les fissures submillimétriques. TarmacView utilise l’altitude EXIF pour calculer le GSD par image et signale toute image où l’altitude a dépassé les tolérances prévues (indiquant une potentielle incohérence de GSD sur l’ensemble du levé).

L’ordonnancement temporel utilise l’EXIF DateTimeOriginal ou l’horodatage GPS pour séquencer les photos chronologiquement, permettant la reconstruction automatisée de la trajectoire de vol et la vérification de la couverture. Des lacunes dans la séquence d’horodatages indiquent des photos manquées (défaillance du déclencheur, erreur d’écriture de la carte) qui peuvent laisser des lacunes de couverture dans l’orthomosaïque.

Les données de calibration de la caméra provenant d’EXIF (FocalLength, FocalLengthIn35mmFilm, et les tags XMP fabricant incluant CalibratedFocalLength, CalibratedOpticalCenterX/Y, LensDistortionParam) initialisent le modèle de caméra photogrammétrique. Fournir des valeurs initiales précises pour la focale et le point principal réduit le temps de convergence de l’ajustement de faisceau et améliore la probabilité d’un alignement correct, en particulier pour les levés avec une texture limitée ou des conditions d’éclairage difficiles.

GPS EXIF pour le géoréférencement photo

Le géoréférencement photo est le processus d’attribution de coordonnées géographiques (latitude, longitude et optionnellement altitude) aux photographies numériques. Lorsqu’un appareil photo ou un drone dispose d’un récepteur GPS, les coordonnées sont automatiquement écrites dans le GPS IFD EXIF au moment de la capture. Pour les images dépourvues de données GPS, le géoréférencement peut être effectué a posteriori en faisant correspondre l’horodatage de l’image avec un fichier de trace GPS externe (GPX, NMEA ou format propriétaire).

Le workflow standard de géoréférencement pour l’imagerie d’inspection par drone se déroule comme suit :

Étape 1 — Acquisition de la trace GPS : Pendant le vol, le contrôleur drone ou un enregistreur GPS séparé enregistre la position et l’heure à 1-10 Hz. Les enregistreurs GPS autonomes (Garmin, Bad Elf, Dual) offrent une précision supérieure à celle de la plupart des récepteurs GPS drone et sont utilisés pour les workflows d’inspection de précision.

Étape 2 — Synchronisation des horodatages : Les horodatages des images (provenant d’EXIF DateTimeOriginal) doivent être synchronisés avec les horodatages de la trace GPS à une précision inférieure à la seconde. La dérive d’horloge entre l’horloge de la caméra et l’horloge GPS est corrigée en calculant le décalage entre l’horodatage GPS de la caméra (si disponible) et le DateTimeOriginal.

Étape 3 — Interpolation des coordonnées : Étant donné que les points de la trace GPS sont enregistrés à une fréquence plus élevée que les images (par exemple, GPS à 5 Hz contre déclencheur d’obturateur à 0,5 Hz), la position exacte de la caméra à chaque déclenchement est interpolée à partir des points de trace GPS les plus proches. L’interpolation linéaire entre le fix GPS immédiatement avant et après l’horodatage de l’image est standard, bien que l’interpolation par spline cubique capture mieux la trajectoire de vol courbe pendant les virages.

Étape 4 — Écriture EXIF : Les coordonnées interpolées, l’altitude et le cap sont écrits dans le GPS IFD EXIF du fichier image en utilisant ExifTool ou des bibliothèques programmatiques (piexif, Pillow). Le fichier original doit être conservé avec une copie de sauvegarde avant toute modification EXIF.

Les outils spécialisés pour le géoréférencement photo incluent GeoSetter (Windows, freeware, supporte l’écriture EXIF et XMP avec aperçu Google Earth), GPicSync (multiplateforme, basé sur Python), Geosetter par Friedemann Schmidt, et l’approche en ligne de commande exiftool avec des fichiers de modèle de format pour la conversion GPX vers EXIF. Pour le géoréférencement par lots dans les pipelines d’inspection, des scripts personnalisés utilisant les outils décrits dans la Section 4 offrent le plus de contrôle et de capacité d’intégration.

EXIF manquant ou corrompu — Causes, détection et remédiation

Les données EXIF peuvent être manquantes, tronquées ou corrompues par plusieurs mécanismes :

Conversion et réenregistrement de fichiers : De nombreux outils de traitement d’images (visualiseurs d’images, téléchargeurs web, outils de capture d’écran) enregistrent les images sans préserver les métadonnées EXIF. Les pires contrevenants sont les navigateurs web, les applications de messagerie (WhatsApp, Telegram compressent et suppriment les métadonnées) et les plateformes de médias sociaux. Passer un JPG drone par l’un de ces pipelines détruit les données GPS EXIF de manière permanente, sauf si une sauvegarde existe.

Transfert de fichiers incomplet : Les transferts de fichiers corrompus (USB interrompu, carte SD instable, pertes réseau pendant le téléchargement cloud) peuvent tronquer le segment APP1 JPEG où réside EXIF, résultant en un fichier image qui s’ouvre mais ne contient aucune métadonnée. La différence de taille entre le fichier original et le fichier transféré est le signe révélateur.

Environnements sans GPS : Lorsque le drone ne peut pas obtenir de fix GPS (à l’intérieur de tunnels, sous une canopée dense, entre de grands bâtiments, pendant le préchauffage avant vol), le GPS IFD EXIF peut être totalement absent ou rempli de coordonnées nulles ou de la dernière position connue (un comportement spécifique à DJI qui peut passer inaperçu si les images ne sont pas examinées manuellement).

Erreurs de carte SD et de système de fichiers : La corruption de la carte SD, l’éjection incorrecte et la perte d’alimentation pendant les opérations d’écriture peuvent entraîner des données EXIF partielles. Un symptôme courant est un DateTimeOriginal valide mais un GPS IFD absent — les métadonnées de la caméra ont été écrites avant que le fix GPS ne soit obtenu.

Les méthodes de détection incluent : la comparaison de la taille des fichiers (les JPG drone originaux font typiquement 3-15 Mo ; les versions sans EXIF sont 0,5-2 Mo plus petites), la vérification rapide avec un outil EXIF (exiftool -GPSLatitude -GPSLongitude -DateTimeOriginal *.JPG montrant des champs vides), et des scripts de contrôle qualité automatisés qui signalent les images manquant de données GPS lors de l’ingestion dans le pipeline.

La remédiation dépend des données de sauvegarde disponibles :

  • Fichier de trace GPX du contrôleur drone ou d’un enregistreur GPS séparé — la voie de récupération la plus courante. Synchroniser les horodatages et interpeler les coordonnées comme décrit dans la Section 8.
  • Fichiers SRT (sous-titres) des drones DJI contiennent le GPS et la télémétrie synchronisés dans le temps pour chaque photo et chaque image, stockés comme fichiers de pistes de sous-titres aux côtés des images sur la carte SD. Extraire avec exiftool -p gpx.fmt ou des scripts dédiés.
  • Analyseurs de journaux de vol (DatCon, scripts CsvView/Python pour les logs DJI) décodent le journal de vol chiffré (fichiers .txt ou .DAT) pour récupérer la télémétrie de vol complète incluant les événements de déclenchement de la caméra.
  • Saisie manuelle des coordonnées pour les petits projets d’inspection, via l’écriture directe avec ExifTool, avec des coordonnées mesurées à partir de points de référence au sol connus visibles dans l’image.
  • Estimation photogrammétrique — en l’absence de toute donnée GPS, le logiciel peut encore reconstruire les positions des images à partir de la seule mise en correspondance des caractéristiques, mais le modèle manque de géoréférencement absolu et doit être ancré en utilisant un minimum de 3 à 5 points de contrôle au sol.

EXIF vs Métadonnées sidecar — XMP, GPX et formats propriétaires

Le choix entre EXIF intégré et métadonnées sidecar externes a des implications significatives pour la gestion des données d’inspection.

L’EXIF intégré est stocké dans le fichier image lui-même (APP1 JPEG, IFD TIFF ou blocs de métadonnées DNG). L’avantage essentiel est l’autonomie — l’image et ses métadonnées forment un seul fichier qui ne peut pas être découplé. La copie, l’archivage ou le transfert de l’image inclut automatiquement sa géolocalisation, son horodatage, ses paramètres de caméra et sa télémétrie fabricant. L’inconvénient est qu’EXIF a une extensibilité limitée — le standard définit un ensemble fixe d’identifiants de tags et de types de valeurs, et les extensions fabricant (MakerNotes, espaces de noms XMP) occupent de l’espace dans le segment JPEG contraint (typiquement 64-128 Ko pour les données EXIF, bien que XMP puisse s’étendre au-delà du segment APP1).

XMP (Extensible Metadata Platform) est un cadre de métadonnées basé sur XML développé par Adobe et standardisé sous la référence ISO 16684-1:2012. XMP peut être intégré dans le fichier image (dans un paquet XMP du segment APP1, après les données EXIF) OU stocké comme fichier sidecar avec le même nom de fichier et une extension .xmp — par exemple, DJI_0042.JPG et DJI_0042.xmp. Les fichiers sidecar évitent de modifier le fichier image original (préservant l’intégrité de la signature numérique et empêchant les corruptions accidentelles pendant l’écriture), mais créent une dépendance de couplage — si le fichier sidecar est perdu, renommé ou séparé de l’image, les métadonnées sont perdues.

GPX (GPS Exchange Format) est un format sidecar basé sur XML pour les données de trace GPS uniquement. Les fichiers GPX stockent des waypoints, des traces et des routes avec des horodatages. Pour l’inspection, GPX est le format préféré pour les journaux de trace GPS car il est universellement supporté par les logiciels SIG, les outils de cartographie GPS et ExifTool. Le workflow est : effectuer la mission, enregistrer la trace GPX depuis le contrôleur ou l’enregistreur GPS, puis géoréférencer les images après le vol en faisant correspondre les horodatages.

Les formats sidecar propriétaires incluent : les fichiers SRT de DJI (GPS + sous-titres de télémétrie intégrés dans les fichiers vidéo ou stockés à côté des photos dans un dossier de sous-titres), les fichiers MRK (données de correction PPK Skydio), les fichiers LOG (journaux de vol au format chiffré DJI nécessitant des outils de déchiffrement tiers comme DatCon), et les formats spécifiques aux fabricants pour les fichiers de calibration de caméra thermique. Les organisations disposant d’archives d’inspection à long terme doivent planifier des procédures de gestion des fichiers sidecar qui assurent la synchronisation entre les images et leurs compagnons de métadonnées — un défi non trivial lorsque des milliers d’images sont transférées, copiées et traitées sur plusieurs systèmes.

FonctionnalitéEXIF intégréSidecar XMPTrace GPX
AutonomeOui — métadonnées dans le fichier imageNon — fichier séparé couplé à l’imageNon — trace séparée pour toutes les images
Limite de taille~64 Ko (EXIF dans APP1)Limite pratique ~1 MoVariable — 10-100 Ko par heure de vol
ExtensibilitéEnsemble de tags fixe ; MakerNotes fabricantEntièrement extensible via espaces de noms XMLSchéma GPS fixe uniquement
Difficulté d’écritureModérée — doit modifier les données binairesFacile — opérations sur fichiers XMLFacile — XML (GPX 1.1)
Facteur de risqueCorruption de fichier pendant l’écritureSéparation/perte du sidecarPrécision de synchronisation des horodatages
Adéquation pour l’inspectionSupport de métadonnées principalSauvegarde de télémétrie étendueArchive de traces GPS

La pratique recommandée pour les opérations d’inspection par drone est une approche hybride : (1) préserver les données EXIF originales dans chaque fichier image comme support de métadonnées principal, (2) maintenir une trace GPX de sauvegarde provenant du contrôleur de vol pour la récupération GPS, (3) archiver les fichiers SRT DJI ou la télémétrie fabricant équivalente aux côtés des images, et (4) pour l’archivage à long terme, générer un fichier de métadonnées consolidé (CSV, GeoJSON ou base de données) extrait de toutes les sources pour garantir la survie des métadonnées indépendamment de la compatibilité des formats de fichiers.

Références

  • Camera and Imaging Products Association. CIPA DC-008-Translation-2019 — Exchangeable Image File Format for Digital Still Cameras: Exif Version 2.32. 2019.
  • International Civil Aviation Organization. Annex 14 — Aerodromes, Volume I: Aerodrome Design and Operations. 8th Edition, 2018.
  • International Organization for Standardization. ISO 19111:2019 — Geographic Information — Referencing by Coordinates.
  • International Organization for Standardization. ISO 16684-1:2012 — Graphic Technology — Extensible Metadata Platform (XMP) — Part 1: Data Model, Serialization and Core Properties.
  • Harvey, P. ExifTool by Phil Harvey. https://exiftool.org/ , accessed November 2025.
  • Fast.io. How to Extract GPS, Altitude, and Flight Data from Drone Photos. https://fast.io/resources/drone-photo-metadata-extraction-gps-altitude-flight-data/ , 2024.
  • DJI. DJI P4 RTK / M3 RTK / M350 RTK User Manuals. 2023-2024.
  • Skydio. Skydio X10 Metadata Specification. 2024.
  • Pix4D. Understanding EXIF, XMP, and Geotagging for Drone Images. Pix4D Support Knowledge Base, 2024.
  • Agisoft. Metashape Professional Edition User Manual — Camera Calibration and Image Metadata Chapter. 2024.
  • Federal Aviation Administration. Advisory Circular 150/5370-17 — Airside Use of Unmanned Aircraft Systems (UAS). 2023.
  • ASTM International. ASTM D5340-19 — Standard Test Method for Airport Pavement Condition Index Surveys.
  • The OpenDroneMap Community. ODM Metadata Extraction and Image Georeferencing Documentation. 2024.

Questions Fréquemment Posées

Inspection de précision avec imagerie géoréférencée

TarmacView exploite les métadonnées EXIF des photos d'inspection par drone pour géolocaliser automatiquement les dégradations de chaussée, cartographier l'état des pistes et générer des orthomosaïques de qualité levé. Extrayez le maximum de valeur de votre imagerie d'inspection grâce au traitement automatisé des métadonnées.

En savoir plus

Coordonnées GPS

Coordonnées GPS

Une entrée de glossaire complète sur les coordonnées GPS, explorant la latitude, la longitude et l’altitude pour la topographie et l’aviation. Couvre les systèm...

9 min de lecture
Surveying Aviation +4
Système géodésique mondial 1984 (WGS 84)

Système géodésique mondial 1984 (WGS 84)

Le WGS 84 est la référence géodésique mondiale pour le GPS, la cartographie et les applications géospatiales, définissant la forme, l’orientation et la position...

7 min de lecture
Surveying Mapping +3