PNMフォーマット
読み:ピーエンエム-フォーマット
外語:PNM format: Portable Any Map format

 主に、netpbmと呼ばれるツールキットで使用されている、シンプルな画像フォーマット。画像ファイルとしても使用される。
目次

概要
 PBM/PGM/PPMと呼ばれる三種類のフォーマットがあり、PNMはその総称である。
 また、これにPAMを加えたものを「Netpbmフォーマット」という。

特徴

由来
 元々は、Jef Poskanzerにより電子メールでも送れる汎用性の高い白黒二値の画像フォーマットとして発案された。画素の白と黒を文字0と1で表現するというもので、文字集合すらも問わない汎用性の高さを特徴とした。これがPBMと呼ばれるビットマップ形式である。
 その後、グレイスケールのPGM、カラー画像を扱えるPPMが追加されたが、いずれも文字で表わすという汎用性の高さが堅持された。
 さらに、文字ではなくバイナリで情報を扱うものもPBM/PGM/PPMそれぞれで作られ、計6種類のデータ形式が存在している。
 Windowsで使われるBMPに似たコンセプトだが、BMPのように複雑でないため、映像機器の映像処理中間形式などニッチな用途としても使われている。

仕様
 いくつかの情報を含むが、各グループごとに改行文字で区切られ、グループ内の情報は空白文字で区切られる。空白の数は任意であるため、処理系は考慮する必要がある。
 最初の2文字がマジックナンバーで、ファイルの種類を表わす。P1/P2/P3/P4/P5/P6があり、その後改行する。
 次の情報は画像の画素数で、一つ目が横、二つ目が縦。10進数の文字列として記載し、各々を空白で区切る。その後改行する。
 PGMとPPMの場合、さらにピクセル値の最大値を10進数の文字列として記載し、その後改行する。この行はPBMでは存在しない。ビット深度は各々8ビットまで対応する。つまり、この行の値の最大値は255である。
 この後は全てデータである。文字方式(P1/P2/P3)は、一行終わるごとに改行する。バイナリ方式(P4/P5/P6)の場合は、データ中に改行文字など余計なものを混ぜない。
 データは、PBMとPGMは1画素について一つだが、PPMはRGBの各要素があるため1画素につき数値が3つ存在する。常にRGBの順となる。
 データの前では、必要に応じてコメント行を挿入することが可能で、行頭を#ではじめ、改行文字までの1行をコメントとする。

種類
 文字方式もバイナリ方式も、ヘッダーに相当する最初の情報は、全て文字で表わされる。
 PNMと呼ばれる一連のフォーマットはP1からP6までであり、P7以降は含まれない。P7のPAMはNetpbmが対応するフォーマットの一つである。

16ビット拡張
 標準では、ビット深度は8ビットまでである。
 これ以上への拡張の場合、文字方式(P1/P2/P3)では大きな問題は生じないが、バイナリ方式(P4/P5/P6)の場合にはエンディアンネスの問題が発生し、交換性を阻害する。
 実装のNetpbmでは、16ビット拡張はビッグエンディアン(ネットワークバイトオーダー)で対応している。

再検索