「Ppm(ピーピーエム)」の意味や使い方 わかりやすく解説 Weblio辞書 (original) (raw)

Portable pixmap

拡張子 .ppm, .pgm, .pbm, .pnm
MIMEタイプ image/x-portable-pixmap, -graymap, -bitmap, -anymap
マジック ナンバー P1 - P6
開発者 Jef Poskanzer
種別 画像ファイルフォーマット

PNM (Portable Any Map 形式[1][2]、Netpbm形式) は簡素な2次元ラスター画像形式のひとつである。PNMは特定の1種類の画像フォーマットではなく、異なるカラーモードをサポートするための3種類の画像形式をまとめて呼ぶときに使われる総称である[3]。これらの形式は、それぞれ portable pixmap format (PPM 形式)、portable graymap format (PGM 形式)、portable bitmap format (PBM 形式) と呼ばれ、いずれも異なるプラットフォーム間でも高い互換性を保てる画像形式として開発されたものである。

開発の経緯

PBM形式はプレーンテキストとして電子メールで受送信でき、ASCII コードが廃れた後でも使える画像フォーマットを開発する目的で、1980年代にJef Poskanzerが考案した白黒二値のビットマップ画像のデータ形式である。

PBM形式の画像を扱うツールを開発するために、Pbmplusというライブラリが開発された。これはPBM提案者のJef Poskanzerによるもので、1988年にリリースされた。続いて彼はPGM形式およびPPM形式を提唱し、それを扱うために拡張したPbmplusをリリースした。Pbmplusは1991年12月10日までリリースが続いた。

1993年に、そのときにはすでに開発が止まっていたPbmplusの代替となるライブラリとしてNetpbmが開発された。これはPbmplusに世界各地から寄せられた修正案を適用し、まとめ直したものであった。現在、PBM、PGM、PPM形式画像を扱うライブラリとして最も多く利用されているのはNetpbmであろうと考えられている[4]

データ形式

各形式は、色をどう表現するかという点で異なっている。

どの形式でも最初の2バイト (テキスト形式) がマジックナンバーとなっており、ファイル形式 (PBM、PGM、PPMのどれか) と、データがテキストかバイナリかを表している。その2バイトの最初は大文字の P で、その後に続く1つの数字が種類を表す。

File Descriptor Type Encoding
P1 Portable bitmap ASCII
P2 Portable graymap ASCII
P3 Portable pixmap ASCII
P4 Portable bitmap Binary
P5 Portable graymap Binary
P6 Portable pixmap Binary

テキスト形式のデータは、テキストエディタなどで見るのも、他の形式に変換するのも容易である (そういう作業を行うプラットフォームで ASCII コードが正しく扱えるのであれば)。バイナリ形式ではファイルサイズが節約でき、ファイル中に空白文字がないため簡便な方法でファイルを解析できる。また、どちらの形式でも圧縮は行なわない。

バイナリ形式のとき、1ピクセルはPBM形式では1ビットで、PGM形式では8ビット (明度最大値が256未満の場合) または16ビットで、PPM形式では8ビット×3 (明度最大値が256未満の場合) または16ビット×3で表される。PPM形式では、赤(R)、緑(G)、青(B)のそれぞれが8ビットまたは16ビットで表される。不透明度 (アルファチャンネル) やクロマキーはサポートされない。ラスター行に関して、PBMは8ビット (1バイト) 境界を持ち、幅が8の倍数でない場合、最後の8ビットにはパディングのための不要なビットが含まれる。PGMおよびPPMは8ビット境界を持ち、他の多くの画像形式で必要とされる32ビット (4バイト) 境界のパディングは必要ない。

PBM の例

以下にPBM形式の簡単な例を示す。

P1

This is an example bitmap of the letter "J"

6 10 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

最初の "P1" という文字列で、これがPBM形式であることが示されている。番号記号 (シャープ記号) は、その行がコメント行であることを示す。その下の2つの数値はそれぞれ画像の横幅と高さを示す。その後にピクセルの値 (PBMは白黒画像なので、0 か 1 のどちらかだけ) が続く。各ピクセルデータを表す数字 (0/1) の間には、空白があってもなくてもかまわない。通例1は黒を、0は白を表す。

以下に、このデータが表す画像を示す。

以下に、この画像を20倍に拡大したものを示す。

PGM の例

PGMとPPMの各形式では、テキスト形式でもバイナリ形式でも、画像中に現れるピクセルの明度の最大値(ホワイトポイント)を、画像のサイズの後に示す必要がある。

P2

Shows the word "FEEP" (example from Netpbm man page on PGM)

24 7 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 0 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 15 0 0 3 3 3 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 15 15 15 15 0 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 0 0 0 3 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

このデータが示す画像 (を25倍に拡大したもの) は以下のようになる:

PPM の例

P3

The P3 means colors are in ASCII, then 3 columns and 2 rows, then 255 for max color, then RGB triplets

3 2 255 255 0 0 0 255 0 0 0 255 255 255 0 255 255 255 0 0 0

上のデータが示す画像 (を64倍に拡大したもの):

P6 (バイナリ形式) では、各ピクセルのR、G、Bの各成分が、この順番でそれぞれ1バイトで表される (したがって各ピクセルが3バイトで表される)。ファイルサイズはテキスト形式の1/2~1/4程度に小さくなるが、データを直接見ても分かりにくい。

PBM/PGM/PPM形式はデータの圧縮を行なわないため、圧縮を行なう形式の画像と比べるとファイルサイズが大きくなる。たとえば上のPNG画像はサイズが192x128で166バイトだが、これを同じサイズのPPM画像に変換すると約72Kバイトになる。PPM形式は適当なライブラリの支援を受けずに画像の操作を行なうときや、圧縮伸張のコストを掛けずに画像の操作を行ないたいときに使い、最終的にはPNGなどの可逆圧縮をサポートする、より効率のよい形式にするのがいいだろう[5]

16ビット拡張

PGM形式とPPM形式の元々のバイナリ形式 (P5およびP6) では、ビット深度は8ビットまでしかサポートしていなかった。テキスト形式でこれを拡張するのは容易だが、それにより画像の操作に時間がかかるようになり、またファイルサイズも大きくなる。そこで、多くの拡張法が試みられた。しかしビット深度を8ビットよりも大きくすると、エンディアンの問題が生じ、様々な実装でバイトオーダーが一致しないという事態が生じた[6]。なお、実装のデファクトスタンダードであるNetpbmではビッグエンディアンである。

脚注

  1. ^ The PNM Format
  2. ^ 略語PNMにおけるNは、anyの文字nではなく、発音から取られている。XMLにおけるXと同様である。
  3. ^ PBM, PGM, PNM, and PPM: Summary
  4. ^ Netpbm history
  5. ^ JPEG不可逆圧縮を伴うため、画質の劣化の問題が発生する。GIFは256色までをサポートし、フルカラーをサポートしない。
  6. ^Pnmtotiff User Manual”. SourceForge の解説ページ (27 March 2005). 2009年8月4日閲覧。

関連項目

PPMは、以下のいずれかを指す。

経済学

組織

政党

政党以外

科学

工学

コンピュータ

その他の科学

その他

この項目では、100万分の1を基準とする割合の数値について説明しています。その他の用法については「PPM」をご覧ください。

主要な無次元量単位

1単位 指数
1 % 0.01 10−2
1 0.001 10−3
1 0.0001 10−4
1 ppm 0.000001 10−6
1 ppb 0.000000001 10−9
1 ppt 0.000000000001 10−12
1 ppq 0.000000000000001 10−15

ppm(パーツ・パー・ミリオン)や百万分率(ひゃくまんぶんりつ)は、100万分のいくらであるかという割合を示すparts-per表記による単位。「parts per million」の頭文字をとったもので、100万分の1の意。1ppm = 0.0001% であり 10,000ppm = 1% である。

用途

主に濃度を表すために用いられるが、不良品発生率などの確率を表すこともある。

二酸化窒素などの大気汚染物質をはじめとする公害分野や、食品添加物農薬などの濃度、岩石中の微量元素の組成、半導体中の不純物量を示す目的などでよく用いられる。

気体中の気体については体積比を用い、液体・固体中の液体・固体では重量比を用いるのが一般的である。なお、水溶液中の濃度については、「1 kg = 1 L」と近似して「mg/L = ppm」とし、不純物等の濃度の単位として用いられる。ちなみに、日本国内では一般的な水道水の遊離残留塩素濃度は約0.4ppm、浄水器を使った場合は約0.1ppmである。

長さを表す例として、線膨張係数の表記にも使用される。(例)線膨張係数が8.8 ppm/℃と表記されている場合、これは、8.8µm/℃/m(メートル)のことである。

また、原子分子)の数量の比率か重量の比率かを区別するためにppma (parts per million atomic) もしくはppmw (parts per million weight)の 表記が用いられることもある。そのほかに二酸化炭素の濃度を区別するためppmvも用いられる[1]

他の割合を示す単位

同様の単位に、ppc(パーセント、parts per cent、100分の1、百分率)、ppb(パーツ・パー・ビリオン、parts per billion、10億分の1、十億分率)、ppt(パーツ・パー・トリリオン、parts per trillion、1兆分の1、一兆分率)などがある。ただし稀にpptが千分率(パーツ・パー・サウザンド、parts per thousand)を意味することもあるので注意が必要。

正確には「何割」や「何%」といった「比率」を表す数値である。

符号位置

記号 Unicode JIS X 0213 文字参照 名称
U+33D9 - ㏙㏙ ppm

Unicodeには、ppmを表す上記の文字が収録されている。これはCJK互換用文字であり、既存の文字コードに対する後方互換性のために収録されているものであるので、使用は推奨されない[2][3]

出典

  1. ^ シリコン原料の精製に関する論文の例 (NREL/SR-520-30716) (PDF)
  2. ^CJK Compatibility” (2015年). 2016年2月21日閲覧。
  3. ^The Unicode Standard, Version 8.0.0”. Mountain View, CA: The Unicode Consortium (2015年). 2016年2月21日閲覧。

関連項目