Portable Graymap (.pgm)
Стандарт СтандартPortable Graymap Format (PGM) - це специфікація зображень у відтінках сірого із сімейства Netpbm, яка широко використовується в комп'ютерному зорі, робототехніці, оптичному контролі та алгоритмах цифрової обробки зображень.
Аналіз та метадані
Операційні системи та аналізатори файлів ідентифікують файли PGM, перевіряючи початкову послідовність бінарних байтів:
Сигнатура заголовка на байтовому рівні (Magic Bytes)
Операційні системи та аналізатори файлів ідентифікують файли PGM, перевіряючи початкову послідовність бінарних байтів:
ШІСТНАДЦЯТКОВА СИГНАТУРА (ЗСУВ 0):
50 32 / 50 35ASCII-УЯВЛЕННЯ: P2 / P5
Стандартизація: Стандарт бібліотеки Netpbm
Технічні характеристики
| Архітектура контейнера | ASCII (P2) або двійковий (P5) формат Netpbm з шириною, висотою, максимальним значенням сірого та потоком пікселів |
| Стиснення | Нестиснені сирі двійкові байти або зручні для читання людиною числові тексти ASCII |
| Порядок байтів (Endianness) | Прямий порядок байтів (для 16-бітних двійкових вибірок у режимі P5) |
| Колірні простори | Лінійні відтінки сірого або sRGB відтінки сірого |
| Канали та структура | 1 канал у відтінках сірого (8-бітна або 16-бітна точність) |
| Максимальні розміри | Практично необмежено (підтримує довільний 64-бітний координатний простір) |
| Прозорість | Відсутня |
| Потокове та прогресивне завантаження | Послідовне відтворення потоку рядок за рядком |
Технічна матриця порівняння: PGM проти конкурентів
| Технічний атрибут | PGM (Поточний) | PBM | PPM | PNG |
|---|---|---|---|---|
| Колірний режим | Відтінки сірого (8-біт / 16-біт) | 1-бітний монохром | RGB Truecolor (24-біт / 48-біт) | Відтінки сірого, RGB, RGBA |
| Споріднений формат Netpbm | PGM (Переносний відтінок сірого) | PBM (Переносний бітмап) | PPM (Переносний піксельмап) | Стандарт W3C поза Netpbm |
| Магічні байти | P2 (ASCII) / P5 (Двійковий) | P1 (ASCII) / P4 (Двійковий) | P3 (ASCII) / P6 (Двійковий) | ‰PNG.... |
| Стиснення | Нестиснене | Нестиснене | Нестиснене | Deflate без втрат |
Типові режими пошкодження та посібник з відновлення в шістнадцятковому форматі
Зображення відображається інвертованим або повністю засвіченим білим кольором.
Першопричина: Невідповідність параметра '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 безпосередньо у своєму браузері з повною конфіденційністю.