Dokumentacja formatu PGM(5)

NAZWA
pgm - format obrazu Netpbm w skali szarości

OPIS

Program jest częścią Netpbm(1).

Format PBM jest najmniejszym wspólnym mianownikiem dla monochromatycznego formatu pliku. Został zaprojektowany, aby był niezmiernie łatwy do nauczenia i pisania programów jego obsługi. (Jest tak prosty, że większość ludzi po prostu zastosuje inżynierię odwrotną ponieważ jest to prostsze niż czytanie tej dokumentacji).

Obraz PGM reprezentuje graficzny obraz w odcieniach szarości. Istnieje wiele formatów pseudo-PGM, różniących się od opisanego tutaj znaczeniem poszczególnych wartości pikseli. Dla większości celów obraz PGM można sobie wyobrazić jako tablicę dowolnych liczb typu integer, i wszystkie programy świata, które myślą, że przetwarzają obraz w odcieniach szarości, mogą być prosto oszukane, by procesować cokolwiek innego.

Nazwa „PGM” jest akronimem, pochodzącym od słów „przenośna mapa szarości” („Portable Gray Map”).

Jednym z oficjalnych wariantów PGM jest maska przezroczystości. W bibliotece netpbm maska przezroczystości jest reprezentowana przez obraz PGM, który zamiast intensywności pikseli ma zapisane wartości nieprzezroczystości. Patrz niżej.

FORMAT

Definicja formatu jest jak następuje. Można skorzystać z biblioteki podprogramu C libnetpbm(1), aby łatwo i dokładnie odczytywać i interpretować format.

Plik PGM składa się z sekwencji jednego lub więcej obrazów PGM. Nie występują żadne inne dane, separatory i wyrównania przed obrazami, po nich ani między nimi.

W skład każdego obrazu PGM wchodzą:

•   A 'magic number' for identifying the file type. A pgm image's magic number is the two characters 'P5'.

•   Biała spacja (spacje, tabulacje, CR, LF).

•   Szerokość, sformatowana jako dziesiętne znaki ASCII.

•   Biała spacja.

•   Wysokość, sformatowana jako dziesiętne znaki ASCII.

•   Biała spacja.

•   Maksymalna wartość szarości (maxval), znów jako dziesiętne ASCII. Musi być mniejsza od 65536 i większa od zera.

•   Pojedynczy znak białej spacji (zwykle znak nowego wiersza).

•   Raster o Wysokości wierszy, w kolejności od góry do dołu. Każdy wiersz składa się z Szerokości wartości szarości, w kolejności od lewej do prawej. Każda wartość szarości jest liczbą od zera do pewnej wartości maksymalnej, gdzie 0 oznacza czerń, a wartość maksymalna - biel. Każda wartość szarości jest reprezentowana binarnie albo na jednym bajcie albo na dwóch bajtach. Jeśli wartość maksymalna jest mniejsza niż 256, będzie to jeden bajt. W przeciwnym wypadku są używane dwa bajty. Najbardziej znaczący bajt jest podawany pierwszy.

    Wiersz jest poziomy. Kolumna jest pionowa. Piksele w obrazie są kwadratowe i ciągłe.

    Każda wartość szarości jest numerem proporcjonalnym do intensywności piksela, wyrównanej przez funkcję transferu gamma ITU-R Recommendation BT.709. (Ta funkcja transferu określa numer gamma jako 2.2 i ma liniową sekcję dla niskich intensywności). Wartość 0 oznacza czerń. Maksymalna wartość reprezentuje kolor biały CIE D65 i najbardziej intensywny kolor w obrazie i w jakimkolwiek innym obrazie, z którym można by porównać bieżący obraz.

    Note that a common variation on the PGM format is to have the gray value be 'linear,' i.e. as specified above except without the gamma adjustment. pnmgamma takes such a PGM variant as input and produces a true PGM as output.

    In the transparency mask variation on PGM, the value represents opaqueness. It is proportional to the fraction of intensity of a pixel that would show in place of an underlying pixel. So what normally means white represents total opaqueness and what normally means black represents total transparency. In between, you would compute the intensity of a composite pixel of an 'under' and 'over' pixel as under * (1-(alpha/alpha_maxval)) + over * (alpha/alpha_maxval). Note that there is no gamma transfer function in the transparency mask.

Strings starting with '#' may be comments, the same as with PBM(1) .

Note that you can use pamdepth to convert between a the format with 1 byte per gray value and the one with 2 bytes per gray value.

All characters referred to herein are encoded in ASCII. 'newline' refers to the character known in ASCII as Line Feed or LF. A 'white space' character is space, CR, LF, TAB, VT, or FF (I.e. what the ANSI standard C isspace() function calls white space).

  Prosty PGM

There is actually another version of the PGM format that is fairly rare: 'plain' PGM format. The format above, which generally considered the normal one, is known as the 'raw' PGM format. See pbm(1) for some commentary on how plain and raw formats relate to one another and how to use them.

Różnice w prostym formacie są następujące:

•   Plik zawiera dokładnie jeden obraz.

•   "Magiczny numer" to "P2" zamiast "P5".

•   Każda piksel w rastrze jest reprezentowany jako numer dziesiętny ASCII (dowolnego rozmiaru).

•   Każdy piksel w rastrze ma biały znak przed i po. Pomiędzy dwoma dowolnymi pikselami musi występować przynajmniej jeden biały znak, ale nie ma górnego ograniczenia na liczbę białych znaków.

•   Linia nie powinna być dłuższa niż 70 znaków.

Oto przykład małego obrazu w formacie prostego PGM:
P2
# feep.pgm
24 7
15
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  3  3  3  3  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15 15 15 15  0
0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0 15  0
0  3  3  3  0  0  0  7  7  7  0  0  0 11 11 11  0  0  0 15 15 15 15  0
0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0  0  0
0  3  0  0  0  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15  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

Na końcu każdego wiersza znajduje się znak nowego wiersza.

Programs that read this format should be as lenient as possible, accepting anything that looks remotely like a PGM.

IDENTYFIKATOR INTERNETOWY (MIME)

Dla formatu PGM nie zarejestrowano internetowego identyfikatora formatu danych (Internet Media Type — MIME) w IANA, lecz konwencjonalna jest wartość image/x-portable-graymap.

Proszę zauważyć, że image/x-portable-anymap dotyczy też PNM.

NAZWA PLIKU

There are no requirements on the name of a PGM file, but the convention is to use the suffix '.pgm'. 'pnm' is also conventional, for cases where distinguishing between the particular subformats of PNM is not convenient.

ZGODNOŚĆ

Przed kwietniem 2000 roku, plik w surowym formacie PGM nie mógł mieć maksymalnej wartości większej niż 255. Dlatego nie mógł przechowywać więcej niż jednego bajtu na próbkę. Stare programy mogą od tego zależeć.

Przed lipcem 2000 roku plik PGM mógł zawierać tylko jeden obraz. W wyniku tego większość narzędzi przetwarzających pliki PGM ignoruje (nie czyta) danych po pierwszym obrazie.

ZOBACZ TAKŻE
pnm(1) , pbm(1) , ppm(1) , pam(1) , libnetpbm(1) , programs that process PGM(1) ,

AUTOR
Copyright (C) 1989, 1991 Jef Poskanzer.

ŹRÓDŁO DOKUMENTU
Niniejszą stronę podręcznika wygenerowano za pomocą narzędzia Netpbm „makeman” ze źródeł HTML. Główna dokumentacja jest dostępna pod adresem

    http://netpbm.sourceforge.net/doc/pgm.html

TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika: Przemek Borys <pborys@dione.ids.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 (https://www.gnu.org/licenses/gpl-3.0.html) lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.