E57 le " PDF des nuages de points " un fichier ouvert qui contient des millions de points 3D mesurés, leurs couleurs et les photos panoramiques qui les accompagnent.
Base de connaissances · formats de fichiers

E57, expliqué : le " PDF des nuages de points "

Imaginez photographier une pièce — mais au lieu d'une image plate, vous capturez la position exacte d'un million de minuscules points couvrant chaque mur, chaise et tasse de café. Faites tourner un laser assez vite et mesurez la distance de tout, et vous obtenez cela : un nuage de points, une " photographie " 3D faite de points mesurés. Voici une visite simple et sans jargon de ce qui se trouve réellement dans un fichier E57 — et d'une astuce ingénieuse que notre propre logiciel en tire.

Pourquoi un format spécial, au juste ?

Une photo normale n'est qu'une grille de pixels colorés — simple. Un scan 3D est plus complexe. Pour chacun de ses millions de points, vous voulez enregistrer il se trouve dans l'espace (trois nombres : X, Y, Z), quelle couleur il a, avec quelle intensité le laser a rebondi (son intensité — imaginez une " photo laser " en noir et blanc) et souvent les photos panoramiques prises par le scanner en même temps.

Imaginez maintenant qu'une personne scanne avec un Faro, qu'un collègue utilise un Leica et que le client ouvre le résultat dans un logiciel Autodesk. Trois machines, trois programmes — et tous doivent pouvoir lire le même fichier, des années plus tard, sans supplier un fournisseur pour un décodeur secret. C'est le problème que résout E57. C'est un standard ouvert et neutre vis-à-vis des fournisseurs (publié sous le nom ASTM E2807 et basé sur la bibliothèque open source libE57). On l'appelle le " PDF des nuages de points " : un fichier portable que tout le monde sait lire.

L'idée clé : une carte texte avec de la puissance binaire

Au fond, un fichier E57 est un hybride de deux choses très différentes assemblées : un petit bloc de XML — du texte simple, lisible par l'humain, qui sert de table des matières — et de grands blocs de données binaires contenant les millions de nombres bruts, stockés de façon compacte pour la vitesse.

Anatomie d'un fichier E57 un fichier = un petit en-tête + de gros blocs binaires + une " table des matières " textuelle à la fin En-tête 48 octets Données de points (binaires) des millions de X, Y, Z + couleur Images (binaires) panoramas JPEG / PNG intégrés Section XML " carte " lisible de l'ensemble début du fichier fin du fichier l'en-tête enregistre exactement où commence la carte XML (xmlPhysicalOffset) Le logiciel ouvre d'abord l'en-tête de 48 octets — il indique " la carte est à l'octet N ". Il saute à la carte XML, lit son contenu, puis va directement au bloc binaire dont il a besoin. Pas besoin de lire des gigaoctets pour trouver un scan — la carte rend l'accès instantané.
Un fichier E57 se lit de l'arrière vers l'avant : un en-tête de 48 octets pointe vers la " carte " XML à la fin, qui indique à son tour où se trouve chaque bloc binaire.

Pourquoi mettre la carte à la fin ? Parce que pendant qu'un scanner est en train d'écrire le fichier, il ne sait pas encore quelle taille fera chaque élément ; il diffuse donc d'abord les données brutes, puis écrit un résumé propre une fois terminé. L'avantage est énorme : pour extraire un scan d'un fichier de 20 gigaoctets, le logiciel lit le petit en-tête, saute à la carte XML, trouve la ligne qui dit " le scan #3 se trouve à l'octet 4 812 000 000 ", et y va directement.

Filet de sécurité discret : tout le fichier est découpé en " pages " de 1024 octets, et chaque page réserve ses 4 derniers octets à une somme de contrôle — une empreinte qui permet au logiciel de détecter si le fichier a été corrompu.

Tout dépend d'une seule racine

Ouvrez cette carte XML et vous trouverez un arbre — exactement comme les dossiers de votre ordinateur. Il y a un seul root, et deux branches font l'essentiel du travail : data3D, une liste numérotée de scans, et images2D, une liste numérotée de photos (généralement les panoramas à 360° pris par le scanner).

L'arbre E57 : tout dépend d'une seule racine la section XML est un arbre de dossiers — ouvrez la racine et descendez jusqu'à n'importe quel scan ou photo root data3D une liste de scans [ scan 0, scan 1, ... ] métadonnées qui / quand système de coordonnées images2D une liste de photos [ pano 0, pano 1, ... ] scan 0 points + pose scan 1 … points prototype X Y Z · R G B · intensity pose = où se trouvait le scanner position (x,y,z) + rotation (quaternion) chaque photo porte aussi sa propre pose, afin que la visionneuse sache où la placer
Chaque scan et chaque photo possède sa propre pose — la position du scanner plus sa direction de visée (stockée sous forme de quaternion) — ce qui permet à plusieurs scans de s'assembler en un modèle aligné.

Deux façons d'écrire un point

Un scanner laser ne pense pas vraiment en X, Y, Z. Il reste à un endroit et tourne, et pour chaque point il connaît trois choses : la portée (la distance parcourue par le faisceau), l'azimut (l'angle autour, gauche-droite) et l'élévation (la hauteur, vers le haut ou le bas). Ce sont des coordonnées sphériques — la langue maternelle du scanner. La plupart des logiciels préfèrent toutefois les X, Y, Z cartésiens. E57 stocke volontiers l'un ou l'autre, et passer de l'un à l'autre relève d'une petite trigonométrie rapide.

Deux façons d'écrire un point un scanner pense en angles & distance — E57 peut stocker les points dans les deux sens Sphérique — comment le capteur voit scanner le point portée (distance) azimut (gauche-droite) + élévation (haut-bas) portée · azimut · élévation naturel pour un scanner laser rotatif cartésien — comme le veut le logiciel Z X Y le point X · Y · Z coordonnées de grille simples que tout le monde comprend rapide trigonométrie
Les points se trouvent dans un tableau compact qu'E57 appelle un CompressedVector : le XML définit les colonnes une seule fois (X, Y, Z, couleur, intensité...), puis le bloc binaire contient ligne après ligne des valeurs serrées.

Trois types de photo intégrée

Les photos dans images2D ne sont pas des liens vers des fichiers dans un dossier — le vrai JPEG ou PNG est rangé directement dans le E57. Et il existe plus d'un type de photo intégrée. E57 enveloppe chacune dans une " représentation " qui indique au logiciel à quel point il peut faire confiance à l'image sur le plan géométrique. La différence se résume à une seule question : dans quelle mesure la caméra est-elle décrite complètement ?

Trois façons dont E57 contient une photo même fichier, trois " représentations " — elles diffèrent par le degré de description de la caméra sphericalRepresentation un panorama complet de 360° × 180° enveloppé sur une sphère Mesurable ✓ chaque pixel = une direction connue direction depuis le scanner le " regardez autour d'ici " panorama que produisent la plupart des scanners pinholeRepresentation objectif photo plate Mesurable ✓ une photo ordinaire avec objectif, entièrement calibrée la longueur focale + la taille du capteur permettent au logiciel de connaître l'angle de chaque pixel visualReferenceRepresentation juste une image Pas pour mesurer ✗ aucun modèle de caméra - uniquement pour l'œil humain " voilà à quoi ressemblait l'endroit " — une miniature, une photo du site
Petit plus bien pensé : une seule entrée d'image peut contenir à la fois un raster précis (sténopé ou sphérique) et une version de référence visuelle simple — ainsi la visionneuse affiche l'image conviviale tout en gardant celle qui est mesurable pour les calculs.
  • sphericalRepresentation — un panorama complet de 360° × 180°, l'image étirée familière équirectangulaire 2:1. Comme la projection est connue, chaque pixel correspond à une direction exacte, donc il s'aligne parfaitement avec le nuage. C'est la voie principale de notre pipeline : nous le lisons, remettons la toile au propre en 2:1, puis l'envoyons à la visionneuse de panorama.
  • pinholeRepresentation — une photo prise avec un objectif ordinaire, décrite par le modèle classique de caméra sténopéique (distance focale, taille du capteur, centre optique). Cela suffit pour que le logiciel connaisse aussi la direction de chaque pixel, mais sur un champ de vision plus étroit. En pratique, c'est surtout ainsi que fonctionne Leica : il écrit un cubemap prêt à l'emploi — les six faces planes du cube tournées vers l'extérieur — directement dans le E57, et notre parcours des faces du cube les assemble exactement en un panorama complet. C'est l'un des cas les plus simples à reconvertir en une image 360° propre.
  • visualReferenceRepresentation — une photo sans aucun modèle de caméra, explicitement " pour l'œil humain seulement ". On ne peut ni mesurer avec elle ni la projeter sur le nuage ; ce n'est qu'une image de référence. Notre importateur les conserve comme commentaires joints plutôt que de les placer en 3D.

Voici le piège. sphericalRepresentation est le choix le plus courant, mais il est étonnamment facile de se tromper subtilement — c'est précisément pourquoi le même scan peut s'afficher différemment d'un programme à l'autre.

  • Les zones aveugles sont rognées. Chaque scanner a une zone qu'il ne peut pas voir — classiquement juste vers le bas, là où se trouve son propre trépied. Certains exportateurs rognent simplement le panorama à cet endroit, laissant un trou ou une hauteur non standard.
  • Pixels rectangulaires. Un panorama propre a des pixels carrés (pixelWidth = pixelHeight) ; certains fichiers ne les ont pas, donc l'image paraît étirée jusqu'à ce qu'elle soit redimensionnée.
  • La mauvaise direction est “forward”. La rotation enregistrée avec un panorama indique quelle direction se trouve au centre de l'image, et il n'existe aucun accord universel sur ce que signifie même “forward” — certains exportateurs l'orientent vers le nord, d'autres vers l'est. Une petite erreur ici fait tourner toute la vue.
  • Les outils d'édition peuvent perdre des données. Le fait de faire un aller-retour d'un E57 via CloudCompare, par exemple, peut supprimer la position de capture des images pinholeRepresentation — les photos survivent, mais elles ne savent plus où elles ont été prises.

En résumé : sur le terrain, des logiciels différents affichent souvent le même E57 différemment. Notre importateur essaie d'atténuer les particularités courantes — remettre les pixels rectangulaires au carré, corriger l'orientation du panorama et standardiser la toile 2:1 — afin qu'une visite s'affiche correctement, quel que soit l'outil qui a écrit le fichier.

Quand le panorama est intégré au nuage lui-même

Voici l'une des idées les plus élégantes — et les moins appréciées — de tout le format. En plus des panoramas stockés comme des images séparées, un panorama peut aussi se cacher à l'intérieur du nuage de points lui-même. Un scanner laser ne tire pas au hasard — il balaie une grille ordonnée d'angles, ligne par ligne, colonne par colonne, comme un vieux téléviseur qui dessine un écran. E57 peut conserver cet ordre : chaque point reçoit un rowIndex et un columnIndex indiquant de quelle cellule de la grille il provient. Un scan stocké de cette façon est dit structuré.

Quand le panorama est intégré au nuage un scan " structuré " stocke ses points sur une grille — le nuage est donc déjà une image le scan, tel qu'il est stocké : lignes × colonnes colonne → azimut (0° ... 360° autour) ligne → élévation (haut ... bas) ciel : le laser n'a rien touché points fictifs de remplacement (portée = 0 / " aucun retour ") lire la grille dans l'ordre = pixels → panorama 2:1 instantané, sans reprojection largeur de la grille (columnMaximum + 1) = largeur du panorama Parce que chaque point se souvient de son rowIndex et de son columnIndex, l'image et la géométrie 3D sont le même objet. Les points fictifs du ciel sont le prix à payer pour garder la grille parfaitement rectangulaire — un vrai logiciel sait les ignorer.
Dans un scan structuré, le nuage et le panorama sont le même objet — l'image n'est pas une photo séparée, mais la disposition même des points.

L'avantage : si les points sont disposés sur une grille, le nuage est déjà une image. Lisez-le ligne par ligne et chaque point tombe sur un pixel — le panorama réapparaît sans aucune reprojection astucieuse. Le fichier enregistre même la taille de la grille dans ses indexBounds (columnMaximum, rowMaximum), de sorte que le logiciel connaît la résolution à l'avance — notre synthétiseur prend la largeur de sortie directement à partir de columnMaximum + 1.

Mais une grille doit former un rectangle parfait, et le monde réel ne l'est pas. Que faire des directions où le faisceau est parti vers le ciel ouvert et où rien n'est revenu ? La réponse est pragmatique : remplir ces cellules avec des points fictifs — très souvent avec une portée exactement égale à 0, ce qui signifie " faisceau envoyé, rien touché ". Ils gardent le rectangle intact, mais ce ne sont pas de la vraie géométrie, donc un lecteur attentif doit les écarter. Le nôtre signale chaque point à portée nulle, le place à une distance fictive très lointaine pour que les calculs de la grille continuent de fonctionner, et ne traite jamais ces points fantômes du ciel comme de vraies surfaces lorsqu'il construit la carte de profondeur ou exporte le nuage.

Transformer un scan en une photo dans laquelle on peut entrer

Tous les scans n'arrivent pas sur une grille toute prête — certains ne sont qu'un ensemble lâche et non structuré de points. La bonne nouvelle : le panorama est quand même récupérable, et c'est là que le format rejoint notre propre travail. Car un scan est en réalité " une sphère complète de points mesurés comme des angles autour d'un seul point ", que l'on peut dérouler en un panorama plat.

D'un nuage de points à une photo dans laquelle on peut regarder autour de soi l'astuce derrière ce projet : dérouler la sphère de points en un panorama plat 1 · le scan vous entoure chaque point a un angle depuis le centre dérouler 2 · les angles deviennent une grille plate haut ↕ bas ← 360° complets de gauche à droite → combler les vides 3 · trois images panorama couleur intensité (N/B) carte de profondeur Le nuage de points est le panorama — mesuré en angles, il se déroule en une image plate 2:1. La couleur peint les pixels, l'intensité du laser donne une vue en niveaux de gris nette, et la distance devient une carte de profondeur.
Un nuage, trois images : la couleur peint les pixels, l'intensité du laser fournit un niveau de gris net et sans ombres, et la distance devient une carte de profondeur — c'est ce qui rend un panorama plat mesurable et parcourable.

Note l'angle de chaque point, laisse gauche-droite parcourir la largeur de l'image et haut-bas sa hauteur, et chaque point tombe sur un pixel — le familier panorama équirectangulaire 2:1 étiré. La carte de profondeur est l'ingrédient magique : avec une distance derrière chaque pixel, un panorama qui semble plat devient mesurable et parcourable — cliquez deux points sur un mur et le logiciel connaît la distance réelle, parce qu'il n'a jamais oublié les données 3D en dessous.

Alors, pourquoi E57 est-il important ?

Parce qu'il s'agit du terrain de rencontre neutre. Un géomètre scanne un pont avec une marque de matériel, un ingénieur l'ouvre dans un autre logiciel, et un architecte l'archive pour les vingt prochaines années — et E57 est le seul fichier sur lequel les trois peuvent compter, sans qu'aucun fournisseur ne détienne les clés. Il conserve la couleur, l'intensité, la géométrie, les panoramas et les positions du capteur, si importantes, au même endroit, sous la forme d'un standard ouvert que chacun peut implémenter.

Dernière anecdote amusante : l'heure de capture dans un E57 est comptée en temps GPS — en secondes depuis le 6 janvier 1980, le moment où les horloges des satellites GPS ont été mises en marche — et non depuis l'époque informatique habituelle de 1970. Se tromper là-dessus fait lire un scan pris aujourd'hui comme s'il avait eu lieu en 2013.

Envie d'aller plus loin ?

  • libE57.org — la bibliothèque open source de référence et le point d'ancrage du format.
  • ASTM E2807 — la norme officielle.
  • libE57Format · Image2D — définitions exactes des représentations sphérique, sténopéique et de référence visuelle.
  • Paul Bourke’s E57 notes — une analyse technique concise de l'en-tête et de la structure.
Assistant IA
Bonjour ! N'hésitez pas à poser vos questions sur les visites virtuelles, les nuages de points, le 3D Gaussian Splatting, les modèles 3D, l'utilisation du site, les paiements, et plus encore. Je trouverai la réponse ou transmettrai votre question à notre équipe de support.
Notre IA n'a pas pu répondre à votre question. Notre équipe d'assistance se fera un plaisir de répondre à votre question. Veuillez fournir votre adresse e-mail. Nous n'utilisons pas l'e-mail pour les newsletters. Il sert uniquement à répondre à votre question.