Mapa de grises portátil (.pgm)
Netpbm StandarPortable Graymap Format (PGM) adalah spesifikasi gambar skala abu-abu dari keluarga Netpbm, yang banyak digunakan dalam visi komputer, robotika, inspeksi optik, dan algoritma pemrosesan citra digital.
Pemeriksaan & Metadata
Sistem operasi dan penganalisis file mengenali file PGM dengan memeriksa urutan byte biner di bagian awal:
Tanda Tangan Header per Byte (Byte Penanda)
Sistem operasi dan penganalisis file mengenali file PGM dengan memeriksa urutan byte biner di bagian awal:
TANDA TANGAN HEX (OFFSET 0):
50 32 / 50 35REPRESENTASI ASCII: P2 / P5
Standardisasi: Netpbm Library Standard
Spesifikasi Teknis
| Arsitektur Kontainer | Format Netpbm ASCII (P2) atau biner (P5) dengan lebar, tinggi, nilai abu-abu maksimum, dan aliran piksel |
| Kompresi | Byte biner mentah tanpa kompresi atau angka teks yang dapat dibaca manusia |
| Urutan Byte | Big-Endian (untuk sampel biner 16-bit dalam mode P5) |
| Ruang Warna | Skala abu-abu linear atau skala abu-abu sRGB |
| Saluran & Struktur | 1 saluran skala abu-abu (presisi 8-bit atau 16-bit) |
| Dimensi Maksimum | Secara praktis tidak terbatas (mendukung ruang koordinat 64-bit arbitrer) |
| Transparansi | Tidak ada |
| Streaming & Progresif | Pemutaran streaming berurutan baris demi baris |
Perbandingan Teknis PGM dengan Pesaing
| Atribut Teknis | PGM (Saat Ini) | PBM | PPM | PNG |
|---|---|---|---|---|
| Mode Warna | Skala abu-abu (8-bit / 16-bit) | Monokrom 1-bit | RGB Truecolor (24-bit / 48-bit) | Skala abu-abu, RGB, RGBA |
| Turunan Netpbm | PGM (Portable Graymap) | PBM (Portable Bitmap) | PPM (Portable Pixmap) | Standar W3C non-Netpbm |
| Magic Byte | P2 (ASCII) / P5 (Biner) | P1 (ASCII) / P4 (Biner) | P3 (ASCII) / P6 (Biner) | ‰PNG.... |
| Kompresi | Tidak dikompresi | Tidak dikompresi | Tidak dikompresi | Deflate Lossless |
Pola Kerusakan Umum dan Panduan Pemulihan Hex
Gambar ditampilkan terbalik atau putih kosong sepenuhnya.
Penyebab Utama: Parameter 'maxval' yang tidak cocok di tajuk (misalnya maxval dideklarasikan sebagai 1 alih-alih 255).
Pemulihan: Koreksi baris tajuk maxval atau transkode dengan Konverter Netpbm File2File.app.
Analisis Keamanan & Vektor Serangan Parser
Dekoder PGM harus dengan hati-hati memvalidasi bahwa jumlah piksel yang diurai cocok dengan dimensi yang dideklarasikan untuk mencegah luapan buffer.
Vektor Serangan yang Diketahui
- Luapan bilangan bulat selama alokasi buffer lebar * tinggi * (maxval > 255 ? 2 : 1).
- Pembacaan berlebih pada buffer saat membaca token angka ASCII yang cacat.
- Penolakan layanan melalui alokasi memori besar yang dipicu oleh dimensi tajuk buatan.
Praktik Terbaik Defensif: Batasi dimensi maksimum yang diizinkan dan batas alokasi memori sebelum membaca aliran piksel.
Asal-Usul & Tonggak Sejarah
Keunggulan & Kelebihan Utama
- Struktur PGM yang ringkas dapat memudahkan penerapan pembaca dasar, meskipun penanganan kedalaman sampel, header, dan masukan yang cacat tetap memerlukan kehati-hatian.
- Dukungan skala abu-abu 16-bit asli menjadikannya ideal untuk peta ketinggian, peta kedalaman, dan pencitraan termal.
- Mode ASCII (P2) memungkinkan pemeriksaan langsung dan pengubahan nilai piksel mentah di editor teks standar.
Keterbatasan Teknis & Kekurangan
- Tanpa kompresi: ukuran berkas besar dibandingkan dengan format terkompresi seperti PNG.
- Tidak memiliki metadata untuk dimensi fisik, ruang warna, atau geolokasi.
- Hanya memiliki satu saluran: tidak dapat menyimpan data warna atau transparansi alfa.
Fakta Teknis Menarik
- OpenCV, ROS (Robot Operating System), dan sistem visi mesin sering menggunakan PGM untuk peta navigasi SLAM.
- Pengembang game sering menggunakan berkas PGM 16-bit sebagai peta ketinggian medan karena data elevasi mentah tidak dikompresi dan mudah dimuat.
- Parameter 'maxval' dalam tajuk menentukan nilai kecerahan maksimum (biasanya 255 untuk 8-bit atau 65535 untuk 16-bit).
Pertanyaan Teknis yang Sering Diajukan
Untuk apa format PGM digunakan?
PGM terutama digunakan dalam visi komputer (OpenCV), robotika (file peta ROS), pencitraan ilmiah, dan pembuatan peta ketinggian medan 3D.
Apa perbedaan antara file PGM P2 dan P5?
P2 menyimpan setiap nilai piksel sebagai angka dalam teks ASCII biasa, sedangkan P5 menyimpan piksel sebagai byte biner yang ringkas.
Bagaimana cara mengonversi PGM ke JPG atau PNG?
PGM menyimpan sampel skala abu-abu. Konversikan ke PNG untuk gambar lossless yang didukung banyak penampil, atau ke JPEG jika memerlukan file bergaya foto yang lebih kecil; konversi JPEG dapat menurunkan kualitas.