Portable Graymap (.pgm)
Стандарт СтандартPortable Graymap Format (PGM) е форматът за изображения в нива на сивото от семейството Netpbm. Използва се широко в компютърното зрение, роботиката, оптичната инспекция и алгоритмите за цифрова обработка на изображения.
Проверка и метаданни
Операционните системи и файловите анализатори идентифицират PGM файлове чрез проверка на началната двоична байтова последователност:
Байтов подпис на заглавката (сигнатурни байтове)
Операционните системи и файловите анализатори идентифицират PGM файлове чрез проверка на началната двоична байтова последователност:
HEX ПОДПИС (ОФСЕТ 0):
50 32 / 50 35ASCII ПРЕДСТАВЯНЕ: P2 / P5
Стандартизация: Стандарт на библиотеката Netpbm
Технически спецификации
| Контейнерна архитектура | ASCII (P2) или двоичен (P5) формат Netpbm с ширина, височина, максимална стойност на сивото и поток от пиксели |
| Компресия | Некомпресирани сурови двоични байтове или четими за хората числа в ASCII текст |
| Поредност на байтовете (Endianness) | Ред от старшия към младшия байт (Big-Endian) за 16-битовите двоични проби в режим P5. |
| Цветови пространства | Линейна скала на сивото или скала на сивото sRGB |
| Канали и структура | 1 канал в скала на сивото (8-битова или 16-битова точност) |
| Максимални размери | Практически неограничени (поддържат се координати с произволен 64-битов обхват) |
| Прозрачност | Няма |
| Поточно предаване и прогресивно зареждане | Последователно поточно възпроизвеждане ред по ред |
Техническа сравнителна матрица: PGM спрямо конкуренти
| Технически атрибут | PGM (Текущ) | PBM | PPM | PNG |
|---|---|---|---|---|
| Цветови режим | Нива на сивото (8-битово / 16-битово) | 1-битово монохромно | RGB Truecolor (24-bit / 48-bit) | Нюанси на сивото, RGB, RGBA |
| Сроден формат от Netpbm | PGM (Portable Graymap) | PBM (Portable Bitmap) | PPM (Portable Pixmap) | Стандарт на W3C извън Netpbm |
| Магически байтове | P2 (ASCII) / P5 (двоично) | P1 (ASCII) / P4 (двоично) | P3 (ASCII) / P6 (двоично) | ‰PNG.... |
| Компресия | Некомпресирано | Некомпресирано | Некомпресирано | Компресия Deflate без загуби |
Често срещани видове повреди и ръководство за възстановяване на шестнадесетични данни
Изображението се показва инвертирано или напълно бяло.
Първопричина: Несъответстващ параметър „maxval“ в заглавната част (напр. maxval е деклариран като 1 вместо 255).
Възстановяване: Коригирайте реда на заглавната част за maxval или транскодирайте с File2File.app Netpbm Converter.
Анализ на сигурността и вектори на атака към парсера
PGM декодерите трябва внимателно да проверяват дали броят на декодираните пиксели съответства на декларираните размери, за да предотвратят препълване на буфера.
Известни вектори на атака
- Препълване на цяло число при заделяне на буфер с размер ширина * височина * (maxval > 255 ? 2 : 1).
- Четене извън буфера при обработка на невалидни ASCII числови токени.
- Отказ от услуга чрез масивно разпределение на паметта, задействано от фалшиви размери в заглавната част.
Най-добри практики за защита: Ограничете максимално допустимите размери и заделянето на памет преди четене на потоците от пиксели.
Исторически произход и етапи
Основни предимства
- Компактната структура на PGM може да улесни създаването на базови програми за четене, макар че обработката на дълбочината на пробите, заглавните части и неправилния вход изисква внимание.
- Вградената поддръжка на 16-битови нива на сивото го прави идеален за карти на височините, карти на дълбочината и термични изображения.
- ASCII режимът (P2) позволява директно преглеждане и редактиране на суровите стойности на пикселите в стандартни текстови редактори.
Технически ограничения и минуси
- Липса на компресия: голям размер на файловете в сравнение с компресирани формати като PNG.
- Липса на метаданни за физически размери, цветови пространства или геолокация.
- Строго едноканален формат: не може да съхранява цветни данни или прозрачност с алфа канал.
Интересни технически факти
- OpenCV, ROS (операционна система за роботи) и системите за машинно зрение често използват PGM за навигационни карти за SLAM.
- Разработчиците на игри често използват 16-битови PGM файлове като карти на височините на терена, тъй като суровите данни за височината са некомпресирани и лесни за зареждане.
- Параметърът „maxval“ в заглавната част дефинира максималната стойност на яркостта (обикновено 255 за 8-битови или 65535 за 16-битови изображения).
Често задавани технически въпроси
За какво се използва форматът PGM?
PGM се използва предимно в компютърното зрение (OpenCV), роботиката (картови файлове на ROS), научното изобразяване и генерирането на карти на височините на 3D терени.
Каква е разликата между P2 и P5 PGM файловете?
P2 е обикновен ASCII текст, където всеки пиксел е изписан като число, докато P5 съхранява пикселите като компактни двоични байтове.
Как мога да конвертирам PGM в JPG или PNG?
PGM съхранява проби в нива на сивото. Конвертирайте го в PNG за изображение без загуби, което се поддържа от много програми за преглед, или в JPEG, ако ви е нужен по-малък файл за снимка; конверторът работи в браузъра ви.