Scroll to navigation

Specificații privind formatul PPM(5) File Formats Manual Specificații privind formatul PPM(5)

NUME

PPM - formatul de imagine color Netpbm

DESCRIERE

Acest program face parte din Netpbm(1).

Formatul PPM este un format de fișier de imagine color cu cel mai mic numitor comun.

Trebuie remarcat faptul că acest format este extrem de ineficient. Este extrem de redundant, conținând în același timp o mulțime de informații pe care ochiul uman nici măcar nu le poate discerne. În plus, formatul permite foarte puține informații despre imagine în afară de culoarea de bază, ceea ce înseamnă că este posibil să trebuiască să cuplați un fișier în acest format cu alte informații independente pentru a obține o utilizare decentă din el. Cu toate acestea, este foarte ușor să scrieți și să analizați programe pentru a procesa acest format, iar acesta este scopul.

De asemenea, trebuie remarcat faptul că fișierele sunt adesea conforme cu acest format în toate privințele, cu excepția semanticii precise a valorilor eșantionului. Aceste fișiere sunt utile datorită modului în care PPM este utilizat ca format intermediar. Ele sunt denumite în mod informal fișiere PPM, dar pentru a fi absolut precis, trebuie să indicați variația față de PPM adevărat. De exemplu, „PPM folosind culorile roșu, verde și albastru pe care le folosește scanerul în cauză”.

Numele „PPM” este un acronim derivat de la „Portable Pixel Map” (hartă de pixeli portabilă). Imaginile în acest format (sau un precursor al acestuia) au fost odată numite și „pixmaps portabile”.

FORMATUL

Definiția formatului este următoarea. Puteți utiliza biblioteca de subrutine libnetpbm(1) C pentru a citi și interpreta în mod convenabil și precis formatul.

Un fișier PPM este format dintr-o secvență de una sau mai multe imagini PPM. Nu există date, delimitatori sau umplutură înainte, după sau între imagini.

Fiecare imagine PPM este compusă din următoarele elemente:

  • Un „număr magic” pentru identificarea tipului de fișier. Numărul magic al unei imagini ppm este format din cele două caractere „P6”.
  • Spațiu alb (spații goale, TAB-uri(tabulatoare), CR-uri(retururi de cărucior), LF-uri(salturi de linie)).

  • O lățime, formatată în caractere ASCII în zecimale.

  • Spațiu alb.

  • O înălțime, din nou în format ASCII zecimal.

  • Spațiu alb.

  • Valoarea maximă a culorii (Maxval), din nou în format ASCII zecimal. Trebuie să fie mai mică decât 65536 și mai mare decât zero.

  • Un singur caracter de spațiu alb (de obicei o linie nouă).

  • Un raster de rânduri de înălțime, în ordine de sus în jos. Fiecare rând este format din pixeli de lățime, în ordine de la stânga la dreapta. Fiecare pixel este un triplet de eșantioane de roșu, verde și albastru, în această ordine. Fiecare eșantion este reprezentat în binar pur prin 1 sau 2 octeți. În cazul în care Maxval este mai mică de 256, reprezintă 1 octet. În caz contrar, este de 2 octeți. Cel mai semnificativ octet este primul.

    Un rând al unei imagini este orizontal. O coloană este verticală. Pixelii din imagine sunt pătrați și contigui.

    În raster, valorile eșantionului sunt „neliniare”. Acestea sunt proporționale cu intensitatea de roșu, verde și albastru din recomandarea ITU-R BT.709 din pixel, ajustate de funcția de transfer gamma BT.709; (această funcție de transfer specifică un număr gamma de 2,2 și are o secțiune liniară pentru intensități mici). O valoare de Maxval pentru toate cele trei eșantioane reprezintă albul CIE D65 și cea mai intensă culoare din universul de culori din care face parte imaginea (universul de culori reprezintă toate culorile din toate imaginile cu care această imagine ar putea fi comparată).

    Gama de valori ale canalelor din BT.709 (16-240) este irelevantă pentru PPM.

    Recomandarea BT.709 a UIT-R este o redenumire a fostei Recomandări 709 a CCIR Când CCIR a fost absorbit de organizația mamă, UIT, în jurul anului 2000, standardul a fost redenumit. Acest document s-a referit cândva la standard ca fiind CIE Rec. 709, dar acum nu este clar dacă CIE a sponsorizat vreodată un astfel de standard.

    Rețineți că un alt spațiu de culoare popular este cel mai nou sRGB. O variație obișnuită față de PPM este înlocuirea acestui spațiu de culoare cu cel specificat. Puteți utiliza pnmgamma pentru a face conversia între această variație și adevăratul PPM.

    Rețineți că o variație obișnuită față de formatul PPM este ca valorile eșantioanelor să fie „liniare”, adică așa cum se specifică mai sus, dar fără ajustarea gamma. pnmgamma primește ca intrare o astfel de variantă PPM și produce ca ieșire un PPM adevărat.

Șirurile care încep cu „#” pot fi comentarii, la fel ca în cazul PBM(1).

Rețineți că puteți utiliza pamdepth pentru a face conversia între formatul cu 1 octet per eșantion și cel cu 2 octeți per eșantion.

Toate caracterele la care se face referire în prezentul document sunt codificate în ASCII. „linie nouă” se referă la caracterul cunoscut în ASCII sub numele de „Line Feed” sau LF (salt de linie). Un caracter „spațiu alb” este un spațiu, CR, LF, TAB, VT sau FF (adică ceea ce funcția C isspace() din standardul ANSI numește „spațiu alb”).

PPM simplu „plain”

De fapt, există o altă versiune a formatului PPM care este destul de rară: formatul PPM „simplu”. Formatul de mai sus, care este considerat în general cel normal, este cunoscut sub numele de format PPM „brut”. A se vedea pbm(1) pentru câteva comentarii privind modul în care formatele „plain” (simplu) și „raw” (brut) se raportează unul la celălalt și cum se utilizează.

Diferența în format simplu este următoarea:

  • Există exact o singură imagine într-un fișier.

  • „Numărul magic” este „P3” în loc de „P6”.

  • Fiecare eșantion din raster este reprezentat ca un număr zecimal ASCII (de mărime arbitrară).

  • Fiecare eșantion din raster are un spațiu alb înainte și după el. Între două eșantioane trebuie să existe cel puțin un caracter de spațiu alb, dar nu există un maxim. Nu există o separare specială a unui pixel de altul - doar separarea necesară între eșantionul albastru al unui pixel și eșantionul roșu al pixelului următor.

  • Niciun rând nu trebuie să aibă mai mult de 70 de caractere.

Iată un exemplu de o mică imagine în acest format.

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

La sfârșitul fiecăreia dintre aceste linii se află un caracter de linie nouă.

Programele care citesc acest format trebuie să fie cât se poate de indulgente, acceptând orice lucru care seamănă cât de cât cu o imagine PPM.

TIP DE SUPORT INTERNET

Nu a fost înregistrat la IANA niciun Internet Media Type (aka MIME type, content type) pentru PPM, dar valoarea image/x-portable-pixmap este convențională.

Rețineți că se aplică și PNM Internet Media Type image/x-portable-anymap.

NUME DE FIȘIER

Nu există cerințe privind numele unui fișier PPM, dar convenția este de a utiliza sufixul „.ppm”. „pnm” este, de asemenea, convențional, pentru cazurile în care nu este convenabil să se facă distincția între subformatele particulare ale PNM.

COMPATIBILITATE

Înainte de aprilie 2000, un fișier PPM în format brut nu putea avea o valoare maximă mai mare de 255. Prin urmare, acesta nu putea avea mai mult de un octet pe eșantion. Programele vechi pot depinde de acest lucru.

Înainte de iulie 2000, un fișier PPM putea conține cel mult o imagine. Ca urmare, majoritatea instrumentelor de procesare a fișierelor PPM ignorau (și nu citeau) niciun fel de date după prima imagine.

CONSULTAȚI ȘI

pnm(1), pgm(1), pbm(1), pam(1), programe care procesează PPM(1)

SURSA DOCUMENTULUI

Această pagină de manual a fost generată de instrumentul Netpbm «makeman» din sursa HTML. Documentația principală este la

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

TRADUCERE

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

9 octombrie 2019 documentația netpbm