Qu’est-ce qu’un fichier PFM ?

Un fichier Portable FloatMap stocke des échantillons matriciels en niveaux de gris ou RVB sous forme de valeurs à virgule flottante. Ces échantillons peuvent représenter des valeurs en dehors de la plage d’entiers couramment utilisée pour les images destinées à l’affichage.

Fonctionnement des fichiers PFM

PFM place un en-tête texte de trois lignes devant une matrice non compressée d’échantillons à virgule flottante IEEE 754 sur 32 bits : un identifiant qui distingue les images à un canal de celles à trois canaux, la largeur et la hauteur, puis un nombre signé qui indique l’ordre des octets. Le format ne dispose d’aucune spécification faisant autorité. La documentation de Netpbm indique que plusieurs formats similaires portent ce nom et qu’elle en décrit un déduit de logiciels existants ; la page de Paul Debevec décrit la même structure. Dans une chaîne de traitement multimédia, PFM sert généralement de représentation de travail ou d’échange entre des étapes de traitement numérique, plutôt que de ressource finale destinée au web ou à l’impression.

Points clés

  1. Identifiez un fichier PFM à sa première ligne : PF indique trois échantillons par pixel (RVB) et Pf un seul (niveaux de gris). La deuxième ligne contient la largeur et la hauteur, la troisième un nombre signé, et la matrice de pixels suit immédiatement. Chaque échantillon est un nombre à virgule flottante IEEE 754 sur 4 octets, sans compression : la matrice occupe donc largeur × hauteur × 4 octets en niveaux de gris, et trois fois plus en couleur. L’en-tête ne comporte aucun autre champ, et la description de Debevec n’autorise aucun commentaire : l’espace colorimétrique et les unités doivent donc être convenus en dehors du fichier.
  2. Le signe de la troisième valeur de l’en-tête définit l’ordre des octets des échantillons : négatif signifie petit-boutiste, positif signifie gros-boutiste. Netpbm interprète également la valeur absolue comme un facteur d’échelle, à combiner avec des informations d’unité définies séparément, tandis que la description de Debevec n’utilise ce nombre que pour l’ordre des octets. Un lecteur qui suppose l’ordre natif des octets de la machine produit des données incohérentes pour les fichiers écrits dans l’autre ordre, et un lecteur qui ignore la valeur absolue peut mal évaluer l’intensité absolue si le logiciel d’écriture s’appuyait sur elle.
  3. Les lignes vont de bas en haut dans les descriptions de Debevec et de Netpbm, à l’inverse des formats PGM et PPM de Netpbm. Netpbm précise que la variante appelée PFM par Adobe Photoshop ordonne les lignes de haut en bas : les fichiers échangés entre les deux conventions apparaissent donc retournés verticalement sans qu’aucune erreur soit signalée. FFmpeg lisait et écrivait les fichiers PFM avec une inversion verticale jusqu’à un correctif fin 2022. Vérifiez l’orientation avec une image de test asymétrique chaque fois qu’un nouvel outil rejoint la chaîne de traitement.

Quand les fichiers PFM sont utiles

Choisissez PFM pour les données intermédiaires de vision par ordinateur, de profondeur, scientifiques ou à grande plage dynamique lorsque la précision en virgule flottante est importante. Une prise en charge limitée par les applications et la gestion de l’ordre des octets peuvent compliquer les échanges.

Comment Transloadit vous aide avec les fichiers PFM

Le tableau des formats d’image de Transloadit, qui couvre ses Robots basés sur ImageMagick tels que /image/resize, répertorie PFM comme un format que ces Robots peuvent lire et écrire.

Le tableau indique uniquement la prise en charge des formats en lecture et en écriture. Il ne précise pas comment l’ordre des lignes, la valeur d’échelle ou les échantillons à virgule flottante hors de la plage affichable sont traités lors d’une conversion vers un format à valeurs entières tel que PNG ou JPEG. Faites donc passer un fichier représentatif dans votre Assembly et vérifiez l’orientation et la luminosité.

Explorer les possibilités de Transloadit en matière de formats de fichiers et de compression

Références

Transformer vos connaissances sur les médias en une chaîne de traitement opérationnelle

Reliez les téléversements, le traitement, l’IA, le stockage et la diffusion via une seule API déclarative — la pile d’encodage, la montée en charge et l’évolution constante des formats sont prises en charge pour vous.

Essayer Transloadit gratuitement