Dokumentacja formatu PPM(5)

NAZWA
PPM - format obrazu kolorowego Netpbm

OPIS

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

Jest to prosty format PPM przeznaczony do obrazów kolorowych.

Należy zauważyć, że ten format jest strasznie niewydajny. Jest bardzo rozwlekły i zawiera wiele informacji, których ludzkie oko nie jest w stanie dostrzec. Co więcej, oprócz podstawowych kolorów format nie dostarcza więcej innych informacji, co oznacza, że oprócz pliku w tym formacie trzeba w innym miejscu przechowywać pozostałe informacje, tak żeby można było z tego sensownie korzystać. Jednakże w bardzo łatwy sposób można napisać i analizować programy przetwarzające ten format - i to jest główna zaleta.

It should also be noted that files often conform to this format in every respect except the precise semantics of the sample values. These files are useful because of the way PPM is used as an intermediary format. They are informally called PPM files, but to be absolutely precise, you should indicate the variation from true PPM. For example, 'PPM using the red, green, and blue colors that the scanner in question uses.'

Nazwa „PPM” jest akronimem słów „Przenośna Mapa Pikseli” („Portable Pixel Map”). Obrazy w tym formacie (lub jego poprzednikach) były niegdyś zwane również „przenośnymi pixmapami”.

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 PPM składa się z sekwencji jednego lub więcej obrazów PPM. Nie występują żadne inne dane, separatory i wyrównania przed obrazami, po nich ani między nimi.

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

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

•   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ść komponentu kolorowego (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 rozmiarze Wysokości wierszy, w kolejności od góry do dołu. Każdy wiersz składa się z Szerokości pikseli, od lewej do prawej. Każdy piksel jest trójką kolorów czerwonego, zielonego i niebieskiego, w tej właśnie kolejności. Każda próbka 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.

    In the raster, the sample values are 'nonlinear.' They are proportional to the intensity of the ITU-R Recommendation BT.709 red, green, and blue in the pixel, adjusted by the BT.709 gamma transfer function. (That transfer function specifies a gamma number of 2.2 and has a linear section for small intensities). A value of Maxval for all three samples represents CIE D65 white and the most intense color in the color universe of which the image is part (the color universe is all the colors in all images to which this image might be compared).

    ITU-R Recommendation BT.709 jest zmienioną nazwą wcześniejszej CCIR Recommendation 709. Gdy CCIR została wchłonięta w swoją organizację nadrzędną, ITU, około roku 2000, standard został przemianowany. Ten dokument odnosił się niegdyś do tego standardu jako CIE Rec. 709, lecz nie jest obecnie jasne, czy był to w ogóle standard CIE.

    Note that another popular color space is the newer sRGB. A common variation on PPM is to substitute this color space for the one specified.

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

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 sample and the one with 2 bytes per sample.

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 PPM

There is actually another version of the PPM format that is fairly rare: 'plain' PPM format. The format above, which generally considered the normal one, is known as the 'raw' PPM 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 „P3” zamiast „P6”.

•   Każda próbka w rastrze jest reprezentowana jako numer dziesiętny ASCII (dowolnego rozmiaru).

•   Każda próbka w rastrze ma biały znak przed i po. Pomiędzy dwoma dowolnymi próbkami musi występować przynajmniej jeden biały znak, ale nie ma górnego ograniczenia na liczbę białych znaków. Piksele nie są od siebie rozdzielane w jakiś szczególny sposób — wystarczy obowiązkowa separacja pomiędzy próbką białą jednego piksela a próbką czerwoną kolejnego piksela.

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

Oto przykład małego obrazu w tym formacie:
P3
# feep.ppm
4 4
15
 0  0  0    0  0  0    0  0  0   15  0 15
 0  0  0    0 15  7    0  0  0    0  0  0
 0  0  0    0  0  0    0 15  7    0  0  0
15  0 15    0  0  0    0  0  0    0  0  0

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

Programy, które odczytują ten format, powinny być jak najwyrozumialsze, akceptując wszystko, co z daleka wygląda na obraz PPM.

IDENTYFIKATOR INTERNETOWY (MIME)

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

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

NAZWA PLIKU

There are no requirements on the name of a PPM file, but the convention is to use the suffix '.ppm'. '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 PPM 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 PPM mógł zawierać tylko jeden obraz. W wyniku tego większość narzędzi przetwarzających pliki PPM ignoruje (nie czyta) danych po pierwszym obrazie.

ZOBACZ TAKŻE
pnm(1), pgm(1), pbm(1), pam(1); programy, które przetwarzają PPM

Ź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/ppm.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.