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

Netpbm 標準

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

調査とメタデータ

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

ここにファイルを選択またはドロップ

100%プライベートなブラウザ内変換 - ファイルがデバイスから外部に出ることはありません

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

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

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

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

50 32 / 50 35

ASCII表現: P2 / P5

標準化: Netpbm Library Standard

技術仕様

コンテナアーキテクチャASCII (P2) or binary (P5) Netpbm format with width, height, maximum gray value, and pixel stream
圧縮Uncompressed raw binary bytes or human-readable ASCII text numbers
バイトエンディアンBig-Endian (for 16-bit binary samples in P5 mode)
色空間Linear Grayscale or sRGB Grayscale
チャンネルと構造1 channel grayscale (8-bit or 16-bit precision)
最大寸法Practically unlimited (supports arbitrary 64-bit coordinate space)
透過性None
ストリーミングとプログレッシブSequential row-by-row streaming playback

技術比較マトリックス: 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 Netpbm コンバーターでトランスコードしてください。

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

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

既知の攻撃ベクター

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

防御的ベストプラクティス:

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

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

主な利点とメリット

  • ゼロの複雑性:外部ライブラリなしで、C、Python、または WebAssembly での解析と書き込みが極めて容易です。
  • ネイティブな 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ファイルをFile2File.appにアップロードすると、完全なプライバシーを保ちながらブラウザ内で直接PNGやJPGに変換できます。