Formate de Stocare a Imaginilor

20
Universitatea Ștefan cel Mare Suceava Facultatea de Inginerie Electrică și Știinta Calculatoarelor Master: Rețele de comunicații și calculatoare Anul I Formate de stocare a imaginilor

description

Formate de Stocare a Imaginilor

Transcript of Formate de Stocare a Imaginilor

Universitatea tefan cel Mare SuceavaFacultatea de Inginerie Electric i tiinta CalculatoarelorMaster: Reele de comunicaii i calculatoareAnul I

Formate de stocare a imaginilor

Ramacanu Andrei-Silviu

Cuprins............................................................................................................................................1Introducere.......................................................................................................................................21. Descrierea formatelor fiierelor de imagine................................................................................41.1. Formatul DIB (Device Independent Bitmap)....................................................41.2. Formatul BMP................................................51.2.1 Citirea unei imagini BMP....................................................................61.2.2 Scrierea unei imagini BMP..................................................................61.3 Formatul PCX..................................................................................................61.3.1 Codificarea RLE (Run-Length Encoded)..............................................71.3.2 Antetul fiierului PCX.........................................................................71.3.3 Citirea unui fiier PCX........................................................................91.4 Formatul GIF..................................................................................................101.5 Formatul TIFF (Tagged Image Format File).....................................................12Concluzii.........................................................................................................................................13Bibliografie.................................................................................................................................14

IntroducerePrelucrarea de imagini este un domeniu care i pstreaz dinamismul n ciuda trecerii anilor. Dezvoltrile tehnologice au facilitat accesul unui numr tot mai mare de oameni la aceast ramur fascinant a imagisticii computerizate.Sursa de provenienta a imaginilor poate fi un dispozitiv de achizitie (camera video, scanner, captor radar), dar poate fi la fel de bine si o ecuatie matematica, un ansamblu de date statistice etc. Exista doua motive principale pentru care se apeleaza la procesarea imaginilor:mbunatatirea calitatii unei imagini avnd drept scop o mai buna vizualizare pentru un operator uman. Aceasta poate nsemna: reducerea zgomotului si a altor defecte care pot fi prezente n imagine (datorate, de exemplu, dispozitivului de achizitie), evidentierea unor zone de interes prin modificare a luminozitatii, a contrastului, accentuarea muchiilor etc.;Extragerea de informatii dintr-o imagine, informatii care pot reprezenta intrarea pentru un sistem automat de recunoastere si clasificare. Aceste informatii pot fi: diferite distante si relatii dintre obiectele prezente n imagine, momente statistice, parametri geometrici (arie, perimetru, circularitate), coeficienti Fourier etc.O imagine este deci un semnal bidimensional; prin urmare prelucrarea imaginilor poate fi considerat i o ramur a prelucrrii digitale de semnal (care mai include prelucrearea audio, telecomunicatii etc.).Prelucrarea imaginilor include sau este legat mai multe discipline: -preluarea, compresia i stocarea imaginilor; -restaurarea i ameliorarea imaginilor prin corectii ajustri de contrast, filtrarea zgomotului etc; -fotogrammetrie, adic msurtori ale unor obiecte, fenomene imagini; -recunoaterea formelor (vederea artificial).

Inteligena artificial i prelucrearea imaginilor sunt domenii ce se ntreptrund. Un numr important din algoritmii performanti folositi la prelucrarea imaginilor utilizeaz metode i tehnici din domeniul inteligentei artificiale, cum ar fi: retele neuronale, logica fuzzy. Pe de alt parte, inteligenta artificial presupune proiectarea i construirea de sisteme capabile s realizeze functii ale intelectului uman: nvtarea prin experient, ntelegerea limbajului natural, utilizarea unui rationament pentru rezolvarea unor probleme sau luarea unor decizii. Toate aceste presupun ns i acumularea unei anume cantitti de informatie (baza de cunotinte, informatii din mediu etc.). Aceast informatie este preluat de sistemele inteligente prin sensori i creaz o imagine a mediului n momentul prelurii datelor (snapshot). Din imaginea astfel obtinut trebuie extrase informatiile utile.

1. Descrierea formatelor fiierelor de imagine1.1 Formatul DIB (Device Independent Bitmap)Acesta nu este un format de fiier imagine, ci este formatul n care pot fi pstrate imaginile n memorie de aplicatiile Windows. De obicei programele care doresc afiarea diferitelor formate de fiiere imagine recurg la acest format ca i format intermediar.DIB reprezint o harta de pixeli independent de dispozitiv. Structura blocului de memorie care conine un DIB este descris n figura 2.3.Header-ul de la nceputul formatului DIB conine informaii relevante necesare reconstruirii imaginii:Typedef struct tagBITMAPINFOHEADER{DWORD biSize;// Dimensiunea acestei structuriLONGbiWidth;// Latimea imaginii n pixeliLONG biHeight;// nalimea imaginii n pixeliWORDbiPlanes;// Numarul de plane (intotdeauna 1)WORDbiBitCount;// Biti per pixelDWORD biCompression;// Modul de compresie folosit:// BI_RGB, BI_RLE4 sau BI_RLE8DWORD biSizeImage;// Numrul de octei din imagineLONGbiXPelsPerMeter; // Rezoluia pe orizontalLONGbiYPelsPerMeter; // Rezoluia pe verticalDWORD biClrUsed;// Numrul de culori folositeDWORD biClrImportant; // Numrul de culori importante} BITMAPINFOHEADER;Paleta de culori este o colecie de intrri de tip RGBQUAD. Aceast structur este descris mai jos:typedef struct tagRGBQUAD { BYTE rgbBlue;// intensitate albastru BYTE rgbGreen;// intensitate verde BYTE rgbRed; // intensitate rosu BYTE rgbReserved;// iniializat la 0} RGBQUAD;Tabloul de pixeli poate fi memorat necomprimat sau folosind o metod de compresie de tip RLE (Run-Length Encoded) pe 4 sau pe 8 bii. Metoda de stocare a valorii pixelilor este specificat de valoarea cmpului biCompression din headerul formatului. Amnunte despre metoda de compresie RLE vor fi date la descrierea formatului PCX.1.2 Formatul BMPUn fiier imagine BMP este identic cu reprezezentarea n memorie a formatului DIB, cu un antet adaugat la formatul DIB. Coninutul antetului este:typedef struct tagBITMAPFILEHEADER {WORD bfType;// Tipul fiierului (= BM)DWORD bfSize;// Mrimea fiierului in octeiWORD bfReserved1;WORD bfReserved2;DWORD bfOffBits;// Offsetul de la care ncep datele // imaginii} BITMAPFILEHEADERDup antetul fiierului urmeaz o structur BITMAPINFOHEADER, paleta de culori (dac este folosit) i tabloul pixelilor din imagine (vezi formatul DIB).1.2.1 Citirea unei imagini BMPCitirea unei imagini BMP se face direct, deoarece formatul intern al datelor din ierarhia de clase Image este formatul DIB, iar un fiier imagine BMP conine un antet urmat de un DIB. Paii necesari pentru citirea imaginii BMP sunt urmtorii:1.Se citete antetul fiierului;2.Verific dac valoarea cmpului bfType este BM (indica faptul ca fiierul conine o imagine BMP);3.Determin numrul de octei rmai n fiier (acetia alctuiesc imaginea DIB stocat n fiier);4.Aloc memorie pentru imaginea DIB;5.Citete octeii din fiier n acest bloc de memorie.Afiarea imaginii se face prin apelul funciei membru specializate din clasa printe Image.1.2.2 Scrierea unei imagini BMPPentru a salva o imagine DIB ntr-un fiier BMP trebuie urmai paii descrii mai jos:1.Iniializarea cmpurilor din antetul fiierului (structur de tip BITMAPFILEHEADER);2.Scrierea antetului n fiier;3.Scrierea n fiier a ntregului coninut al formatului DIB.1.3 Formatul PCXFiierul PCX ncepe cu un antet de lungime 128 octei (va fi descris mai trziu) urmat de liniile de scanare ale imaginii codificate RLE.Fiecare linie de scanare este creat punnd mai nti liniile de scanare din fiecare plan de bii una dup cealalt. Apoi ntreaga linie este codificat folosind schema de codare dup lungime (RLE).1.3.1 Codificarea RLE (Run-Length Encoded)Regula de codificare / decodificare este foarte simpl:1.Se analizeaz pe rnd fiecare octet din zona de date a fiierului;2.Dac cei doi bii mai semnificativi ai unui octet au valoarea 1, ceilali ase bii mai puin semnificativi indic de cte ori trebuie repetat octetul care urmeaz.2.1.Se citete octetul urmtor i se pune n tabloul rezultat de attea ori de cte indic octetul anterior;3.Dac cei doi bii mai semnificativi nu au amndoi valoarea 1, octetul reprezint date din harta de pixeli.Exemplu:Octei din irul iniial (n Hexa)Octei din irul codificat (n Hexa)04 66 66 66 29 3F 3F A7 A7 A7 A7 A704 C3 66 29 C2 3F C5 A71.3.2 Antetul fiierului PCXAntetul fiierului PCX este de forma:struct PCXHeader { unsigned char manufacturer; unsigned char version; unsigned char encoding; unsigned char bits_per_pixel_per_plane; short xmin; short ymin; short xmax; short ymax; unsigned short hresolution; unsigned short vresolution; unsigned char colormap[48]; unsigned char reserved; unsigned char nplanes; unsigned short bytes_per_line; short palette_info; unsigned char filler[58]; // Header is 128 bytes };Semnificaia celor mai importante cmpuri din antet este urmtoarea: -unsigned char manufacturer este iniializat ntotdeauna cu valoarea 0AH pentru un fiier PCX valid. Acest cmp este folosit pentru a verifica dac un fiier conine o imagine n format PCX; -unsigned char version indic versiunea programului PC PainBrush care a creat fiierul imagine. Dac bits_per_pixel_per_plane * nplanes este 8 i version este mai mare dect 5, fiierul are o palet de culori cu 256 intrri (256x3=768 octei) adugat la sfritul imaginii; -unsigned char encoding trebuie s fie totdeauna 1 pentru a indica faptul c imaginea este codificat RLE; -unsigned char bits_per_pixel_per_plane este numrul de bii pentru fiecare pixel n fiecare plan de bii. De exemplu, o imagine cu 256 culori va avea un singur plan de bii cu 8 bii pentru fiecare pixel; -short xmin, xmax, ymin, ymax specific dimensiunile imaginii. Limea este (xmax xmin + 1), iar nlimea este (ymax ymin + 1); -unsigned char colormap[48] este o hart de culori (palet de culori) cu 16 intrri de cte un octet pentru fiecare component RGB. Aceast palet este valid dac valoarea produsului bits_per_pixel_per_plane * nplanes este mai mic sau egal cu 4; -unsigned char nplanes este numrul de plane de bii.1.3.3 Citirea unui fiier PCXPentru a realiza citirea unui fiier PCX trebuie executai urmtorii pai:1.Iniializarea antetului imaginii DIB;2.Iniializarea paletei de culori din formatul DIB;3.Pentru fiecare linie de scanare se citete pe rnd fiecare octet i se realizeaz scierea n bufferul destinaie innd cont de regula de decodificare RLE4.Datorit modului n care este proiectat ierarhia de clase Image trebuie ca imaginea PCX s fie convertit din plane de bii n format compact de tip DIB. Pentru aceasta trebuie combinai biii corespunztori unui pixel din fiecare plan de bii PCX pentru a obine un format compact care s reprezinte valoarea pixelului n format DIB:Creaz o masc pentru cei mai semnificativi bii_pe_pixel_pe_plan iniializai la valoarea 1;Repet (pentru toate liniile din imaginea PCX){Repet (pentru toi octeii din fiecare plan){Repet (de (8 / bii_pe_pixel_pe_plan) ori){Repet (pentru toate planele){mpacheteaz biii din fiecare plan ntr-un octet;Dac sunt completai toi cei 8 bii, copiaz octetul n locaia adecvat din formatul DIB;}Deplaseaz masca la dreapta cu bii_pe_pixel_pe_plan bii;}}}Afiarea imaginii se face prin apelul funciei membru specializat n afiarea formatului DIB din clasa printe Image.1.4 Formatul GIFUn fiier GIF este organizat pe blocuri i pot exista mai multe imagini ntr-un acelai fiier. Structura general a unui fiier GIF este urmtoarea:1.Antet de 6 octei avnd urmtoarea structur:struct GIFHeader{char signature[3];// trebuie s conin GIFchar version[3];// 87a sau 89a}2.Descriptorul logic de ecran, care ofer informaii despre imagine, avnd structura urmtoare:Struct LogicalScreenDescriptor{unsigned shortwidth;unsigned shortheight;unsigned char flags;unsigned char bgcolor;unsigned char aspect_ratio;}Dac cel mai semnificativ bit al cmpului flags are valoarea 1, fiierul GIF include o tabel de culori. Aceast tabel de culori este denumit tabel global de culori, deoarece se aplic tuturor imaginilor coninute n fiierul GIF.3.Tabela global de culori care este un tablou cu valori RGB.4.Blocuri de informaie. Primul octet al fiecrui bloc identific tipul blocului. Unul dintre cele mai importante blocuri este blocul descriptor al imaginii care ncepe cu o virgul (2CH) i conine informaii despre imaginea care urmeaz. Structura care reprezint informaiile coninute ntr-un bloc descriptor de imagine este:Struct ImageInfo{unsigned shortleft;// Pozitia imaginiiunsigned shorttop;// (adesea este ignorat)unsigned char width;// Mrimea imaginiiunsigned char height;unsigned char flags;// Indic prezena unei // tabele de culori}Dac cel mai semnificativ bit al cmpului flags are valoarea 1, urmeaz o tabel de culori. Aceast tabel de culori este denumit tabel local de culori.Dup tabela de culori local urmeaz un singur octet al crui valoare indic numrul de bii necesar pentru a reprezenta valoarea curent a unui pixel din imagine. Acest octet determin i dimensiunea iniial a codului folosit de algoritmul de compresie LZW.Urmeaz apoi valorile pixelilor din imagine, stocate ntr-o secven de blocuri de cel mult 255 octei n fiecare bloc. Aceste valori sunt stocate ntr-un format comprimat codificat cu ajutorul algoritmului LZW cu coduri de lungime variabil.5.Dac fiierul GIF conine mai multe imagini, secvena bloc descriptor, blocuri cu date ale imaginii se repet.6.Bloc final care conine un singur octet cu valoarea 3BH i marcheaz sfritul fluxului de date GIF n fiier.Pe lng blocurile de imagine exist i un mare numr de blocuri GIF de extensie. Nu insistm aici asupra acestor blocuri.1.5 Formatul TIFF (Tagged Image Format File)Formatul TIFF este cel mai flexibil dintre cele discutate aici. Acest format de fiiere imagine poate stoca imagini monocrome, cu nuane de gri sau color, suportnd diferite tipuri de compresie a datelor.Flexibilitatea provine din folosirea unui set foarte extins de cmpuri de descriere i de date. Aceasta duce ns la apariia unei probleme majore: foarte puine dintre cititoarele de fiiere TIFF au capacitatea de a decodifica toate cmpurile unui fiier TIFF. De aceea se ntmpl foarte des ca un fiier TIFF creat de o anumit aplicaie s nu poat fi ncrcat ntr-o alta. Cauza principal a acestei probleme este faptul c standardul TIFF permite utilizarea unor formate particulare pentru cmpurile de date, i muli productori exploateaz aceast facilitate.Totui TIFF este un format utilizat pe o scar foarte larg, mai ales datorit faptului c toate programele care nsoesc scannerele scannerele au posibilitatea de a salva imagini n format TIFF.

ConcluziiOdat cu importantele dezvoltri tehnologice din ultimii ani (tehnologie electronic, informatic i a comunicaiilor), dispozitivele de achiziie a imaginilor i sistemele de calcul de uz general au devenit tot mai rspndite i mai la ndemn. n mod firesc, dorina de a dispune de sisteme autonome nzestrate cu vedere artificial, care s realizeze n mod independent diferite sarcini specifice a revenit n actualitate, limitat ns la obiectivemai simple i mai pragmatice fa de declaraiile oarecum bombastice ale deceniului trecut (Prelucrarea imaginilor permite dezvoltarea mainii totale de vedere artificial, capabil s reproduc fuunciile vizuale ale oricrei vieuitoare.).

Bibliografie1. Introducere: Elemente fundamentale de prelucrare a imaginilor, C. Vertan2. Prelucrarea si Analiza Imaginilor, Ed. Printech, Bucuresti, 2001, C. Vertan, M. Ciuc, M. Zamfir 3. Sisteme de prelucrri grafice, V. Donis

14