ポータブルグレーマップ (.pgm)

Netpbmライブラリ標準 標準

Portable Graymap Format (PGM) は、Netpbm ファミリーのグレースケール画像仕様であり、コンピュータビジョン、ロボット工学、外観検査、およびデジタル画像処理アルゴリズムで広く使用されています。

調査とメタデータ

オペレーティングシステムやファイル解析ツールは、先頭のバイナリ列を検査してPGMファイルを識別します:

ファイルを選択するか、ここにドロップしてください

プライベート - ファイルがデバイスの外に出ることはありません

または貼り付け Ctrl+V
ネットワーク送信ゼロのプライバシー保証: 外部サーバーへのデータ送信は0バイトです。すべての処理はお使いのブラウザのサンドボックス内でローカルに実行されます。

バイトレベルのヘッダーシグネチャ (マジックバイト)

オペレーティングシステムやファイル解析ツールは、先頭のバイナリ列を検査してPGMファイルを識別します:

16進数シグネチャ(オフセット0):

50 32 / 50 35

ASCII表現: P2 / P5

標準化: Netpbmライブラリ標準

技術仕様

コンテナアーキテクチャ幅、高さ、最大グレー値、ピクセルストリームを含むASCII(P2)またはバイナリ(P5)のNetpbm形式
圧縮非圧縮の生バイナリバイト、または人が読めるASCIIテキストの数値
バイトエンディアンビッグエンディアン(P5モードの16ビットバイナリサンプル)
色空間リニアグレースケールまたはsRGBグレースケール
チャンネルと構造1チャンネルのグレースケール(8または16ビット精度)
最大寸法実質的に制限なし(任意の64ビット座標空間に対応)
透過性なし
ストリーミングとプログレッシブ行単位で順次ストリーミング再生

技術比較表:PGMと競合製品

技術属性PGM (現在)PBMPPMPNG
カラーモードグレースケール(8 ビット / 16 ビット)1 ビットモノクロRGB トゥルーカラー(24 ビット / 48 ビット)グレースケール、RGB、RGBA
Netpbm 系の仲間PGM (Portable Graymap)PBM (Portable Bitmap)PPM (Portable Pixmap)非 Netpbm W3C 標準
マジックバイトP2 (ASCII) / P5 (バイナリ)P1 (ASCII) / P4 (バイナリ)P3 (ASCII) / P6 (バイナリ)‰PNG....
圧縮無圧縮無圧縮無圧縮可逆 Deflate

一般的な破損モードと16進数リカバリガイド

画像が反転して表示されるか、全体が真っ白に白飛びします。

根本原因: ヘッダー内の「maxval」パラメータの不一致(例: maxval が 255 のところ 1 と宣言されている)。

復旧: maxval ヘッダー行を修正するか、File2File.app Netpbm コンバーターでトランスコードしてください。

セキュリティ分析とパーサー攻撃ベクトル

PGM デコーダーは、バッファオーバーランを防ぐために、解析されたピクセル数が宣言された寸法と一致していることを慎重に検証する必要があります。

既知の攻撃ベクター

  • 幅 × 高さ × (maxval > 255 ? 2 : 1) のバッファ割り当て時の整数オーバーフロー。
  • 不正な ASCII 数値トークンの読み取り時におけるバッファオーバーリード。
  • 偽造されたヘッダー寸法によって引き起こされる、大規模なメモリ割り当てによるサービス拒否(DoS)。

防御的ベストプラクティス: ピクセルストリームを読み取る前に、最大許容寸法とメモリ割り当て制限に上限を設定します。

歴史的背景とマイルストーン

2000科学的画像処理向けに 16 ビット深度(最大値 maxval が最大 65535)がバイナリ P5 モードで標準化される。
1993標準的な中間グレースケールフォーマットとして Netpbm ツールキットに統合される。
1989Jef Poskanzer が、PBM を補完し完全な 256 階調グレースケールをサポートするために PGM を作成する。

主なメリット

  • PGMのコンパクトな構造により基本的なリーダーを実装しやすい場合がありますが、サンプルのビット深度、ヘッダー、不正な入力の処理には注意が必要です。
  • ネイティブな 16 ビットグレースケールサポートにより、ハイトマップ、デプスマップ、サーモグラフィ(熱画像)に最適です。
  • ASCII モード(P2)では、標準的なテキストエディタで未加工の画素値を直接確認し、編集できます。

技術的な制限とデメリット

  • 無圧縮:PNG のような圧縮フォーマットと比較してファイルサイズが大きくなります。
  • 物理的な寸法、色空間、または位置情報のメタデータがありません。
  • 厳密な単一チャネル:カラーデータやアルファ透明度を保存できません。

興味深い技術トリビア

  • OpenCV、ROS(Robot Operating System)、およびマシンビジョンシステムでは、SLAM ナビゲーションマップ用によく PGM が使用されます。
  • ゲーム開発者は、未圧縮の標高データを簡単に読み込めるため、16ビットPGMファイルを地形のハイトマップとしてよく使用します。
  • ヘッダー内の「maxval」パラメータは、最大輝度値を定義します(通常、8 ビットの場合は 255、16 ビットの場合は 65535)。

よくある技術的な質問

PGM形式は何に使用されますか?

PGMは主にコンピュータビジョン(OpenCV)、ロボット工学(ROSマップファイル)、科学的画像処理、および3D地形のハイトマップ生成に使用されます。

P2とP5のPGMファイルの違いは何ですか?

P2は各ピクセルが数値として記述されたプレーンなASCIIテキストであり、P5はピクセルをコンパクトなバイナリバイトとして格納します。

PGMをJPGやPNGに変換するにはどうすればよいですか?

PGMはグレースケールのサンプルを保存します。多くのビューアーで使える可逆画像が必要ならPNGに、小さな写真向けファイルが必要ならJPEGに変換してください。JPEG変換では画質が低下する場合があります。