Portable Graymap format (.pgm)
Standard StandardPortable Graymap Format (PGM) je specifikacija za slike u nijansama sive iz porodice Netpbm, koja se široko koristi u računarskom vidu, robotici, optičkoj inspekciji i algoritmima za obradu digitalnih slika.
Pregled i metapodaci
Operativni sistemi i analizatori datoteka identifikuju PGM datoteke proverom početnog binarnog niza bajtova:
Potpis zaglavlja na nivou bajtova (magični bajtovi)
Operativni sistemi i analizatori datoteka identifikuju PGM datoteke proverom početnog binarnog niza bajtova:
HEKSADECIMALNI POTPIS (OFFSET 0):
50 32 / 50 35ASCII REPREZENTACIJA: P2 / P5
Standardizacija: Standard biblioteke Netpbm
Tehničke specifikacije
| Arhitektura kontejnera | ASCII (P2) ili binarni (P5) Netpbm format sa širinom, visinom, maksimalnom vrednošću sive i nizom piksela |
| Kompresija | Nekomprimovani sirovi binarni bajtovi ili čitljivi ASCII brojevi |
| Bajtni redosled (Endianness) | Redosled bajtova od najznačajnijeg ka najmanje značajnom (za 16-bitne binarne uzorke u režimu P5) |
| Prostori boja | Linearne nijanse sive ili sRGB nijanse sive |
| Kanali i struktura | Jedan kanal sa sivim tonovima (preciznost 8 ili 16 bita) |
| Maksimalne dimenzije | Praktično neograničene (podržavaju proizvoljan koordinatni prostor od 64 bita) |
| Transparentnost | Nema |
| Strimovanje i progresivno učitavanje | Sekvencijalni prikaz u strimu, red po red |
Tehnička matrica poređenja: PGM u odnosu na konkurente
| Tehnički atribut | PGM (Trenutno) | PBM | PPM | PNG |
|---|---|---|---|---|
| Režim boja | Nijanse sive (8-bitne / 16-bitne) | 1-bitni monohromatski | RGB prave boje (24-bitne / 48-bitne) | Nijanse sive, RGB, RGBA |
| Netpbm srodnik | PGM (Portable Graymap) | PBM (Portable Bitmap) | PPM (Portable Pixmap) | W3C standard koji nije iz Netpbm paketa |
| Magični bajtovi | P2 (ASCII) / P5 (binarno) | P1 (ASCII) / P4 (binarno) | P3 (ASCII) / P6 (binarno) | ‰PNG.... |
| Kompresija | Nekomprimovano | Nekomprimovano | Nekomprimovano | Deflate bez gubitaka |
Uobičajeni režimi oštećenja i vodič za heksadecimalni oporavak
Slika se prikazuje izvrnuto ili potpuno preosvetljeno belo.
Osnovni uzrok: Nepodudaranje parametra "maxval" u zaglavlju (npr. maxval je deklarisan kao 1 umesto 255).
Oporavak: Ispravite liniju zaglavlja za maxval ili izvršite transkodiranje pomoću File2File.app Netpbm konvertera.
Bezbednosna analiza i vektori napada parsera
PGM dekoderi moraju pažljivo da potvrde da parsirani broj piksela odgovara deklarisanim dimenzijama kako bi se sprečilo prekoračenje bafera.
Poznati vektori napada
- Preliv celobrojne vrednosti tokom alokacije bafera širina * visina * (maxval > 255 ? 2 : 1).
- Prekoračenje čitanja bafera pri čitanju nepravilnih tokena ASCII brojeva.
- Uskraćivanje usluge (DoS) kroz masivnu alokaciju memorije pokrenutu lažnim dimenzijama u zaglavlju.
Najbolje prakse za zaštitu: Ograničite maksimalno dozvoljene dimenzije i ograničenja alokacije memorije pre čitanja tokova piksela.
Istorijat i prekretnice
Ključne prednosti
- Sažeta struktura PGM formata omogućava jednostavnu izradu osnovnih čitača, mada pažljivo rukovanje dubinom uzoraka, zaglavljima i neispravnim ulazom i dalje zahteva trud.
- Izvorna podrška za 16-bitne nijanse sive čini ga idealnim za mape visina, mape dubine i termalno snimanje.
- ASCII režim (P2) omogućava direktan pregled i izmenu sirovih vrednosti piksela u standardnim uređivačima teksta.
Tehnička ograničenja i nedostaci
- Nema kompresije: velike veličine datoteka u poređenju sa kompresovanim formatima poput PNG-a.
- Nedostaju mu metapodaci za fizičke dimenzije, prostore boja ili geolokaciju.
- Strogo jednokanalni format: ne može da skladišti podatke u boji niti alfa providnost.
Zanimljivosti
- OpenCV, ROS (Robot Operating System) i sistemi mašinskog vida često koriste PGM za SLAM navigacione mape.
- Programeri igara često koriste 16-bitne PGM datoteke kao mape visina terena jer su sirovi podaci o nadmorskoj visini nekompresovani i laki za učitavanje.
- Parametar "maxval" u zaglavlju definiše maksimalnu vrednost osvetljenosti (obično 255 za 8-bitne ili 65535 za 16-bitne vrednosti).
Često postavljana tehnička pitanja
Za šta se koristi PGM format?
PGM se prvenstveno koristi u računarskom vidu (OpenCV), robotici (datoteke ROS mapa), naučnom snimanju i generisanju mapa visine 3D terena (heightmap).
Koja je razlika između P2 i P5 PGM datoteka?
P2 je običan ASCII tekst gde je svaki piksel upisani broj, dok P5 skladišti piksele kao kompaktne binarne bajtove.
Kako mogu da konvertujem PGM u JPG ili PNG?
PGM sadrži uzorke u nijansama sive. Konvertujte ga u PNG za sliku bez gubitaka koju podržava veliki broj programa za pregled ili u JPEG kada je važna manja datoteka pogodna za fotografije. Konverter radi u vašem pregledaču.