Przenośna mapa szarości (.pgm)
Standard StandardowyPortable Graymap Format (PGM) to specyfikacja obrazu w skali szarości z rodziny Netpbm, szeroko stosowana w widzeniu komputerowym, robotyce, inspekcji optycznej i algorytmach cyfrowego przetwarzania obrazu.
Inspekcja i metadane
Systemy operacyjne i analizatory plików identyfikują pliki PGM, sprawdzając początkową sekwencję bajtów binarnych:
Podpis nagłówka na poziomie bajtów (Magic Bytes)
Systemy operacyjne i analizatory plików identyfikują pliki PGM, sprawdzając początkową sekwencję bajtów binarnych:
PODPIS HEX (OFFSET 0):
50 32 / 50 35REPREZENTACJA ASCII: P2 / P5
Normalizacja: Standard biblioteki Netpbm
Specyfikacja techniczna
| Architektura kontenera | Format Netpbm ASCII (P2) lub binarny (P5) z szerokością, wysokością, maksymalną wartością szarości i strumieniem pikseli |
| Kompresja | Neskondensowane surowe bajty binarne lub czytelne dla człowieka liczby tekstowe ASCII |
| Kolejność bajtów (Endianness) | Big-Endian (dla 16-bitowych próbek binarnych w trybie P5) |
| Przestrzenie kolorów | Liniowe odcienie szarości lub odcienie szarości sRGB |
| Kanały i struktura | 1 kanał w skali szarości (precyzja 8-bitowa lub 16-bitowa) |
| Maks. wymiary | Praktycznie nieograniczone (obsługuje dowolną 64-bitową przestrzeń współrzędnych) |
| Przezroczystość | Brak |
| Streaming i progresywne ładowanie | Sekwencyjne odtwarzanie strumieniowe wiersz po wierszu |
Techniczna macierz porównawcza: PGM a konkurencja
| Atrybut techniczny | PGM (Bieżący) | PBM | PPM | PNG |
|---|---|---|---|---|
| Tryb kolorów | Skala szarości (8-bitowa / 16-bitowa) | 1-bitowy monochromatyczny | Truecolor RGB (24-bitowy / 48-bitowy) | Skala szarości, RGB, RGBA |
| Pokrewny format Netpbm | PGM (Przenośna mapa szarości) | PBM (Przenośna mapa bitowa) | PPM (Przenośna mapa pikseli) | Standard W3C spoza Netpbm |
| Magiczne bajty | P2 (ASCII) / P5 (Binarny) | P1 (ASCII) / P4 (Binarny) | P3 (ASCII) / P6 (Binarny) | ‰PNG.... |
| Kompresja | Neskondensowany | Neskondensowany | Neskondensowany | Bezstratny Deflate |
Typowe tryby uszkodzeń i przewodnik odzyskiwania szesnastkowego
Obraz wyświetla się jako odwrócony lub całkowicie prześwietlony na biało.
Główna przyczyna: Niedopasowany parametr 'maxval' w nagłówku (np. maxval zadeklarowany jako 1 zamiast 255).
Odzyskiwanie: Popraw linię nagłówka maxval lub przekoduj za pomocą konwertera Netpbm File2File.
Analiza bezpieczeństwa i wektory ataku na parser
Dekodery PGM muszą dokładnie sprawdzać, czy przeanalizowane liczby pikseli pasują do zadeklarowanych wymiarów, aby zapobiec przepełnieniu bufora.
Znane wektory ataku
- Przepełnienie liczbowe podczas alokacji bufora szerokość * wysokość * (maxval > 255 ? 2 : 1).
- Odczyt bufora poza zakresem podczas czytania wadliwych tokenów liczbowych ASCII.
- Odmowa usługi (DoS) poprzez ogromną alokację pamięci wywołaną sfałszowanymi wymiarami nagłówka.
Najlepsze praktyki obronne: Ogranicz maksymalne dozwolone wymiary i limity alokacji pamięci przed odczytem strumieni pikseli.
Pochodzenie historyczne i kamienie milowe
Główne zalety
- Zerowa złożoność: niezwykle prosty do parsowania i zapisywania w języku C, Python lub WebAssembly bez zewnętrznych bibliotek.
- Natywna obsługa 16-bitowej skali szarości czyni go idealnym do map wysokości, map głębi i obrazowania termowizyjnego.
- Tryb ASCII (P2) umożliwia bezpośrednią inspekcję i manipulację surowymi wartościami pikseli w standardowych edytorach tekstowych.
Ograniczenia techniczne i wady
- Brak kompresji: duże rozmiary plików w porównaniu do formatów skompresowanych, takich jak PNG.
- Brak metadanych dotyczących wymiarów fizycznych, przestrzeni kolorów czy geolokalizacji.
- Ściśle jednokanałowy: nie może przechowywać danych o kolorze ani przezroczystości alfa.
Ciekawe informacje techniczne
- OpenCV, ROS (Robot Operating System) i systemy wizji maszynowej często używają PGM do map nawigacyjnych SLAM.
- Programiści gier często używają 16-bitowych plików PGM jako map wysokości terenu, ponieważ surowe dane o wysokości są nieskompresowane i łatwe do załadowania.
- Parametr 'maxval' w nagłówku określa maksymalną wartość jasności (zazwyczaj 255 dla 8-bitowych lub 65535 dla 16-bitowych).
Często zadawane pytania techniczne
Do czego służy format PGM?
Format PGM jest używany głównie w widzeniu komputerowym (OpenCV), robotyce (pliki map ROS), obrazowaniu naukowym i generowaniu map wysokości terenu 3D.
Jaka jest różnica między plikami PGM P2 i P5?
P2 to zwykły tekst ASCII, w którym każdy piksel jest zapisaną liczbą, podczas gdy P5 przechowuje piksele jako zwarte bajty binarne.
Jak mogę przekonwertować PGM na JPG lub PNG?
Prześlij swój plik PGM do serwisu File2File.app, aby przekonwertować go do formatu PNG lub JPG bezpośrednio w przeglądarce z zachowaniem pełnej prywatności.