Przenośna mapa szarości (.pgm)
Netpbm StandardníPortable Graymap Format (PGM) je specifikace obrázků ve stupních šedi z rodiny Netpbm, široce používaná v počítačovém vidění, robotice, optické inspekci a algoritmech zpracování digitálních obrazů.
Kontrola a metadata
Operační systémy a analyzátory souborů identifikují soubory PGM kontrolou počáteční binární sekvence bajtů:
Podpis hlavičky na úrovni bajtů (Magic Bytes)
Operační systémy a analyzátory souborů identifikují soubory PGM kontrolou počáteční binární sekvence bajtů:
HEXADECIMÁLNÍ PODPIS (POSUN 0):
50 32 / 50 35ASCII REPREZENTACE: P2 / P5
Standardizace: Netpbm Library Standard
Technické specifikace
| Architektura kontejneru | Formát Netpbm v ASCII (P2) nebo binární podobě (P5) s šířkou, výškou, maximální hodnotou šedi a proudem pixelů |
| Komprese | Nekomprimované surové binární bajty nebo čísla v textu ASCII čitelném pro člověka |
| Pořadí bajtů | Big-endian (u 16bitových binárních vzorků v režimu P5) |
| Barevné prostory | Lineární odstíny šedi nebo odstíny šedi sRGB |
| Kanály a struktura | 1 kanál ve stupních šedi (přesnost 8 nebo 16 bitů) |
| Max. rozměry | Prakticky neomezené (podpora libovolného 64bitového rozsahu souřadnic) |
| Průhlednost | Žádná |
| Streamování a progresivní načítání | Sekvenční streamování po jednotlivých řádcích |
Technická srovnávací matice: PGM vs konkurence
| Technický atribut | PGM (Aktuální) | PBM | PPM | PNG |
|---|---|---|---|---|
| Barevný režim | Stupně šedi (8-bit / 16-bit) | 1bitová černobílá | Plnobarevné RGB (24bitové / 48bitové) | Stupně šedi, RGB, RGBA |
| Příbuzný formát v rodině Netpbm | PGM (Portable Graymap) | PBM (Portable Bitmap) | PPM (Portable Pixmap) | Standard W3C mimo Netpbm |
| Magické bajty | P2 (ASCII) / P5 (binární) | P1 (ASCII) / P4 (binární) | P3 (ASCII) / P6 (binární) | ‰PNG.... |
| Komprese | Nekomprimováno | Nekomprimováno | Nekomprimováno | Bezztrátová komprese Deflate |
Běžné režimy poškození a příručka pro obnovení v hex
Obrázek se zobrazuje převráceně nebo je zcela přeexponovaný do bíla.
Hlavní příčina: Neodpovídající parametr 'maxval' v hlavičce (např. maxval deklarovaný jako 1 namísto 255).
Obnovení: Opravte řádek hlavičky maxval nebo proveďte transkódování pomocí nástroje File2File.app Netpbm Converter.
Bezpečnostní analýza a vektory útoků na parser
Dekodéry PGM musí pečlivě ověřit, zda analyzované počty pixelů odpovídají deklarovaným rozměrům, aby se předešlo přetečení vyrovnávací paměti.
Známé vektory útoků
- Přetečení celého čísla při alokaci vyrovnávací paměti o velikosti šířka * výška * (maxval > 255 ? 2 : 1).
- Přečtení za hranice vyrovnávací paměti při čtení chybně vytvořených číselných tokenů ASCII.
- Odepření služby (DoS) prostřednictvím masivní alokace paměti vyvolané podvrženými rozměry v hlavičce.
Doporučené bezpečnostní postupy: Před čtením datových proudů pixelů omezte maximální povolené rozměry a limity alokace paměti.
Historický vývoj a milníky
Klíčové výhody a přednosti
- Kompaktní struktura PGM může usnadnit tvorbu základních čteček, ale je třeba správně zpracovat bitovou hloubku vzorků, hlavičky i chybně vytvořený vstup.
- Díky nativní podpoře 16bitových odstínů šedi je ideální pro výškové mapy, mapy hloubky a termovizi.
- Režim ASCII (P2) umožňuje přímo kontrolovat a upravovat surové hodnoty pixelů v běžných textových editorech.
Technická omezení a nevýhody
- Žádná komprese: velké velikosti souborů v porovnání s komprimovanými formáty, jako je PNG.
- Postrádá metadata pro fyzické rozměry, barevné prostory nebo geolokaci.
- Pouze jeden kanál: nelze ukládat barevná data ani průhlednost alfa kanálu.
Zajímavé technické drobnosti
- OpenCV, ROS (Robot Operating System) a systémy strojového vidění často používají PGM pro navigační mapy SLAM.
- Vývojáři her často používají 16bitové soubory PGM jako výškové mapy terénu, protože surová data o nadmořské výšce jsou nekomprimovaná a snadno se načítají.
- Parametr 'maxval' v hlavičce určuje maximální hodnotu jasu (typicky 255 pro 8bitový nebo 65535 pro 16bitový obraz).
Často kladené technické otázky
K čemu se používá formát PGM?
Formát PGM se primárně používá v oblasti počítačového vidění (OpenCV), robotiky (mapové soubory ROS), vědeckého zobrazování a generování 3D výškových map terénu.
Jaký je rozdíl mezi soubory PGM typu P2 a P5?
P2 je prostý text ASCII, kde je každý pixel zapsán jako číslo, zatímco P5 ukládá pixely jako kompaktní binární bajty.
Jak mohu převést formát PGM na JPG nebo PNG?
PGM uchovává vzorky ve stupních šedi. Převeďte jej do PNG, chcete-li bezztrátový obrázek s širokou podporou prohlížečů, nebo do JPEG, pokud je důležitější menší soubor vhodný pro fotografie. Převod probíhá v prohlížeči.