Portable Graymap (.pgm)

Стандарт Стандарт

Portable Graymap Format (PGM): це специфікація зображень у відтінках сірого із сімейства Netpbm, яка широко використовується в комп'ютерному зорі, робототехніці, оптичному контролі та алгоритмах цифрової обробки зображень.

Аналіз та метадані

Операційні системи та аналізатори файлів ідентифікують файли PGM, перевіряючи початкову послідовність бінарних байтів:

Виберіть або перетягніть файли сюди

Приватно - файли ніколи не залишають ваш пристрій

або вставте Ctrl+V
Гарантія конфіденційності без передавання даних мережею: Жодного байта не передано на зовнішні сервери. Уся обробка відбувалася локально в ізольованому середовищі браузера.

Сигнатура заголовка на байтовому рівні (Magic Bytes)

Операційні системи та аналізатори файлів ідентифікують файли PGM, перевіряючи початкову послідовність бінарних байтів:

ШІСТНАДЦЯТКОВА СИГНАТУРА (ЗСУВ 0):

50 32 / 50 35

ПОДАННЯ В ASCII: P2 / P5

Стандартизація: Стандарт бібліотеки Netpbm

Технічні характеристики

Архітектура контейнераASCII (P2) або двійковий (P5) формат Netpbm з шириною, висотою, максимальним значенням сірого та потоком пікселів
СтисненняНестиснені сирі двійкові байти або зручні для читання людиною числові тексти ASCII
Порядок байтів (Endianness)Порядок байтів від старшого до молодшого (Big-Endian; для 16-бітних двійкових вибірок у режимі P5)
Колірні просториЛінійні відтінки сірого або відтінки сірого sRGB
Канали та структура1 канал у відтінках сірого (8-бітна або 16-бітна точність)
Максимальні розміриПрактично необмежено (підтримує довільний 64-бітний координатний простір)
ПрозорістьВідсутня
Потокове та прогресивне завантаженняПослідовне відтворення потоку рядок за рядком

Технічна матриця порівняння: PGM проти конкурентів

Технічний атрибутPGM (Поточний)PBMPPMPNG
Колірний режимВідтінки сірого (8-біт / 16-біт)1-бітний монохромПовноколірне RGB (24-біт / 48-біт)Відтінки сірого, RGB, RGBA
Споріднений формат NetpbmPGM (Переносний відтінок сірого)PBM (Переносний бітмап)PPM (Переносний піксельмап)Стандарт W3C поза Netpbm
Магічні байтиP2 (ASCII) / P5 (Двійковий)P1 (ASCII) / P4 (Двійковий)P3 (ASCII) / P6 (Двійковий)‰PNG....
СтисненняНестисненеНестисненеНестисненеDeflate без втрат

Типові режими пошкодження та посібник з відновлення в шістнадцятковому форматі

Зображення відображається інвертованим або повністю засвіченим білим кольором.

Першопричина: Невідповідність параметра 'maxval' у заголовку (наприклад, maxval оголошено як 1 замість 255).

Відновлення: Виправте рядок заголовка maxval або виконайте транскодування за допомогою конвертера Netpbm від File2File.app.

Аналіз безпеки та векторів атак на парсери

Декодери PGM повинні ретельно перевіряти, чи відповідає обчислена кількість пікселів заявленим розмірам, щоб запобігти переповненню буфера.

Відомі вектори атак

  • Переповнення цілих чисел під час виділення буфера ширина * висота * (maxval > 255 ? 2 : 1).
  • Читання за межами буфера під час читання пошкоджених ASCII-токенів чисел.
  • Відмова в обслуговуванні через масивне виділення пам'яті, спричинене сфабрикованими розмірами заголовка.

Рекомендації щодо захисту: Обмежуйте максимально допустимі розміри та ліміти виділення пам'яті перед читанням потоків пікселів.

Історичне походження та віхи

2000Стандартизовано 16-бітну глибину (максимальне значення до 65535) у двійковому режимі P5 для наукової візуалізації.
1993Включено до інструментарію Netpbm як стандартний проміжний формат у відтінках сірого.
1989Джеф Посканзер створює PGM на доповнення до PBM з повною підтримкою 256 рівнів сірого.

Основні переваги

  • Компактна структура PGM може спростити реалізацію базових засобів читання, але глибину зразків, заголовки та некоректні дані все одно потрібно обробляти уважно.
  • Вбудована підтримка 16-бітних відтінків сірого робить PGM ідеальним для карт висот, карт глибин і тепловізійних зображень.
  • Режим 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 зберігає зразки відтінків сірого. Перетворіть його на PNG для зображення без втрат із широкою підтримкою переглядачів або на JPEG, якщо потрібен менший файл для фото; конвертер працює у браузері.