Portable Graymap Format (.pgm)

Netpbm 標準

Portable Graymap Format (PGM)是 Netpbm 系列的灰階圖片規格,廣泛應用於電腦視覺、機器人技術、光學檢測和數位影像處理演算法中。

檢查與中繼資料

作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 PGM 檔案:

在這裡選擇或拖放檔案

私密 - 檔案絕不會離開您的裝置

或貼上 Ctrl+V
零網路傳輸隱私保證: 0 位元組上傳至外部伺服器。所有處理皆在本機瀏覽器沙箱中進行。

位元組層級標頭簽章(檔案簽章)

作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 PGM 檔案:

十六進位簽章(偏移量 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 標準
檔案簽章(magic bytes)P2 (ASCII) / P5 (二進位)P1 (ASCII) / P4 (二進位)P3 (ASCII) / P6 (二進位)‰PNG....
壓縮未壓縮未壓縮未壓縮無損 Deflate

常見損壞模式與十六進位修復指南

圖片顯示顛倒或完全過曝成一片白色。

根本原因: 標頭中的「maxval」參數不符(例如 maxval 宣告為 1 而非 255)。

修復: 修正 maxval 標頭行,或使用 File2File.app Netpbm 轉換器進行轉檔。

安全性分析與解析器攻擊向量

PGM 解碼器必須仔細驗證解析出的像素數量是否符合宣告的尺寸,以防止緩衝區溢位。

已知攻擊向量

  • 在寬度 * 高度 * (maxval > 255 ? 2 : 1) 緩衝區配置期間發生整數溢位。
  • 讀取格式錯誤的 ASCII 數字記號時發生緩衝區過度讀取。
  • 透過偽造的標頭尺寸觸發大量記憶體配置,導致阻斷服務。

防禦最佳實務: 在讀取像素串流之前,先設定允許的最大尺寸與記憶體配置上限。

歷史起源與里程碑

200016 位元深度(最大值高達 65535)在二進位 P5 模式中標準化,用於科學影像處理。
1993納入 Netpbm 工具組中,作為標準的中間灰階格式。
1989Jef Poskanzer 建立 PGM 以補足 PBM,提供完整的 256 階灰階支援。

主要優勢與優點

  • 精簡的 PGM 結構使基本讀取器的實作相對簡單,不過處理取樣深度、標頭和異常輸入仍須格外留意。
  • 原生 16 位元灰階支援使其成為高度圖、深度圖和熱成像的理想選擇。
  • ASCII 模式 (P2) 允許在標準文字編輯器中直接檢查和操作原始像素值。

技術限制與缺點

  • 無壓縮:與 PNG 等壓縮格式相比,檔案佔用空間較大。
  • 缺乏實體尺寸、色彩空間或地理定位的中繼資料。
  • 嚴格的單通道:無法儲存色彩資料或 alpha 透明度。

有趣的技術冷知識

  • OpenCV、ROS(機器人作業系統)和機器視覺系統經常將 PGM 用於 SLAM 導航地圖。
  • 遊戲開發者經常使用 16 位元 PGM 檔案作為地形高度圖,因為原始高程資料未經壓縮且易於載入。
  • 標頭中的「maxval」參數定義了最大亮度值(8 位元通常為 255,16 位元通常為 65535)。

常見技術問題

PGM 格式是用來做什麼的?

PGM 主要用於電腦視覺 (OpenCV)、機器人學(ROS 地圖檔案)、科學造影以及 3D 地形高度圖生成。

P2 與 P5 PGM 檔案有什麼差別?

P2 是純 ASCII 文字,其中每個像素都是寫出來的數字,而 P5 則是以精簡的二進位位元組儲存像素。

如何將 PGM 轉換為 JPG 或 PNG?

PGM 儲存的是灰階取樣。若需要多數檢視器都能開啟的無損圖片,請轉換為 PNG;若較重視相片風格的小檔案,則轉換為 JPEG。此轉換器會在您的瀏覽器中執行。