ポータブルグレーマップ (.pgm)
Netpbmライブラリ標準 標準Portable Graymap Format (PGM) は、Netpbm ファミリーのグレースケール画像仕様であり、コンピュータビジョン、ロボット工学、外観検査、およびデジタル画像処理アルゴリズムで広く使用されています。
調査とメタデータ
オペレーティングシステムやファイル解析ツールは、先頭のバイナリ列を検査してPGMファイルを識別します:
バイトレベルのヘッダーシグネチャ (マジックバイト)
オペレーティングシステムやファイル解析ツールは、先頭のバイナリ列を検査してPGMファイルを識別します:
16進数シグネチャ(オフセット0):
50 32 / 50 35ASCII表現: P2 / P5
標準化: Netpbmライブラリ標準
技術仕様
| コンテナアーキテクチャ | 幅、高さ、最大グレー値、ピクセルストリームを含むASCII(P2)またはバイナリ(P5)のNetpbm形式 |
| 圧縮 | 非圧縮の生バイナリバイト、または人が読めるASCIIテキストの数値 |
| バイトエンディアン | ビッグエンディアン(P5モードの16ビットバイナリサンプル) |
| 色空間 | リニアグレースケールまたはsRGBグレースケール |
| チャンネルと構造 | 1チャンネルのグレースケール(8または16ビット精度) |
| 最大寸法 | 実質的に制限なし(任意の64ビット座標空間に対応) |
| 透過性 | なし |
| ストリーミングとプログレッシブ | 行単位で順次ストリーミング再生 |
技術比較表:PGMと競合製品
| 技術属性 | PGM (現在) | PBM | PPM | PNG |
|---|---|---|---|---|
| カラーモード | グレースケール(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)。
防御的ベストプラクティス: ピクセルストリームを読み取る前に、最大許容寸法とメモリ割り当て制限に上限を設定します。
歴史的背景とマイルストーン
主なメリット
- 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変換では画質が低下する場合があります。