Scroll to navigation

ppm(5) File Formats Manual ppm(5)

NAZWA

ppm - przenośny format pixmap

OPIS

Jest to prosty format pixmapowy 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.

Należy także zauważyć, że często pliki są zgodne z tym formatem pod każdym względem, z wyjątkiem precyzyjnego znaczenia wartości próbek. Pliki te są użyteczne z powodu sposobu, w jakim PPM jest używany jako format pośredni. Nieformalnie są nazywane plikami PPM, ale żeby być absolutnie precyzyjnym należałoby je nazywać wariantami prawdziwego PPM. Na przykład "PPM używający takich kolorów czerwonego, zielonego i niebieskiego, których używa dany skaner".

Definicja formatu jest następująca:

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ą:

  • "Numer magiczny", określający rodzaj pliku. Numerem magicznym ppm są dwa znaki: "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.
  • Znak nowej linii lub inny znak białej spacji.
  • Raster o rozmiarze szerokość * wysokość pikseli, przetwarzany w normalnym porządku czytania tekstu. 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.
  • W rastrze wartości próbek są "nieliniowe". Są proporcjonalne do natężenia CIE Rec. 709 kolorów czerwonego, zielonego i niebieskiego w pikselu, wyrównanego przez funkcję transferu gamma CIE Rec. 709. (Ta funkcja transferu określa numer gamma jako 2.2 i ma liniową sekcję dla niskich intensywności). Maksymalna wartość tych trzech próbek reprezentuje kolor biały CIE D65 i najbardziej intensywny kolor w uniwersum kolorów, którego częścią jest ten obraz (uniwersum kolorów oznacza wszystkie możliwe kolory we wszystkich obrazach, z którymi można by porównać bieżący obraz).
  • Proszę zauważyć, że zwyczajową wariacją formatu PPM jest "liniowe" wymienianie wartości próbek, tj. tak jak podano powyżej, z wyjątkiem braku wyrównania gamma. pnmgamma potrafi przyjąć plik PPM w takim wariancie na wejściu i wyprodukować prawdziwy plik PPM na wyjściu.

  • Znaki od "#" do znaku końca linii, przed linią maxval są ignorowane jako komentarze.

Proszę zauważyć, że można użyć pnmdepth do konwersji pomiędzy formatami używającymi 1 bajtu na próbkę i 2 bajtów na próbkę.

Istnieje także jeszcze jedna, dość rzadko spotykana, wersja formatu PPM: "czysty" format PPM. Format opisany powyżej, który generalnie uważa się za zwykły format, jest znany jako format "surowy". pbm(5) zawiera komentarze na temat relacji pomiędzy formatem czystym a surowym.

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 pixmapy 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

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

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

giftopnm(1), gouldtoppm(1), ilbmtoppm(1), imgtoppm(1), mtvtoppm(1), pcxtoppm(1), pgmtoppm(1), pi1toppm(1), picttoppm(1), pjtoppm(1), qrttoppm(1), rawtoppm(1), rgb3toppm(1), sldtoppm(1), spctoppm(1), sputoppm(1), tgatoppm(1), ximtoppm(1), xpmtoppm(1), yuvtoppm(1), ppmtoacad(1), ppmtogif(1), ppmtoicr(1), ppmtoilbm(1), ppmtopcx(1), ppmtopgm(1), ppmtopi1(1), ppmtopict(1), ppmtopj(1), ppmtopuzz(1), ppmtorgb3(1), ppmtosixel(1), ppmtotga(1), ppmtouil(1), ppmtoxpm(1), ppmtoyuv(1), ppmdither(1), ppmforge(1), ppmhist(1), ppmmake(1), ppmpat(1), ppmquant(1), ppmquantall(1), ppmrelief(1), pnm(5), pgm(5), pbm(5)

AUTOR

Copyright (C) 1989, 1991 Jef Poskanzer.

TŁUMACZENIE

Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys <pborys@dione.ids.pl> i Robert Luberda <robert@debian.org>

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 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

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

8 kwietnia 2000