Specificaii privind formatul PGM(5) File Formats Manual NUME pgm - formatul de imagine in tonuri de gri Netpbm DESCRIERE Acest program face parte din Netpbm(1). Formatul PGM este un format de fiier in tonuri de gri cu cel mai mic numitor comun. Este conceput pentru a fi extrem de uor de invaat i de scris programe pentru acesta; (este atat de simplu incat majoritatea oamenilor vor face pur i simplu inginerie inversa pentru ca este mai uor decat sa citeasca aceasta specificaie). O imagine PGM reprezinta o imagine grafica in tonuri de gri. Exista multe formate pseudo-PGM in uz, in care totul este aa cum este specificat aici, cu excepia semnificaiei valorilor individuale ale pixelilor.In cele mai multe scopuri, o imagine PGM poate fi considerata ca o matrice de numere intregi arbitrare, iar toate programele din lume care cred ca proceseaza o imagine in tonuri de gri pot fi cu uurina pacalite sa proceseze altceva. Numele "PGM" este un acronim derivat de la ,,Portable Gray Map" (harta de griri portabila. O varianta oficiala a PGM este masca de transparena. O masca de transparena in Netpbm este reprezentata de o imagine PGM, cu excepia faptului ca in locul intensitailor pixelilor exista valori de opacitate. A se vedea mai jos. FORMATUL Definiia formatului este urmatoarea. Putei utiliza biblioteca de subrutine libnetpbm(1) C pentru a citi i interpreta in mod convenabil i precis formatul. Un fiier PGM este format dintr-o secvena de una sau mai multe imagini PGM. Nu exista date, delimitatori sau umplutura inainte, dupa sau intre imagini. Fiecare imagine PGM este compusa din urmatoarele elemente: o Un ,,numar magic" pentru identificarea tipului de fiier. Numarul magic al unei imagini pgm este format din cele doua caractere ,,P5". o Spaiu alb (spaii goale, TAB-uri(tabulatoare), CR-uri(retururi de carucior), LF-uri(salturi de linie)). o O laime, formatata in caractere ASCII in zecimale. o Spaiu alb. o O inalime, din nou in format ASCII zecimal. o Spaiu alb. o Valoarea maxima a griului (Maxval), din nou in ASCII zecimal. Trebuie sa fie mai mica decat 65536 i mai mare decat zero. o Un singur caracter de spaiu alb (de obicei o linie noua). o Un raster de randuri de inalime, in ordine de sus in jos. Fiecare rand este format din valori gri ale laimii, in ordine de la stanga la dreapta. Fiecare valoare gri este un numar de la 0 la Maxval, 0 fiind negru i Maxval fiind alb. Fiecare valoare gri este reprezentata in binar pur prin 1 sau 2 octei. In cazul in care Maxval este mai mica de 256, aceasta reprezinta 1 octet. In caz contrar, este de 2 octei. Cel mai semnificativ octet este primul. Un rand al unei imagini este orizontal. O coloana este verticala. Pixelii din imagine sunt patrai i contigui. Fiecare valoare de gri este un numar proporional cu intensitatea pixelului, ajustata prin funcia de transfer gamma din Recomandarea ITU-R BT.709; (aceasta funcie de transfer specifica un numar gamma de 2,2 i are o seciune liniara pentru intensitai mici). Prin urmare, o valoare de zero reprezinta negru. O valoare de Maxval reprezinta albul CIE D65 i cea mai intensa valoare din imagine i din orice alta imagine cu care imaginea ar putea fi comparata. Reinei ca o variaie obinuita faa de formatul PGM este ca valoarea de gri sa fie ,,liniara", adica aa cum se specifica mai sus, dar fara ajustarea gamma. pnmgamma primete ca intrare o astfel de varianta PGM i produce ca ieire un PGM adevarat. In varianta de masca de transparena din PGM, valoarea reprezinta opacitatea. Ea este proporionala cu fraciunea de intensitate a unui pixel care ar aparea in locul unui pixel de baza. Astfel, ceea ce in mod normal inseamna alb reprezinta opacitate totala, iar ceea ce in mod normal inseamna negru reprezinta transparena totala. Intre aceste doua valori, se calculeaza intensitatea unui pixel compus dintr-un pixel ,,sub" i ,,peste" ca fiind sub * (1-(alfa/alfa_maxval)) + peste * (alfa/alfa_maxval). Reinei ca nu exista o funcie de transfer gamma in masca de transparena. irurile care incep cu ,,#" pot fi comentarii, la fel ca in cazul PBM(1) . Reinei ca putei utiliza pamdepth pentru a face conversia intre formatul cu 1 octet pe valoare de gri i cel cu 2 octei pe valoare de gri. Toate caracterele la care se face referire in prezentul document sunt codificate in ASCII. ,,linie noua" se refera la caracterul cunoscut in ASCII sub numele de ,,Line Feed" sau LF (salt de linie). Un caracter ,,spaiu alb" este un spaiu, CR, LF, TAB, VT sau FF (adica ceea ce funcia C isspace() din standardul ANSI numete ,,spaiu alb"). PGM simplu ,,plain" De fapt, exista o alta versiune a formatului PGM care este destul de rara: formatul PGM ,,simplu". Formatul de mai sus, care este considerat in general cel normal, este cunoscut sub numele de format PGM ,,brut". A se vedea pbm(1) pentru cateva comentarii privind modul in care formatele simplu i brut se raporteaza unul la celalalt i cum sa le utilizai. Diferena in format simplu este urmatoarea: o Exista exact o singura imagine intr-un fiier. o ,,Numarul magic" este ,,P2" in loc de ,,P5". o Fiecare pixel din raster este reprezentat ca un numar zecimal ASCII (de dimensiune arbitrara). o Fiecare pixel din raster are un spaiu alb inainte i dupa el. Trebuie sa existe cel puin un caracter de spaiu alb intre doi pixeli, dar nu exista un maxim. o Niciun rand nu trebuie sa aiba mai mult de 70 de caractere. Iata un exemplu de imagine mica in format simplu (plain) 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 La sfaritul fiecareia dintre aceste linii se afla un caracter de linie noua. Programele care citesc acest format trebuie sa fie cat se poate de indulgente, acceptand orice lucru care seamana cat de cat cu un PGM. TIP DE SUPORT INTERNET Nu a fost inregistrat la IANA niciun Internet Media Type (aka MIME type, content type) pentru PGM, dar valoarea image/x-portable-graymap este convenionala. Reinei ca se aplica i PNM Internet Media Type image/x-portable-anymap. NUME DE FIIER Nu exista cerine privind numele unui fiier PGM, dar convenia este de a utiliza sufixul ,,.pgm". ,,pnm" este, de asemenea, convenional, pentru cazurile in care nu este convenabil sa se faca distincia intre sub-formatele particulare ale PNM. COMPATIBILITATE Inainte de aprilie 2000, un fiier PGM in format brut nu putea avea o valoare maxima mai mare de 255. Prin urmare, acesta nu putea avea mai mult de un octet pe eantion. Programele vechi pot depinde de acest lucru. Inainte de iulie 2000, un fiier PGM putea conine cel mult o imagine. Ca urmare, majoritatea instrumentelor de procesare a fiierelor PGM ignorau (i nu citeau) niciun fel de date dupa prima imagine. CONSULTAI I pnm(1) , pbm(1) , ppm(1) , pam(1) , libnetpbm(1) , programs that process PGM(1) , AUTOR Drepturi de autor (C) 1989, 1991 pentru Jef Poskanzer. SURSA DOCUMENTULUI Aceasta pagina de manual a fost generata de instrumentul Netpbm <> din sursa HTML. Documentaia principala este la http://netpbm.sourceforge.net/doc/pgm.html TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . documentaia netpbm 27 noiembrie 2013 Specificaii privind formatul PGM(5)