dwww Home | Manual pages | Find package

PFM Format Description(5)     File Formats Manual     PFM Format Description(5)

NAME
       PFM - PFM graphic image file format

DESCRIPTION
       This  document describes the PFM graphic image file format as understood
       by the Netpbm converters pamtopfm(1) and pfmtopam(1).

       There are multiple similar formats known as PFM in the  world,  none  of
       them  authoritatively documented.  The format described here is one that
       Bryan Henderson deduced from a program he  found  somewhere  that  dealt
       with a "PFM" format.  This format appears to be the one Gimp calls PFM.

       Another important PFM is used by Adobe Photoshop and appears to be iden-
       tical  to  this  except  that rows are ordered from top to bottom in the
       Adobe version.  If you interchange images between systems that use these
       two formats, it will work except that your  image  gets  flipped  upside
       down.  You can compensate for that with pamflip -topbottom.

       The  PFM format is inspired by the Netpbm formats, and you will see lots
       of similarity.  It is not, however, an official Netpbm format.  Its goal
       is not consistent with those of Netpbm formats.

The format
       A PFM image is a stream of bytes.  The stream consists of a header  fol-
       lowed  immediately  by a raster.  These two components are described be-
       low.  There are no delimiters before or after the sections as described.

   PFM header
       The PFM header is 3 consecutive "lines" of ASCII text.  After each  line
       is a white space character.  That character is typically a newline char-
       acter, hence the term "line," but doesn't have to be.

       pamtopfm uses a newline in the PFM it generates.

       Identifier Line

       The identifier line contains the characters "PF" or "Pf".  PF means it's
       a color PFM.  Pf means it's a grayscale PFM.

       Dimensions Line

       The dimensions line contains two positive decimal integers, separated by
       a blank.  The first is the width of the image; the second is the height.
       Both are in pixels.

       Scale Factor / Endianness

       The  Scale Factor / Endianness line is a queer line that jams endianness
       information into an otherwise sane description of  a  scale.   The  line
       consists  of  a  nonzero decimal number, not necessarily an integer.  If
       the number is negative, that means the  PFM  raster  is  little  endian.
       Otherwise,  it  is  big endian.  The absolute value of the number is the
       scale factor for the image.

       The scale factor tells the units of the samples in the raster.  You  use
       somehow  it  along  with  some separately understood unit information to
       turn a sample value into something meaningful, such as watts per  square
       meter.

   PFM raster
       The  raster  is  a sequence of pixels, packed one after another, with no
       delimiters of any kind.  They are grouped by row,  with  the  pixels  in
       each row ordered left to right and the rows ordered bottom to top.

        Note:  This  is the opposite of Netpbm formats, which order rows top to
       bottom.  It is also the opposite of the  format  Adobe  Photoshop  calls
       PFM.  See the introduction for more information on this disparity.

       Each pixel consists of 1 or 3 samples, packed one after another, with no
       delimiters  of any kind.  1 sample for a grayscale PFM and 3 for a color
       PFM (see the Identifier Line of the PFM header).

       Each sample consists of 4 consecutive bytes.  The bytes represent  a  32
       bit  string, in either big endian or little endian format, as determined
       by the Scale Factor / Endianness line of the PFM header.  That string is
       an IEEE 32 bit floating point number code.  Since that's the same format
       that most CPUs and compiler use, you can usually just make a program use
       the bytes directly as a floating point number, after taking care of  the
       endianness variation.

DOCUMENT SOURCE
       This  manual  page  was generated by the Netpbm tool 'makeman' from HTML
       source.  The master documentation is at

              http://netpbm.sourceforge.net/doc/pfm.html

netpbm documentation            27 February 2024      PFM Format Description(5)

Generated by dwww version 1.16 on Tue Dec 16 05:54:49 CET 2025.