prev up inhalt next

PBM, PGM, PNM und PPM

Die Portable Bitmap Utilities (PBM, auch pbmplus oder netpbm) sind eine Sammlung freierhältlicher Programme, die von Jef Poskanzer gepflegt werden. Es handelt sich eigentlich um drei Programmpakete, die sich mit unterschiedlichen Bildarten und File-Formaten befassen:

Die Portable Anymap Utilities (PNM) arbeiten auf allen von den drei Programmpaketen erzeugten Bilddateien. Für PNM gibt es kein eigenes Dateiformat.

Die PBM-, PGM- und PPM-File-Formate sind so einfach wie möglich gehalten. Sie starten jeweils mit einem Header, dem die Bildinformation unmittelbar folgt. Der Header ist immer in ASCII geschrieben, wobei die einzelnen Einträge durch White Spaces getrennt werden. Die Bildinformation kann entweder im ASCII- oder Binärformat sein.

Es gibt jeweils zwei Header-Versionen, von denen eine für ASCII- und eine für binäre Bildinformationen benutzt wird.

PBM-Header

Ein PBM-Header besteht aus folgenden Einträgen, jeweils durch White Spaces getrennt:

Magic Value P1 für ASCII-, P4 für binäre Bildinformation
Image Width Breite des Bildes in Pixeln (ASCII-Dezimalwert)
Image Height Höhe des Bildes in Pixeln (ASCII-Dezimalwert)

PGM-Header

Ein PGM-Header besteht aus folgenden Einträgen, jeweils durch White Spaces getrennt:

Magic Value P2 für ASCII-, P5 für binäre Bildinformation
Image Width Breite des Bildes in Pixeln (ASCII-Dezimalwert)
Image Height Höhe des Bildes in Pixeln (ASCII-Dezimalwert)
Max Grey Maximaler Grauwert (ASCII-Dezimalwert)

PPM-Header

Ein PPM-Header besteht aus folgenden Einträgen, jeweils durch White Spaces getrennt:

Magic Value P3 für ASCII-, P6 für binäre Bildinformation
Image Width Breite des Bildes in Pixeln (ASCII-Dezimalwert)
Image Height Höhe des Bildes in Pixeln (ASCII-Dezimalwert)
Max Color Maximaler Farbwert (ASCII-Dezimalwert)

Bildinformation in ASCII

Nach dem Header folgt die Beschreibung der Breite $\times$ Höhe vielen Pixel, beginnend in der linken oberen Bildecke zeilenweise von links nach rechts.

Bei PPM besteht jedes Pixel aus drei ASCII-Dezimalwerten zwischen 0 und dem angegebenen maximalen Farbwert, die die Rot-, Grün- und Blauwerte des Pixels darstellen.

Bei PBM und PGM gibt es nur einen ASCII-Dezimalwert pro Pixel. Bei PBM ist der maximale Wert implizit 1; die Werte müssen nicht durch White Spaces getrennt werden.

Beispiel:

Das folgende Beispiel stellt ein $4 \times 4$-Pixmap im ASCII-Format dar:

     P3
     # feep.ppm
     4 4
     15
      0  0  0    0  0  0    0  0  0   15  0 15
      0  0  0    0 15  7    0  0  0    0  0  0
      0  0  0    0  0  0    0 15  7    0  0  0
     15  0 15    0  0  0    0  0  0    0  0  0
Wie zu sehen, können auch Kommentare in ein PNM-File eingefügt werden. Zeichen ab einem # bis zum Zeilenende werden ignoriert.

Binäre Bildinformation

Deutlich kleinere Dateien, die schneller gelesen und geschrieben werden können, werden mit Hilfe der binären Bilddarstellung erreicht.

Die Pixelwerte werden dabei wie folgt abgelegt:

Format Magic Value binäre Darstellung
PBM P4 acht Pixel pro Byte
PGM P5 ein Pixel pro Byte
PPM P6 drei Bytes pro Pixel

Beim binären Format ist nach dem Header nur noch ein einziger White Space (typischerweise Newline) erlaubt. Innerhalb der binären Bilddaten sind keine White Spaces erlaubt. Die Bitorder innerhalb der Bytes ist ``most significant bit first''.

Beachtenswert ist, daß für das Binärformat nur maximale Werte bis 255 benutzt werden können.

Konvertierungsroutinen

Für die Umwandlung vom bzw. in das PNM-Format steht eine ganze Reihe von Routinen zur Verfügung, z.B.:

anytopnm, asciitopgm, bmptoppm, giftopnm, pbmtopgm, pgmtopbm, pgmtoppm, ppmtopgm, pstopnm, rgb3toppm, tifftopnm, xbmtopbm, xwdtopnm, pbmtoascii, pbmtolps, pbmtopgm, pbmtoxbm, pgmtopbm, pgmtoppm, pnmtops, pnmtotiff, pnmtoxwd, ppmtobmp, ppmtogif, ppmtopgm, ppmtorgb3.


prev up inhalt next