Portable Graymap (.pgm)
Netpbm СтандартPortable Graymap Format (PGM) - это спецификация изображений в оттенках серого из семейства Netpbm, широко используемая в компьютерном зрении, робототехнике, оптическом контроле и алгоритмах цифровой обработки изображений.
Анализ и метаданные
Операционные системы и анализаторы файлов идентифицируют файлы PGM по начальной двоичной последовательности байтов:
Сигнатура заголовка на уровне байтов (Magic Bytes)
Операционные системы и анализаторы файлов идентифицируют файлы PGM по начальной двоичной последовательности байтов:
HEX-СИГНАТУРА (СМЕЩЕНИЕ 0):
50 32 / 50 35ПРЕДСТАВЛЕНИЕ ASCII: P2 / P5
Стандартизация: Netpbm Library Standard
Технические спецификации
| Архитектура контейнера | Формат Netpbm в текстовом (ASCII, P2) или двоичном (P5) виде с указанием ширины, высоты, максимального значения серого и потока пикселей |
| Сжатие | Несжатые исходные двоичные байты или удобочитаемые числовые значения ASCII |
| Порядок байтов (Endianness) | С прямым порядком байтов от старшего к младшему (для 16-битных двоичных образцов в режиме P5) |
| Цветовые пространства | Линейные оттенки серого или оттенки серого sRGB |
| Каналы и структура | 1 канал в оттенках серого (с точностью 8 или 16 бит) |
| Макс. габариты | Практически не ограничено (поддерживает произвольное 64-битное пространство координат) |
| Прозрачность | Отсутствует |
| Потоковая передача и прогрессивная загрузка | Потоковое воспроизведение построчно |
Техническая матрица сравнения: PGM против конкурентов
| Технический атрибут | PGM (Текущий) | PBM | PPM | PNG |
|---|---|---|---|---|
| Цветовой режим | Оттенки серого (8-бит / 16-бит) | 1-битный монохромный | Полноцветный RGB (24-бит / 48-бит) | Оттенки серого, RGB, RGBA |
| Родственный формат Netpbm | PGM (Переносной полутоновый растр) | PBM (Переносимый битовый растр) | PPM (Переносимая пиксельная карта) | Стандарт W3C вне Netpbm |
| Сигнатурные байты | P2 (ASCII) / P5 (Двоичный) | P1 (ASCII) / P4 (Двоичный) | P3 (ASCII) / P6 (Двоичный) | ‰PNG.... |
| Сжатие | Без сжатия | Без сжатия | Без сжатия | Сжатие Deflate без потерь |
Типичные режимы повреждения и руководство по восстановлению в HEX
Изображение отображается инвертированным или полностью засвеченным белым цветом.
Первопричина: Несоответствие параметра 'maxval' в заголовке (например, maxval объявлен как 1 вместо 255).
Восстановление: Исправьте строку заголовка maxval или выполните перекодирование с помощью конвертера Netpbm от File2File.
Анализ безопасности и векторы атак на парсер
Декодеры PGM должны тщательно проверять, соответствуют ли разобранные счетчики пикселей заявленным размерам, чтобы предотвратить переполнение буфера.
Известные векторы атак
- Переполнение целых чисел при выделении буфера ширины на высоту на (maxval > 255 ? 2 : 1).
- Чтение за пределами буфера при чтении поврежденных токенов чисел ASCII.
- Отказ в обслуживании из-за огромного выделения памяти, вызванного сфабрикованными размерами в заголовке.
Защитные лучшие практики: Ограничивайте максимально допустимые размеры и пределы выделения памяти перед чтением потоков пикселей.
Исторические истоки и вехи
Ключевые преимущества и плюсы
- Нулевая сложность: чрезвычайно простые синтаксический анализ и запись на C, Python или WebAssembly без внешних библиотек.
- Встроенная поддержка 16-битных оттенков серого делает его идеальным для карт высот, карт глубин и тепловизионной съемки.
- Режим ASCII (P2) позволяет напрямую просматривать и изменять исходные значения пикселей в стандартных текстовых редакторах.
Технические ограничения и минусы
- Отсутствие сжатия: большой объем файлов по сравнению со сжатыми форматами вроде PNG.
- Отсутствуют метаданные о физических размерах, цветовых пространствах или геолокации.
- Строго одноканальный: невозможно хранить цветные данные или альфа-прозрачность.
Интересные технические факты
- OpenCV, ROS (Robot Operating System) и системы машинного зрения часто используют PGM для навигационных карт SLAM.
- Разработчики игр часто используют 16-битные файлы PGM в качестве карт высот ландшафта, так как исходные данные о рельефе не сжаты и просты в загрузке.
- Параметр 'maxval' в заголовке определяет максимальное значение яркости (обычно 255 для 8-битного или 65535 для 16-битного формата).
Часто задаваемые технические вопросы
Для чего используется формат PGM?
PGM в основном используется в компьютерном зрении (OpenCV), робототехнике (файлы карт ROS), научных исследованиях и генерации карт высот 3D-ландшафтов.
В чем разница между файлами PGM P2 и P5?
P2 представляет собой простой текст ASCII, где каждый пиксель записан в виде числа, в то время как P5 сохраняет пиксели в виде компактных двоичных байтов.
Как я могу конвертировать PGM в JPG или PNG?
Загрузите свой файл PGM на File2File.app, чтобы конвертировать его в формат PNG или JPG прямо в вашем браузере с соблюдением полной конфиденциальности.