Dokumentacja formatu PGM(5) File Formats Manual Dokumentacja formatu PGM(5) NAZWA pgm - format obrazu Netpbm w skali szarosci OPIS Program jest czescia Netpbm(1). Format PBM jest najmniejszym wspolnym mianownikiem dla monochromatycznego formatu pliku. Zostal zaprojektowany, aby byl niezmiernie latwy do nauczenia i pisania programow jego obslugi. (Jest tak prosty, ze wiekszosc ludzi po prostu zastosuje inzynierie odwrotna poniewaz jest to prostsze niz czytanie tej dokumentacji). Obraz PGM reprezentuje graficzny obraz w odcieniach szarosci. Istnieje wiele formatow pseudo-PGM, rozniacych sie od opisanego tutaj znaczeniem poszczegolnych wartosci pikseli. Dla wiekszosci celow obraz PGM mozna sobie wyobrazic jako tablice dowolnych liczb typu integer, i wszystkie programy swiata, ktore mysla, ze przetwarzaja obraz w odcieniach szarosci, moga byc prosto oszukane, by procesowac cokolwiek innego. Nazwa ,,PGM" jest akronimem, pochodzacym od slow ,,przenosna mapa szarosci" (,,Portable Gray Map"). Jednym z oficjalnych wariantow PGM jest maska przezroczystosci. W bibliotece netpbm maska przezroczystosci jest reprezentowana przez obraz PGM, ktory zamiast intensywnosci pikseli ma zapisane wartosci nieprzezroczystosci. Patrz nizej. FORMAT Definicja formatu jest jak nastepuje. Mozna skorzystac z biblioteki podprogramu C libnetpbm(1), aby latwo i dokladnie odczytywac i interpretowac format. Plik PGM sklada sie z sekwencji jednego lub wiecej obrazow PGM. Nie wystepuja zadne inne dane, separatory i wyrownania przed obrazami, po nich ani miedzy nimi. W sklad kazdego obrazu PGM wchodza: o A 'magic number' for identifying the file type. A pgm image's magic number is the two characters 'P5'. o Biala spacja (spacje, tabulacje, CR, LF). o Szerokosc, sformatowana jako dziesietne znaki ASCII. o Biala spacja. o Wysokosc, sformatowana jako dziesietne znaki ASCII. o Biala spacja. o Maksymalna wartosc szarosci (maxval), znow jako dziesietne ASCII. Musi byc mniejsza od 65536 i wieksza od zera. o Pojedynczy znak bialej spacji (zwykle znak nowego wiersza). o Raster o Wysokosci wierszy, w kolejnosci od gory do dolu. Kazdy wiersz sklada sie z Szerokosci wartosci szarosci, w kolejnosci od lewej do prawej. Kazda wartosc szarosci jest liczba od zera do pewnej wartosci maksymalnej, gdzie 0 oznacza czern, a wartosc maksymalna - biel. Kazda wartosc szarosci jest reprezentowana binarnie albo na jednym bajcie albo na dwoch bajtach. Jesli wartosc maksymalna jest mniejsza niz 256, bedzie to jeden bajt. W przeciwnym wypadku sa uzywane dwa bajty. Najbardziej znaczacy bajt jest podawany pierwszy. Wiersz jest poziomy. Kolumna jest pionowa. Piksele w obrazie sa kwadratowe i ciagle. Kazda wartosc szarosci jest numerem proporcjonalnym do intensywnosci piksela, wyrownanej przez funkcje transferu gamma ITU-R Recommendation BT.709. (Ta funkcja transferu okresla numer gamma jako 2.2 i ma liniowa sekcje dla niskich intensywnosci). Wartosc 0 oznacza czern. Maksymalna wartosc reprezentuje kolor bialy CIE D65 i najbardziej intensywny kolor w obrazie i w jakimkolwiek innym obrazie, z ktorym mozna by porownac biezacy 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. Roznice w prostym formacie sa nastepujace: o Plik zawiera dokladnie jeden obraz. o "Magiczny numer" to "P2" zamiast "P5". o Kazda piksel w rastrze jest reprezentowany jako numer dziesietny ASCII (dowolnego rozmiaru). o Kazdy piksel w rastrze ma bialy znak przed i po. Pomiedzy dwoma dowolnymi pikselami musi wystepowac przynajmniej jeden bialy znak, ale nie ma gornego ograniczenia na liczbe bialych znakow. o Linia nie powinna byc dluzsza niz 70 znakow. Oto przyklad malego 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 koncu kazdego wiersza znajduje sie 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 wartosc image/x-portable-graymap. Prosze zauwazyc, ze image/x-portable-anymap dotyczy tez 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. ZGODNOSC Przed kwietniem 2000 roku, plik w surowym formacie PGM nie mogl miec maksymalnej wartosci wiekszej niz 255. Dlatego nie mogl przechowywac wiecej niz jednego bajtu na probke. Stare programy moga od tego zalezec. Przed lipcem 2000 roku plik PGM mogl zawierac tylko jeden obraz. W wyniku tego wiekszosc narzedzi przetwarzajacych pliki PGM ignoruje (nie czyta) danych po pierwszym obrazie. ZOBACZ TAKZE pnm(1) , pbm(1) , ppm(1) , pam(1) , libnetpbm(1) , programs that process PGM(1) , AUTOR Copyright (C) 1989, 1991 Jef Poskanzer. ZRODLO DOKUMENTU Niniejsza strone podrecznika wygenerowano za pomoca narzedzia Netpbm ,,makeman" ze zrodel HTML. Glowna dokumentacja jest dostepna pod adresem http://netpbm.sourceforge.net/doc/pgm.html TLUMACZENIE Tlumaczenie niniejszej strony podrecznika: Przemek Borys , Robert Luberda i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . dokumentacja netpbm 27 November 2013 Dokumentacja formatu PGM(5)