Informacje o plikach PBM
PBM to prawdopodobnie najprostszy format obrazu na świecie. Składa się wyłącznie z cyfr 0 i 1, a każda z nich odpowiada jednemu pikselowi. Wiersz i kolumna w tekście określają pozycję na obrazie. Dzięki temu obrazy można tworzyć nawet za pomocą edytora tekstu. To prawie tak, jakby malować ołówkiem na papierze w kratkę. PBM nie obsługuje kompresji, kanałów alfa ani kolorów. Nie obsługuje nawet skali szarości. Może po prostu narysować piksel (1) albo nie (0).
TLDR:
Pliki PBM są częścią większej rodziny formatów. Ten format i jego „rodzeństwo” są nadal w użyciu, ale nie nadają się zbyt dobrze do udostępniania i długoterminowej archiwizacji. Są duże, obsługuje je niewiele programów, ale są bardzo elastyczne i wydajne. Kto znajdzie plik PBM, prawdopodobnie ma w rękach produkt pośredni lub obraz stworzony do celów dydaktycznych. Format PBM bardzo dobrze nadaje się bowiem do prezentacji, jest praktycznie oczywisty.
Historia plików PBM
PBM został wymyślony w latach 80. przez Jefa Poskanzera, programistę z Berkeley, który chciał rozwiązać prosty problem: wysyłanie obrazów pocztą elektroniczną. W latach 80. poczta elektroniczna nie była jeszcze tak rozwinięta jak dzisiaj. Niezawodnie można było wysyłać tylko znaki ASCII, a pliki binarne, takie jak obrazy, często ulegały uszkodzeniu podczas przesyłania. Poskanzer zaprojektował więc PBM, format obrazu, który rozwiązał właśnie ten problem.
Budowa techniczna
Obraz PBM w wersji zwykłej (P1) składa się dokładnie z trzech części: liczby magicznej, wymiarów i samych danych pikseli. Opcjonalnie można używać komentarzy, np. dotyczących treści.
| Składnik | Przykład | Znaczenie |
|---|---|---|
| Liczba magiczna | P1 |
Plain PBM (wersja ASCII) |
| Komentarz | # mein bild |
Opcjonalnie, z # wstępem |
| Szerokość Wysokość | 24 7 |
Wymiary w pikselach |
| Dane rastrowe | 0 1 1 0 ... |
1 = czarny, 0 = biały |
Poniższy przykład przedstawia kompletny obraz z dokumentacji:
P1 # feep.pbm 24 7 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 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 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
(cyfry 0 są nieco ciemniejsze wyłącznie w celu lepszej wizualizacji)
Pomiędzy zerami i jedynkami wyraźnie widać tekst FEEP. PBM odpowiada zatem binarnemu kodowi ASCII ;).
Plain vs. Raw: P1 i P4
Poskanzer wprowadził później wersję binarną i uczynił ją standardowym formatem wyjściowym narzędzi Netpbm. Wersja zwykła (P1) pojawiła się jako pierwsza, ale została wycofana ze względu na znacznie większe zapotrzebowanie na miejsce („lavishly wasteful” – „niezwykle marnotrawna”).
| Właściwości | Plain PBM (P1) |
Raw PBM (P4) |
|---|---|---|
| Dane pikselowe | Znaki ASCII 0 i 1 |
bity, 8 na bajt |
| Czytelne dla człowieka | Tak, w całości | Tylko nagłówek |
| Miejsce na dysku na piksel | ~2 bajty (znak + spacja) | 1/8 bajta (1 bit) |
| Maks. długość wiersza | Zalecane 70 znaków | Bez ograniczeń |
| Obrazy na plik | Dokładnie 1 | Możliwe jest więcej (od lipca 2000 r.) |
Obecnie cała rodzina PBM, a w szczególności PPM, jest często wykorzystywana jako format pośredni. W najprostszym i najkrótszym ze wszystkich przypadków zastosowań plik ten istnieje jedynie w potoku między dwoma programami, a więc tylko na czas samego wykonywania. To prowadzi nas do mocnych stron tego formatu:
Zalety plików PBM
- Brak zależności: brak dekodera, brak biblioteki. Kilka linii kodu w języku C, Python lub shell wystarczy do odczytu i zapisu.
- Filozofia Uniksa: narzędzia PBM to filtry. Łączy się je ze sobą za pomocą potoku:
cat bild.pbm | pbmtopgm | ppmtojpeg > out.JPG. Ponad 330 programów w pakiecie Netpbm działa w ten sposób. - Dydaktyka: Kto chce zrozumieć przetwarzanie obrazu (nie edycję obrazu), powinien idealnie zacząć od PBM.
- Solidność: brak uszkodzonego nagłówka, brak uszkodzonego fragmentu. Zawartość pliku jest tak niewielka, że prawie nic nie może pójść nie tak. A jeśli jednak coś się zepsuje, obraz pozostaje czytelny.
Rodzina PBM
PBM nie jest jedynym formatem. Pod koniec 1988 roku Poskanzer rozszerzył rodzinę o PGM (Portable Gray Map, skala szarości, liczba magiczna P2/P5) oraz PPM (Portable Pixel Map, kolory RGB, P3/P6). Razem tworzą one PNM: Portable Any Map. Później pojawił się jeszcze PAM (P7) jako uniwersalne rozszerzenie.
PBM jest fundamentem, a także „najbardziej radykalnym” przedstawicielem rodziny i oferuje tylko dwie możliwości: światło włączone lub wyłączone – piksel obecny lub nieobecny. Bez kolorów, bez przezroczystości, bez odcieni szarości. Tylko czarno-biały obraz, który można odczytać bezpośrednio w kodzie źródłowym.
Pbmplus i Netpbm
Poskanzer zajmował się Pbmplus aż do jego ostatniej publikacji pod koniec 1991 roku. Potem projekt przestał być rozwijany. W 1993 roku powstał Netpbm jako fork społecznościowy, w zasadzie przepakowanie Pbmplus z poprawkami błędów i rozszerzeniami od programistów z całego świata. Od 1999 roku Netpbm jest utrzymywany przez Bryana Hendersona i obecnie znajduje się praktycznie w każdej dystrybucji Linuksa.
PBM jako takie odeszło do lamusa. Serwery pocztowe bez problemu radzą sobie z plikami JPG, PNG, a nawet filmami. Jednak „kolorowa” wersja ppm jest używana na co dzień, w potokach, na systemach Linux. PBM pozostaje w sferze edukacyjnej: można je świetnie wyjaśnić, świetnie zrozumieć i – tak proste jest PBM – narysować na papierze w kratkę.
Źródła
Netpbm Specyfikacja formatu PBM
Netpbm Historia – bardzo warty przeczytania artykuł o historii pbm
Wiki: Jef Poskanzer
Konwertuj, otwieraj i edytuj pliki PBM
Szczegółowe informacje o plikach PBM
- Oprogramowanie do otwierania plików PBM
- Oprogramowanie do edycji plików PBM
- Typ MIME dla PBM
Brak komentarzy