Portable Graymap format (.pgm)

Standard Standard

Portable 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:

Izaberite ili prevucite datoteke ovde

Privatno - datoteke nikada ne napuštaju vaš uređaj

ili nalepite Ctrl+V
Garancija privatnosti: bez prenosa podataka preko mreže 0 bajtova poslato spoljnim serverima. Sva obrada je izvršena lokalno u bezbednom okruženju vašeg pregledača.

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 35

ASCII REPREZENTACIJA: P2 / P5

Standardizacija: Standard biblioteke Netpbm

Tehničke specifikacije

Arhitektura kontejneraASCII (P2) ili binarni (P5) Netpbm format sa širinom, visinom, maksimalnom vrednošću sive i nizom piksela
KompresijaNekomprimovani 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 bojaLinearne nijanse sive ili sRGB nijanse sive
Kanali i strukturaJedan kanal sa sivim tonovima (preciznost 8 ili 16 bita)
Maksimalne dimenzijePraktično neograničene (podržavaju proizvoljan koordinatni prostor od 64 bita)
TransparentnostNema
Strimovanje i progresivno učitavanjeSekvencijalni prikaz u strimu, red po red

Tehnička matrica poređenja: PGM u odnosu na konkurente

Tehnički atributPGM (Trenutno)PBMPPMPNG
Režim bojaNijanse sive (8-bitne / 16-bitne)1-bitni monohromatskiRGB prave boje (24-bitne / 48-bitne)Nijanse sive, RGB, RGBA
Netpbm srodnikPGM (Portable Graymap)PBM (Portable Bitmap)PPM (Portable Pixmap)W3C standard koji nije iz Netpbm paketa
Magični bajtoviP2 (ASCII) / P5 (binarno)P1 (ASCII) / P4 (binarno)P3 (ASCII) / P6 (binarno)‰PNG....
KompresijaNekomprimovanoNekomprimovanoNekomprimovanoDeflate 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

200016-bitna dubina (maksimalna vrednost do 65535) standardizovana u binarnom P5 režimu za naučno snimanje.
1993Uključeno u Netpbm alatke kao standardni srednji format nijansi sive.
1989Džef Poskanzer je kreirao PGM kao dopunu za PBM, sa punom podrškom za 256 nijansi sive.

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.