Все о файлах PGM
простой формат для изображений в оттенках серого
PGM — это формат с оттенками серого из семейства PBM. В то время как PBM поддерживает только черный и белый цвета, PGM позволяет отображать до 65 535 оттенков между этими двумя крайними значениями. Каждый пиксель описывается одним числовым значением: 0 — это черный, максимальное значение — белый. PGM означает «Portable Gray Map» и был разработан в конце 1988 года Джефом Посканзером как расширение PBM. Об истории всего семейства форматов см. мою статью о PBM.
TLDR:
PGM — это формат оттенков серого из семейства Netpbm. Он работает так же, как PBM, только с более чем двумя «цветами» — именно с оттенками серого. PGM до сих пор используется в обработке изображений, в образовании и в качестве промежуточного формата в конвейерах. Кто знаком со статьей о PBM, тот знает принцип: PGM просто делает его более серым. Цветная версия, в конце концов, — это PPM.
Техническое устройство
Изображение PGM отличается от PBM ровно одной дополнительной строкой в заголовке: максимальным значением (Maxval). Оно определяет, сколько оттенков серого использует изображение. С помощью PGM также можно рисовать изображение на «клеточной бумаге». Вместо того, чтобы раскрашивать квадратики, здесь в каждом квадратике используются числа, представляющие яркость.
| Состав | Пример | Значение |
|---|---|---|
| Магическое число | P2 |
Plain PGM (ASCII-вариант) |
| Комментарий | # mein bild |
Опционально, с # введением |
| Ширина Высота | 24 7 |
Размеры в пикселях |
| Максимальное значение | <15 |
Максимальное значение серого (1–65535) |
| Растровые данные | 0 2 4 6 ... |
Значения серого на пиксель |
Классический пример FEEP в формате PGM выглядит так: каждая буква получает свою собственную яркость. (Для лучшего отображения с моноширинным шрифтом я выбрал Maxval равным 8)
P2 # feep.pgm 24 7 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 4 4 4 4 0 0 6 6 6 6 0 0 8 8 8 8 0 0 2 0 0 0 0 0 4 0 0 0 0 0 6 0 0 0 0 0 8 0 0 8 0 0 2 2 2 0 0 0 4 4 4 0 0 0 6 6 6 0 0 0 8 8 8 8 0 0 2 0 0 0 0 0 4 0 0 0 0 0 6 0 0 0 0 0 8 0 0 0 0 0 2 0 0 0 0 0 4 4 4 4 0 0 6 6 6 6 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Текст FEEP можно распознать, как и в примере PBM, но буквы становятся светлее слева направо: F — темно-серый (2), E — средне-серый (4 и 6), P — белый (8).
Maxval: решающее отличие между PBM и PGM
Maxval определяет глубину цвета изображения. Кстати, при Maxval 1 PGM ведет себя точно так же, как PBM. При Maxval 255 получается 256 оттенков серого, что соответствует классическому 8-битному изображению в оттенках серого. Возможны значения выше 255 (до 65535), но на практике они редко используются.
Plain vs. Raw: P2 и P5
Так же, как и в случае с PBM, у PGM есть ASCII- и двоичный варианты:
| Свойство | Plain PGM (P2) |
Raw PGM (P5) |
|---|---|---|
| Данные пикселей | Десятичные числа ASCII | Двоичные, 1 или 2 байта на пиксель |
| Удобно для чтения | Да, полностью | Только заголовок |
| Объем памяти на пиксель | Переменный (цифры + пробелы) | 1 байт (макс. значение ≤ 255) или 2 байта |
| Макс. длина строки | Рекомендуется 70 символов | Без ограничений |
Вариант RAW (P5) является стандартом для инструментов Netpbm. При Maxval более 255 используется два байта на пиксель, Big-Endian.
Типичные области применения
PGM используется везде, где важна только яркость каждого пикселя, а цвет не играет роли:
— Наука и медицина: рентгеновские снимки, МРТ-сканы и микроскопические изображения часто обрабатываются как изображения в оттенках серого. PGM подходит для этого благодаря своей простоте и хранению без потерь.
— Компьютерное зрение: детекторы краев (Собел, Канни), пороговое сравнивание и анализ гистограмм работают с данными в оттенках серого. PGM предоставляет их без накладных расходов.
— Карты высот и модели рельефа: каждый пиксель представляет высоту — это случай применения, который идеально подходит к логике PGM «одно значение на пиксель».
— Маски прозрачности: в Netpbm формат PGM также используется в качестве маски прозрачности. При этом белый цвет означает полную непрозрачность, а черный — полную прозрачность.
— Обучение: как и PBM, формат PGM отлично подходит для преподавания основ обработки изображений (не редактирования изображений).
Гамма и цветовое пространство
Согласно спецификации, значения серого не являются линейными, а следуют функции передачи гаммы согласно ITU-R BT.709 (гамма 2.2). Однако на практике многие программы не соблюдают это и записывают линейные значения. Инструмент Netpbm pnmgamma может конвертировать между этими двумя вариантами. Даже более распространенная в настоящее время функция передачи sRGB слегка отличается от BT.709, и на самом деле большинство программ просто используют sRGB и называют результат PGM.
Источники
Спецификация формата Netpbm PGM
Статья о PBM с историей семейства форматов
.b0 { color: #ccc; }
.b2 {color: #222; }
.b4 {color:#444;}
.b6 {color:#666;}
.b8 { color: #888; }
const el = document.getElementById('pgm');
el.innerHTML = el.textContent.replace(/([0-9])/g, '<span class="b$1">$1</span>');
Конвертируйте, открывайте и редактируйте файлы PGM
Информация о файлах PGM
- Программное обеспечение для открытия файлов PGM
- IrfanView
- XnView
- GIMP
- ImageMagick
- Программное обеспечение для редактирования файлов PGM
- GIMP
- ImageMagick
- Paint.NET
- MIME-тип для PGM
- image/x-portable-graymap
- image/x-pgm
Комментариев нет